px、em、rem的区别

px、em、rem的区别

1、px

是网页布局的相对长度单位。像素px是相对于显示器屏幕分辨率而言的。

使用px设置的尺寸在不同的显示屏中尺寸不同,跟像素密度有关系; 如果缩放会有所影响

px特点
    1. IE无法调整那些使用px作为单位的字体大小;
    2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位;
    3. Firefox能够调整px和em,rem,但是96%以上的中国网民使用IE浏览器(或内核)。


2、em

是一种相对长度单位,参照当前元素的字号,如果没有设置,
参照父容器或者当前浏览器的默认的字号;盒子尺寸因父盒子改变而改变的
    
  em特点
    1. em的值并不是固定的;
    2. em会继承父级元素的字体大小。
 

3、rem

是css3新增的一种相对长度单位,但只参照根元素html的字号
     (需申明html{font-size:值;});
盒子尺寸因父盒子改变或者字号改变而不可变,只针对html改变,
相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身

<body>
    <!-- px相对长度单位,是参照显示器屏幕分辨率而言的 -->
    <div class="px">
        使用px设置的尺寸在不同的显示屏中尺寸不同,跟像素密度有关系; 如果缩放会有所影响
    </div>
    <!-- em默认根据根标签html的字号来改变 -->
    <div class="box">
        rem是参考根标签html的字号来改变
    </div>
    <div class="box1">
        em是参考当前的字号,如果没设置,参考父级元素或浏览器的字号
        <p>注:web的字号最小是12px,所以不能设置字号为小于12px</p>
    </div>
    <!-- em自定义设置 -->
    <div class="box2">
        rem是参考根标签html的字号来改变

    </div>
</body>
<style>
        html {
            font-size: 12px;
        }
        body {
            margin: 10px 50px;
        }
        .px {
            width: 100px;
            height: 100px;
            background-color: #fcf;
            margin-top: 10px;
        }
        .box {
            width: 10rem;
            height: 10rem;
            background-color: #ccc;
            /* 当前字体不会改变尺寸 */
            font-size: 20px;
            margin-top: 10px;
        }
        .box1 {
            width: 10em;
            height: 10em;
            background-color: #f40;
            font-size: 15px;
            margin-top: 10px;
        }
        .box2 {
            font-size: 5rem;
            background-color: #acd;
        }
    </style>

 


### px、rpxem rem区别使用场景 #### 1. **px (Pixel)** `px` 表示像素,是一种绝对长度单位。它是最常用的 CSS 计量单位之一,适用于不需要考虑多种设备分辨率的设计场景。由于其固定大小特性,`px` 能够提供较高的精度控制。 当仅需适配少量设备且分辨率对页面影响不大时,使用 `px` 是较为理想的选择[^1]。然而,在多设备环境下,`px` 缺乏灵活性,难以满足复杂的自适应需求。 --- #### 2. **rpx (Responsive Pixel)** `rpx` 是微信小程序中引入的一种相对单位,专为响应式布局设计。它的核心理念是基于屏幕宽度进行动态调整。具体而言,750rpx 等于屏幕的实际宽度,这意味着可以根据不同的屏幕尺寸自动计算出对应的物理像素值。 在 iPhone6 设备上,官方定义了 1rpx = 0.5px 或者说 1 物理像素[^3]。通过这种方式,开发者能够轻松实现跨屏适配。需要注意的是,`rpx` 主要用于微信生态内的开发环境,并不适合通用网页项目[^2]。 --- #### 3. **em** `em` 属于相对单位,依赖父级元素字体大小作为基准来进行比例换算。如果未指定任何样式,默认情况下会继承根节点 `<html>` 的 font-size 值(通常为 16px)。例如: 假设某容器设置了 `font-size: 16px;` ,那么子元素声明 `width: 2em;` 实际代表的就是 32px 宽度[^无直接引用]。 这种机制使得 `em` 非常适合构建嵌套结构中的渐变缩放效果;不过也因为层层累加的关系容易引发复杂性增加的问题。 --- #### 4. **rem (Root em)** 与 `em` 类似,`rem` 同样属于相对单位,但它始终参照文档根节点 (`<html>`) 的字体大小而非局部上下文。这赋予了 `rem` 更高的稳定性一致性,尤其利于全局范围内的统一管理。 对于需要兼顾多个终端类型的移动互联网产品来说,采用 `rem` 进行布局规划显得尤为重要[^1]。借助媒体查询配合 JavaScript 动态修改 html 元素 fontSize 方法,可以达成高度灵活的响应式设计方案。 ```javascript function setRemUnit() { const screenWidth = document.documentElement.clientWidth || window.innerWidth; const baseFontSize = Math.min(screenWidth / 10, 50); // 自定义逻辑设定最大最小值限制 document.documentElement.style.fontSize = `${baseFontSize}px`; } window.addEventListener('resize', setRemUnit); setRemUnit(); ``` 上述脚本展示了如何依据视窗宽度实时更新基础字号从而驱动整个页面按比例伸缩的过程。 --- ### 总结对比表 | 单位 | 描述 | 使用场景 | |------|------------------------------------------------------------------------------------------|--------------------------------------------| | px | 绝对单位 | 不涉及过多设备兼容性的简单界面 | | rpx | 微信小程序专用,基于屏幕宽度的比例单位 | 小程序内部开发 | | em | 相对当前对象内文本的字体大小 | 复杂层次结构下局部区域独立调节 | | rem | 相对 HTML 根元素字体大小 | 整体一致性的响应式布局 | --- 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值