解决移动端一像素问题的Vue指令

栏目: CSS · 发布时间: 7年前

内容简介:最近公司项目要解决一像素问题,自己琢磨了一阵子并且网上搜索了一堆博客,总结出最好的办法应该是通过css的项目地址:欢迎各位取用。如有错误的地方,也欢迎指正。

最近公司项目要解决一像素问题,自己琢磨了一阵子并且网上搜索了一堆博客,总结出最好的办法应该是通过css的 transform scale 缩放1px的内容来模拟设备上1px的效果了。但是这个方法有太多局限。然后秉着css解决不了的问题就用js来解决的原则,然后结合vue的自定义指令,手撸了一个一像素vue自定义指令。打算扔到giuhub留存。顺便总结一下遇到的问题。

项目地址: https://github.com/HelloWorld20/onepx

欢迎各位取用。如有错误的地方,也欢迎指正。

原因

众所周知,自从iPhone 4带来了Retina display后,移动端开始引入了一个叫 设备像素比(devicePixelRatio) 的东西。

另一方面,如果给一个html标签写一个小于1px(H5)的border;IOS可以正常渲染,但是安卓设备不渲染。所以是不能用正常的方法来让安卓设备渲染一个1物理像素的线。

戳这里看DEMO ;

当然用移动端才能看到效果:

解决移动端一像素问题的Vue指令

网上的解决方案

网上搜能搜出很多解决方案,这篇文章基本汇总了网上的所有方案。然后结论是: 使用css的伪元素来渲染一个1px(H5)的div,并且使用CSS3的scale来缩放dpr倍,从而渲染一个1px物理像素的线。

然而理论毕竟理论,用到项目中的时候还是遇到了很多问题

1. 如果两个伪元素都被占用,则无法实现

网上的方案都是用CSS伪元素来实现的,而伪元素只有before和after两个,所以要是实际开发中中占用了before、after,则无法用CSS来实现模拟一像素。

2. 必须手动设置圆角

圆角是最头疼的问题。用CSS伪元素虽然可以做到圆角,但是CSS伪元素只能通过 border-radius: inherit 得到和父元素一样值的圆角大小,缩放之后就不一样了,且css无法计算缩放后还和父元素一样的圆角。而且js也不能操作CSS伪元素,所以不得不手动计算dpr,然后给CSS伪元素设置圆角。

3. -webkit-device-pixel-ratio 不是标准方法

解决移动端一像素问题的Vue指令

CSS中判断设备设备像素比的方法是 -webkit-device-pixel-ratio ,不是标准的方法,所以用起来心慌慌。而JS的 window.devicePixelRatio 已经全面支持,顶多也就一个undefined。完全不用担心兼容性问题。

4. 部分标签不能设置伪元素

type为text的input标签就无法在标签内插入的dom(虽然控制台里显示已经被插入,但是不会被渲染出来),所以伪元素也无法给其加上模拟的1像素。

解决移动端一像素问题的Vue指令

更好的方案

本着CSS解决不了的问题就用JS来解决的思想。再结合Vue提供的自定义指令,可以在想要加1像素的html标签上加上一个指令,js能通过Vue的自定义指令拿到对应的DOM,那么就一切皆有可能。

最终实现了一个Vue指令,只需要给对应的HTML标签加上一条指令就行。其他的Vue指令自动处理。并且这个指令在我们项目中运行过一段时间,基本是可靠的。

要注意的地方

<input type="text" />

以上所述就是小编给大家介绍的《解决移动端一像素问题的Vue指令》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构、算法与应用

数据结构、算法与应用

(美)Sartaj Sahni / 汪诗林、孙晓东、等 / 机械工业出版社 / 2000-01 / 49.00

本书是关于计算机科学与工程领域的基础性研究科目之一――数据结构与算法的专著。 本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构与算法的继续学习和研究奠定了一个坚实的基础。更为可贵的是,本书不仅仅介绍了理论知识,还提供了50多个应用实例及600多道练习题。 本书......一起来看看 《数据结构、算法与应用》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具