px rem em rpx 区别 用法

news/2024/11/9 3:20:48/

任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

所以我们在写CSS的时候,需要注意两点:

  1. body选择器中声明Font-size=62.5%;
  2. 将你的原来的px数值除以10,然后换上em作为单位;
  3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。
    也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。

rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。下面就是一个例子:
p {font-size:14px; font-size:.875rem;}

px 与 rem 的选择?
对于只需要适配少部分手机设备,且分辨率对页面影响不大的,使用px即可 。
对于需要适配各种移动设备,使用rem,例如只需要适配iPhone和iPad等分辨率差别比较挺大的设备。

rpx
rpx 是微信小程序解决自适应屏幕尺寸的尺寸单位。微信小程序规定屏幕的宽度为750rpx。
无论是在iPhone6上面还是其他机型上面都是750rpx的屏幕宽度,拿iPhone6来讲,屏幕宽度为375px,把它分为750rpx后, 1rpx = 0.5px。
微信小程序同时也支持rem尺寸单位, rem 规定屏幕的宽度为20rem, 所以 1rem = (750/20)rpx = 37.5 rpx

css中1px并不等于设备的1px
一般分为物理像素和独立像素
css 1px 为独立像素 设备1px为物理像素
devicePixelRatio = 物理像素/ 独立像素
如果devicePixelRatio =2 表示 1个独立像素等于2个物理像素
devicePixelRatio不是固定的,他会随着屏幕的分辨率改变而改变

一般情况下:屏幕的分辨率越大 代表css中的1px的物理像素就越多,devicePixelRatio的值也会增大

浏览器默认的viewport叫做: layout viewport
可以通过document.documentElement.clientWidth 来获取

浏览器可视区域的大小:visual viewport
可以通过window.innerWidth

适配移动设备的viewport:ideal viewport
这个移动设备的固定的尺寸

设备上的viewport分为layout viewport 、 visual viewport 和 ideal viewport三类,其中的 ideal viewport 是最适合移动设备的viewport,ideal viewport的宽度等于移动设备的屏幕宽度,只要在css中把某一元素的宽度设为ideal viewport的宽度(单位用px),那么这个元素的宽度就是设备屏幕的宽度了,也就是宽度为100%的效果。ideal viewport 的意义在于,无论在何种分辨率的屏幕下,那些针对ideal viewport 而设计的网站,不需要用户手动缩放,也不需要出现横向滚动条,都可以完美的呈现给用户。

利用meta标签对viewprot进行控制:

通常用到的mate标签:


http://www.ppmy.cn/news/85138.html

相关文章

spring练习1

1、练习网站案例 1、建好相应的java类 package spring;public class Player {public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getPosit…

Jmeter连接不同类型数据库语法

Jmeter连接不同类型数据库语法 添加:配置原件->JDBC Connection Configuration variable name for created pool:自定义一个线程池变量名database Connection Configuration database URL: 填写数据库ip、端口、dbname等,但是不同数据库…

分享50个AI绘画prompt的关键词,让你的AI绘画更贴近想法

我们在使用AI绘画工具时,最关键的就是prompt,但是我们不能总是拾人牙慧,总是用别人写出的现成的prompt,那样的话,最终画出来的画,也是别人画出来的,并不能完全生成自己想要的效果。所以,我们需要学习编写pr…

20道python面试题,学python的你,快看一下,你会多少

请问Python中列表(list)和元组(tuple)的区别是什么? 答:列表可变(mutable),而元组不可变(immutable)。这意味着创建元组后不能更改其值,而列表可以添加、删除和修改元素。PEP 8是什么? 答:PEP 8是一组Python编程风格和最佳实践指南。其覆盖的主题包括命名规范、空…

数据库+Python----------Python操作MySQL

目录 1.在Python中安装pymysql 2.创建数据 1.连接数据库,创建一个数据库对象 2.开启游标功能,创建游标对象 3.发送指令 获取查询结果集的方法 4.实操 5.注意 不可以!!! 正确写法 6.用户输入数据 3.查询数…

kali安装ARL灯塔过程

(一)安装docker环境 1、检查是否存在docker环境 docker 2、如果没有docker,就先安装docker apt install docker.io 出现 unable to locate package docker.io这些,这是因为没有跟新 输入跟新命令: apt-get update 在…

Hotbit交易平台停运,百万用户待清退,币圈危机再度蔓延

“币圈”的危机似乎还没有走到尽头。5月22日,加密货币交易平台Hotbit发文宣布,决定从世界标准时间当日4:00停止所有CEX(中心化交易所)操作,希望所有用户在6月21日4:00之前提取剩余资产。据悉,该平台在其任期…

Netty服务如何使用Nginx代理转发请求并获得原始IP

Nginx配置 Nginx启用stream模块,示例如下: stream {upstream netty{server remote:8080;}server {listen 8080;proxy_pass netty;proxy_protocol on;} }示例,代理远端8080的netty服务。 注意,获得原始客户端的IP关…