[前端]Web前端-移动端开发知识点及常用适配方案

本文详细介绍了Web前端移动端开发中常用的像素单位,包括Pixel、百分比、em、rem和vw/vh,并探讨了视口、设备像素与CSS像素的关系以及解决它们不一致的问题。此外,文章还提供了多种移动端适配方案,如媒体查询、rem和JS解决方案,并讨论了设备像素比DPR的获取和应用。
摘要由CSDN通过智能技术生成

一、前端开发常用单位

1.像素(Pixel)

在前端开发中视口的水平方向和垂直方向是由很多小方格组成的,一个小方格就是一个像素,
不会随着视口大小的变化而变化,像素是一个固定的单位(绝对单位);

2.百分比

百分比是前端开发中的一个动态(相对)单位,永远都是以当前元素的父元素作为参考进行计算 子元素高宽度都是参考父元素高宽计算的
子元素padding/margin无论是水平还是垂直方向都是参考父元素宽度计算的
不能用百分比设置border

3.em

em是前端开发中的一个动态单位,是一个相对于元素字体大小的单位. 例如:font-size:12px; 那么1em=12px
当前元素设置了字体大小,那么就相对于当前元素的字体大小 当前元素没有设置字体大小,那么就相对于第一个设置字体大小的祖先元素的字体大小
如果当前元素和所有祖先元素都没有设置大小,那么就相当于浏览器默认的字体大小(1em=16px)

4.rem

rem就是root em,和em一样是前端开发中的一个动态单位,rem与em的区别在于rem是一个相对于根元素字体大小的单位,例如根元素(html)
font-size:12px;那么1rem=12px 除了根元素以外,其它祖先元素的字体大小不会影响rem大小
如果根元素没有设置字体大小,那么1rem=16px;

5.vw(Viewport Width)和vh(Viewport Height)

vw和vh是一个前端开发中的动态单位,是一个相对于网页视口的单位 系统会将视口的宽度和高度分为100份,1vw就占视口宽度的百分之一
vw、vh和百分比不同的是,百分比永远都是以父元素作为参考,vw和vh永远都以视口作为参考
vmin:vw和vh中较小那个

vmax:vw和vh中较大那个 使用场景:保证移动开发中屏幕旋转后尺寸不变


二、视口

视口简单理解就是可视区域大小 在PC端,视口大小就是浏览器窗口可视区域大小
在移动端,视口大小并不等于窗口大小,移动端视口宽度被人为定义成了980

为什么是980?
因为过去网页的版心都是980
乔布斯为了能够让网页在移动端完美的显示,所以将ios手机视口大小定义为980
后来谷歌也将Android手机定义成了980

移动端自动将视口宽度设置为980带来的问题
虽然移动端自动将视口宽度设置为980之后让我们可以完美地看到整个网页
但是由于移动端的物理尺寸(设备宽度)是远远小于视口宽度的
所以为了能够在较小范围内看到视口中所有内容,那么就必须将内容缩小

如何保证在移动端不自动缩放网页的尺寸

通过meta设置的窗口大小 width=device-width
设置视口宽度等于设备的宽度 initial-scale=1.0 初始缩放比例,1不缩放 maximum-scale:允许用户缩放到最大比例
minimum-scale:允许用户缩放到的最小比例 user-scalable:用户是否可以手动缩放比例


三、设备像素和CSS像素

1.什么是设备像素和CSS像素?

1.1设备像素又称为物理像素, 是"物理屏幕"上真实存在的发光点,只有屏幕一经出厂就固定不会改变
1.2CSS像素又称为逻辑像素,是编程世界中虚拟的东西, 我们通过代码设置的像素都是逻辑像素
例如: iPhone3G/iPhone3GS 3.5英寸/ 逻辑像素320480 / 设备像素320480
iPhone4/4S 3.5英寸/ 逻辑像素320480 / 设备像素640960
也就是说CSS像素和设备像素在有的时候是不一样的

什么时候不一样?为什么不一样?

在PC端,1个CSS像素往往都是对应着电脑屏幕的1个物理像素, 所以我们无需关心PC端的CSS像素和设备像素

在手机端,最开始其实1个CSS个像素也是对应着手机屏幕的1个物理像素, 但是后来一个改变世界的男人(乔布斯)改变了这一切~ 从iPhone4开始,苹果公司推出了所谓的retina视网膜屏幕。 iPhone4的屏幕尺寸却没有变化,但是像素点却多了一倍
这就导致了在1个CSS个像素等于1个物理像素的手机上, 我们设置1个CSS像素只会占用1个物理像素
而在1个CSS个像素不等于1个物理像素的手机上, 我们设置1个CSS像素就会占用2个物理像素
所以仔细观察你会发现同样是1像素但是在retina视网膜屏幕的手机上会粗一些

2.如何解决设备像素和CSS像素不一样的问题?

    如果设备像素和CSS像素一样, 那么无需处理不会带来任何负面影响
    如果设备像素是CSS像素的2倍, 那么我们只需将CSS像素缩小一半即可
    但是有时候设备像素可能是CSS像素的3倍/4倍
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值