微信小程序(适配小结、移动端1px与选择器权重)

  • Post author:
  • Post category:小程序


WXSS优先级与CSS类似,权重如下图所示

在这里插入图片描述

权重越高越优先。

权重案列:

在这里插入图片描述

回顾(关键词):

在这里插入图片描述


物理像素dp


(1)物理像素(physical pixel)

物理像素又被称为设备像素(device pixel简称dp)他是显示设备中一个最微小的物理部件。

一个设备的物理像素是

固定不变

的。

在这里插入图片描述


屏幕像素密度ppi


屏幕像素密度ppi(pixel per inch)

屏幕像素密度(ppi)是指一个设备表面上存在的像素数量,它通常以每英寸有多少像素来计算。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高。

单位:dpi(Dots Per Inch,每英寸点数)

计算:屏幕像素密度(ppi) = 对角线分辨率 / 对角线尺寸

在移动端web开发中,UI设计稿中设置边框为1像素,前端在开发过程中如果出现border:1px,测试会发现在某些机型上,1px会比较粗,即是

较经典的 移动端1px像素问题。


解决1px问题的方案有很多种,接下来依次对比分析下。

①媒体查询

②设置 border-image

③利用box-shadow阴影

④transform: scale(0.5)

⑤媒体查询 + transfrom

(1) 媒体查询

利用设备像素比缩放,设置小数像素;css与js写法任选其一

在这里插入图片描述

优点:简单,好理解

缺点:兼容性差,目前之余IOS8+才支持,在IOS7及其以下、安卓系统都是显示0px。

(2)设置 border-image 方案

在使用border-image时,将border设计为物理1px

在这里插入图片描述

在这里插入图片描述

border-width:指定边框的宽度,可以设定四个值,分别为上右下左border-width: top right bottom left。

(3)利用box-shadow阴影也可以实现

在这里插入图片描述

box-shadow属性的用法:box-shadow: h-shadow v-shadow [blur] [spread] [color] [inset]

参数分别表示: 水平阴影位置,垂直阴影位置,模糊距离, 阴影尺寸,阴影颜色,将外部阴影改为内部阴影,后四个可选。

优点:没有圆角问题

缺点:颜色不好控制


transform方案


(4)transform: scale(0.5) 方案 – 推荐: 很灵活

核心思想是使用transform的scale来整体缩放,如果你想画一条1px的线,就可以直接用

在这里插入图片描述

理论上在dpr为2时就是scaleY(0.5),在dpr为3时就是scaleY(0.333),但是通常并没有针对其他dpr的做特殊处理。

因为在iPhone6(dpr=2)和iPhone6 Plus(dpr=3)中看起来差别不大。


如果你想给一个元素加一个1px的边框可以利用到伪元素,在这个方案下边框加圆角也很容易实现


在这里插入图片描述

优点:可以实现圆角,京东就是这么实现的


媒体查询 + transfrom


(5)媒体查询 + transfrom 对方案1的优化

在这里插入图片描述



版权声明:本文为woshierdanya原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。