title: 24-关于flexible的探讨
date: 2018-05-03 10:05:30
categories: 前端-01-切图CSS
tags: 前端-01-切图CSS
首页,先给出原文出处,点击查看
最近看移动端1px的问题,由此联想到项目中使用的rem布局方案,先说说引入手淘flexible要注意的地方。
1. 加不加 viewport 标签
1.1介绍
1 | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"> |
对于这个问题,大漠(文章的作者)这样说,
查看原图
加不加viewport,在iPhone6下分别看下他们的情况
1 | <html data-dpr="2" style="font-size: 75px;"><head> |
如果加了viewport 标签
1 | <html data-dpr="1" style="font-size: 37.5px;"> |
二者效果我感觉是一致的,因为不加viewport标签下,initial-scale=0.5(缩放0.5),会帮你还原跟<html data-dpr="1" style="font-size: 37.5px;">
一样。
文章作者意思好像是为了做到高清。
1.2 ios动态设置dpr带来的问题
由于ios动态设置了dpr,带来了initial-scale的变化,这意味着,如果我们想在css里使用1
div{width:200px;height:200px}
在苹果下会缩放,
我们需要对不同dpr下做适配
1 | div { |
作者给了一个字体设置的sass混合宏,
1 | @mixin font-dpr($font-size){ |
1.3分割线
为了避免这样的匹配,==感觉还是加个viewport吧==,不用去匹配[dpr=2][dpr=3],而且必企的项目里有加,也没产生多大影响,@2x的图片也可以做到高清。==也不用为后面的1px分别匹配。==
注:切图也可以在ps里精准量测,然后转rem,上次估计是效果图原因。
2. 移动端 1px 问题
移动端1px变粗的原因
viewport的设置和屏幕物理分辨率是按比例而不是相同的. 移动端window对象有个devicePixelRatio属性, 它表示设备物理像素和css像素的比例, 在retina屏的iphone手机上, 这个值为2或3, css里写的1px长度映射到物理像素上就有2px或3px那么长.
也就是罪魁祸首就是设备像素比(window.devicePixelRatio),即:
设备上物理像素和设备独立像素(device-independent pixels (dips))的比例。
例子可看必企底部栏border-top
我写了个@mixin,仅供参考
1 | @mixin onepx($position: bottom, $color: #666, $radius: 0) { |
后话:目前项目还是使用scss为主,如果等以后前端项目成熟了,再考虑换post-css,前端实在折腾~~