uniapp加载svg小圆圈在手机上和浏览器上显示的不一样

uniapp加载svg小圆圈在手机上和浏览器上显示的不一样,第1张

你好,你是想问uniapp加载svg小圆圈在手机上和电脑浏览器上显示的为什么不一样吗?uniapp加载svg小圆圈在手机上和电脑浏览器上显示的不一样是因为页面配置代码的不同导致,手机和电脑的显示不同所以页面配置代码也不一样,后台代码定义组件接口就不同。uniapp是一个使用Vuejs开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web响应式、以及各种小程序,比如微信、支付宝、百度、头条、QQ、钉钉、淘宝、快应用等多个平台。

可以通过获取g标签的第一个子节点,用它的x,y坐标。或者把g标签换成svg标签,这样可以获取x,y的坐标值。

<svg >

<svg id="g1" x=20 y=20>

<rect id="1"></rect>

<rect id="2"></rect>

<rect id="3"></rect>

</svg>

<svg >

documentgetElementById("g1")xanimValvalue;

最近因为工作需要做了点HTML5可视化研究如下

为什么没有字体颜色作为一个设计师很不爽

第一次发文有写错的地方还请诸位高手多多包涵

设想,要在页面中生成大量的简单图形,比如10万个方块,并对它们进行拖拽 *** 作。

基本思路有三种方式,传统Div,Svg,与Canvas。

为了加拖拽,暂时没有用canvas。

因为canvas无法生成dom节点,不存在id这种属性,需要通过判断鼠标位置来获取元素再进行 *** 作。虽然写个isMouseinObj()的function也不是不行,但总觉得以后针对某对象单独处理会夜长梦多(主要还是懒)。。。不过从生成图形角度讲,canvas理论上是最快的。

因为贪生怕死担心Dom过多死机,准备先分区生成方块,于是:

一个简图,整体划分如下,设两个input框的值分别为m, n,每个蓝块包括n个绿块。点击每个蓝块可在下方生成n个绿块。

点击GenAll可一次性生成mn个绿块。点击Drag可对绿块进行拖拽。

模拟开始。

首先是用div模拟方块。因为比较熟悉写起来也简单。

Div的拖拽方式可以分成两种。

Jquery-ui的draggble还有很多其他参数,请参考api文档。

现在假定一种新情形:绿色方块只能拖拽到虚线框之内。

默认情况下,Html元素均不可拖拽,所以需要设置拖拽元素的draggable属性为true。同时,默认无法将元素放置到其他元素中,所以需要eventpreventDefault()设置允许放置。

本例中,为class为abox的绿方块添加draggable。

为class为wrap的虚线框添加preventDefault。

之后通过dataTransfer传输数据,实现box的移动。

由于Svg也是直接在Html中生成Dom节点,理论上Div所能实现的功能它都可以实现,并且绘图效果更佳。

然后生成Svg元素,并设置其属性。

循环生成Svg方块并添加拖拽属性。

但这种方式有个问题,就是——慢。当生成仅10000个方块时,效率便低的不可估量。

然而Svg无法应用Html5原生的Drag and Drop事件。

相比于引用插件,这样的效率提高了不少。

从结果上看,在数量少时,针对方块这种简单图形的简单 *** 作Div和Svg均可胜任。然而设置了总共生成100000个方块,发现单从生成的角度,Svg的渲染用时大约是Div的1/2(这里指Dom中直接绘制Svg而非通过js插件绘制Svg)。

加上拖拽功能后,用Html5原生拖放事件的Div,及用鼠标事件的Svg,明显快快快快于应用js插件拖放的效率。于是乎插件虽然强大但对于大量节点的处理实在过于缓慢。

于是在图形化上还是应用Svg更舒畅一些。

但有一个尚未解决的问题。

应用鼠标事件拖动Svg,当鼠标移动过快时,mousemove事件无法触发,导致移动效果不能实现。粗略查了下似乎可以添加透明背景层接收所有触发事件,不过还没有深入研究。

这篇就到此吧。等解决了mousemove的bug再更新后续。

(´・ω・`)

适配可以说是Android的老大难问题了,Android厂商众多,设备碎片化严重大屏小屏,全面屏,异形屏数不胜数

以下是10分钟内能找到的数据统计

友盟+,全域罗盘

这些还仅是占比较多的设备,并不全面

而且同样的屏幕尺寸也存在不同的分辨率

按照友盟的粗劣统计,就算主流10种屏幕尺寸,加上每种尺寸又有不同的宽高比和分辨率

取10种尺寸,平局每种尺寸有2种宽高比,又有3种分辨率

那么就需要适配10 2 3=60种

但是实际上需要适配的主流手机设备至少也要超过100种吧(单指国内范围)

如果你已经解决了适配的问题,那么SVG仍然能带给你一些方便

VG是指可伸缩矢量图形 (Scalable Vector Graphics),它不同于传统的位图,不是通过存储图像中每一点的像素值来保存与使用图形,而是通过 XML 文件来定义一个图形,通过一些特定的语法和规则来绘制出我们所需的图像——同样是使用一张,SVG 的方式是事先定义好怎么去画这个图,然后等要用的时候再把它去画出来,而使用传统的位图的话就是已经有了画出来的图,然后要用的时候直接把画好的图拿出来用。

创建一个xml文件在drawable中

SVG使用了 </vector> 标签,内容的绘制使用了 <path/> 标签

这里可以生成两种方式,

这里有很多很多图案,甚至还有一些Ios的预设图标

这样一个看似复杂的就搞定了

其实AS40中新创建的项目中的2个图标也都是用SVG生成的(可能是我默认minSDK是23的原因,没细究)

ic_launcher_background 中写多个path标签的方式能让绘制内容更有阅读性,更易后期修改维护,但是点击标签右边是看不到对应哪一个位置的尽量给每个path再加上注释就方便日后读写了

SVG本身就是xml格式文本,保存SVG,就只要保存这些文本就可以了

服务器直接保存xxxsvg,和一样(xxxjpg)

把SVG的xml文本信息,保存到数据库就可以了,这个保存文章一样的

以上就是关于uniapp加载svg小圆圈在手机上和浏览器上显示的不一样全部的内容,包括:uniapp加载svg小圆圈在手机上和浏览器上显示的不一样、SVG中如何获取元素的坐标、Div & Svg可视化探索笔记等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9824567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存