css解决方案

移动端的适配布局方案

2021-05-13  本文已影响0人  听书先生

1、为什么要进行移动端适配?

现在主流的开发思路

2、相关概念

屏幕尺寸

屏幕对角线的长度,单位是英寸
1英寸 = 2.54厘米 6*2.54 = 15.24厘米

屏幕分辨率

在横纵方向上的像素点,单位是px, 1px = 1个像素点(这里的1像素指的是物理设备的1个像素点)
iphone 6 的分辨率是1334750像素,一般是纵向像素横向像素来表示一个手机的分辨率

屏幕像素密度 / 像素密度 / 屏幕密度

屏幕上每英寸可以显示的像素点数量,单位是ppi
屏幕像素密度与屏幕分辨率有关

设备像素 / 物理像素

物理像素: 指的设备的固定像素(1334*750)
设备像素: 可以看成计算机坐标中的一个点

css像素
css像素与物理像素的关系
设备独立像素
位图像素

一个位图像素是栅格图像(png,jpg,gif等)最小的数据单元,至少一个位图像素对应1个物理像素,图片才能完美清晰的展示

像素比(dpr)

devicePixelRatio指的是物理像素和设备独立像素的比,即1独立像素由多少个物理像素渲染
window.devicePixelRatio可查看当前显示设备的物理像素分辨率与CSS像素分辨率的比率
设备像素比devicePixelRatio = 物理像素 / 独立像素

像素问题

因为不同设备具有不同的dpr+所代表的设备像素不同,所以在有些设备上看到的粗,有些设备看到的细,如何解决:像素边框问题

方法一: 通过媒体查询,查询设备的dpr,根据dpr设置不同的宽度大小
#box {
    height: 200px;
    border-bottom: 1px solid red;
}
@media screen and ( -webkit-min-device-pixel-ratio: 2) {
    #box {
        border-bottom: 0.5px solid #999;
        }
    }
@media screen and ( -webkit-min-device-pixel-ratio: 3) {
    #box {
        border-bottom: 0.3333333px solid blue;
        }
}

缺点:小数像素目前兼容性较差,一些以前的版本可能不支持,理论上最小的单位是 1px , 所以会出现有的设备写0.5px无效(没有边框)的情况

方法二: 借助伪元素缩放处理
.button:after {
    content: '';
    display: block;
    height: 0;
    border-top: #999 solid 1px;
    width: 100%;
    position: absolute;
    top: 0;
    right: 0;
    transform: scaleY(0.5);  /*将1px的线条缩小为原来的50%*/
}

缺点:不是所有的设备的dpr都是2 所以固定缩放0.5也会有问题

方法三:借助媒体查询和伪元素缩放来解决

视口

定义:在移动端viewport视口就是浏览器显示页面内容的屏幕区域,在viewport中有两种视口,分别表示为:visual viewport(可视视口)和layout viewport(布局视口)
两个视口是叠加在一起
visual viewport 固定大小跟屏幕大小相同,可以通过window.innerWidth来获取
视口默认的宽度是980px,我们可以用meta标签来调视口看度,此时视口宽度被束缚为320-480之间
现代网页需要将layout viewport 设置成跟visual viewport相同的大小,方便网页制作

视口的设置:

通过<meta>标签进行设置,name属性指定viewport的值,content属性进行视口配置

取值 含义
width 设置layout view的宽度为特定值,device-width表示设备的宽度
height 设置layout view 的宽度为特定值,一般不设置
initial-scale 设置页面初始缩放
minimum-scale 设置页面最小缩放
maximum-scale 设置页面最大缩放
user-scalable 设置页面能否缩放
上一篇 下一篇

猜你喜欢

热点阅读