-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[前端]移动端Retina视网膜屏1px解决方案(H5) #22
Labels
前端相关
前端相关
Comments
cookiepool
changed the title
[前端]移动端Retina视网膜屏1px解决方案(H5端)
[前端]移动端Retina视网膜屏1px解决方案(H5)
Nov 15, 2019
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
开始
在这里开始前先记录几个概念
1、直接写0.5px(限iOS 8及以上设备)
没错,iOS 8以上直接写0.5px可以识别,安卓设备太杂,目前我在我的S9上测试不行,还是按照1px来显示的。
2、伪类 + transform 的实现
先说方案的原理:把原先元素的 border 去掉,然后利用
::before
或者::after
伪元素重做 border ,并 transform 的 scale 缩小到原来的一半,原先的元素相对定位,新做的 border 绝对定位。这个方案是我查找的的许多方案里面比较简单的方案了,这里放在首位,而且这个方案在四条边框都存在的情况下支撑圆角,首先这儿先贴出完整的演示代码(这里我先贴只有元素底部设置边框的情况):
上面的代码演示了元素底部设置边框,接下来我们修改代码,来分别展示上,左,右的设置方法。
当你需要设置圆角是(四个边框的情况),在
.inner
和.inner::after
里面都跟上border-radius
即可(注意dpr为2时.inner::after
里面的border-radius
的值为.inner
里面两倍才行,其它dpr值的情况暂未测试)。2.1 使用媒体查询实现多设备适配
这里我先贴出阿里的一套方案:
接下来我贴出自己写的一个,首先是媒体查询部分,这部分可以放到项目的公共部分:
然后是你要设置边框的元素部分的CSS:
HTML部分:
3、手淘的方案(这儿直接给链接,这个方案是五年前的了)
4、另一种rem + viewport的方案(等比例放大)
先放代码:
然后我说一下我测试的结果,目前手头只有S9和iPhone 7(系统为iOS 11),S9的浏览器用的UC,测试我发现,上面这个方案在S9上很完美,看不出异常,然后在IP7上测试四边都设置边框的情况下,左右边框没起到作用,它是按照2px显示的,上下边框没问题,是按1px显示,当我单独设置一边的边框时,显示没有问题(补充:我发现当我左边的不设置边框或者不设置左右边框时,右边的四个边框都显示正常,无解-_-)。下面我贴几张图:
S9
IP7
-IP7-左边不设置边框
参考资料
7种方法解决移动端Retina屏幕1px边框问题
移动端 Retina屏 各大主流网站1px的解决方案
css中引入svg来兼容部分安卓机显示0.5px边框的示例
The text was updated successfully, but these errors were encountered: