页面排版中让你迷惑的px % em rem长度单位

2 篇文章 0 订阅

页面排版中让你迷惑的px % em rem长度单位

本博文也是自己理解的心得体会,分享给对此还迷惑的小伙伴。


我们在写页面时,或者查看别人的页面样式代码时,时常会看到如下的四种常见的元素的大小单位:
  • px
  • %
  • em
  • rem

    W3C官方文档主要把单位分为相对长度单位和绝对长度单位两种,而我列出的这四种单位是我们日常接触最多,使用最频繁的长度单位。其中px为绝对长度单位,% em rem为相对长度单位。

详细介绍

1. px
px是Pixel的缩写,表示像素,所谓像素就是呈现在我们显示器上的一个个小点,每个像素点都是大小等同的,所以像素为计量单位被分在了绝对长度单位中。
2. %
百分比%就是相对于父元素尺寸来进行计算的,比如定义两个div元素,div1包含div2,设置父div1的width为100px,子div2的width为50%,则实际上计算的结果就是:子div2的宽度是100px*50% = 50px。
3. em
em就是相对于本身元素的字体尺寸来进行计算的,比如2em就是所应用元素上字体大小的两倍。
4. rem
rem是CSS3中引入的单位,rem是相对于根元素的字体大小来进行计算的,它可以避免em因为层级嵌套太多,字体设置变的难易维护的问题,目前主流的浏览器除了IE8以外,大部分浏览器都支持rem。

实例

这里我主要展示下% em rem相对长度单位的使用和计算理解,对于px绝对单位就直接略过。

/* em 使用 
  注意:em相对于本身元素字体大小计算,如果本身元素没有定义字体大小,那就逐级向上查找计算,如果最高级也没有定义,则使用默认值计算,一般浏览器的默认字体大小为12px*/
    body {
        font-size: 20px;
    }
    .div1 {
        font-size: 1.5em; /*30px*/ 

        /*由于本身元素div1没有设置字体大小,而上级body中定义了字体大小,所以计算方式就是font-size:20 * 1.5 = 30px */
    }
    .div2 {
        font-size: 0.8em; /*24px*/

        /*由于本身元素div2没有设置字体大小,而父级元素div1中定义了字体大小为1.5em即30px,所以计算方式就是font-size:30px * 0.8 = 24px */
    }
    .div3 {
        font-size: 2em; /*48px*/

        /*由于本身元素div3没有设置字体大小,而父级元素div2中定义了字体大小为0.8em即24px,所以计算方式就是font-size:24px * 2 = 48px */
    }

小结:想必通过简单例子,大家已经完全理解了em的计算原理,也肯定感觉出一个问题,就是如果我们页面设计中嵌套的元素关系太多,使用em就需要一级一级查找计算,这使得页面元素字体大小难以维护和把握,所以也就有了rem的出现,很好解决了em的这个问题。

/* rem 使用 
注意:rem相对于根元素字体大小计算,如果根元素字体大小没有定义,则使用默认值计算,一般浏览器的默认字体大小为12px */

    * {
        font-size: 20px; /* 根元素字体*/
    }
    .div1 {
        font-size: 1rem; /*20px*/ 

        /*由于根元素定义了字体大小20px,所以计算方式就是font-size:20 * 1.5 = 30px */
    }
    .div2 {
        font-size: 1.5rem; /*30px*/

        /*由于根元素定义了字体大小20px,所以计算方式就是font-size:20 * 1.5 = 30px */
    }
    .div3 {
        font-size: 2rem; /*40px*/

        /*由于根元素定义了字体大小20px,所以计算方式就是font-size:20 * 2 = 40px */
    }
/* % 使用介绍
注意:%相对于父元素尺寸大小计算*/
    body {
        width: 500px;
        height: 200px;
        border: 1px solid green;
    }
    .div1 {
        width: 100%; /*500px*/
        border: 1px solid yellow;

        /*由于父元素body定义了绝对高度,宽度,所以计算方式就是width:500px * 1 = 500px */
    }
    .div2 {
        width: 80%; /*400px*/
        border: 1px solid blue;

        /*由于父元素div1定义了宽度100%即500px,所以计算方式就是width:500px * 0.8 = 400px */
    }
    .div3 {
        width: 50%; /*200px*/
        border: 1px solid red;

        /*由于父元素div2定义了宽度80%即400px,所以计算方式就是width:400px * 0.5 = 200px */
    }
    .div1,.div2,.div3 {
        height: 100%; /*200px*/

        /*由于父元素body定义了高度200px,所以计算方式就是height:200px * 1 = 200px */
    }

总结

从理论上来说,四种尺寸都可以用来设置元素的尺寸和字体大小,但是也会给元素的样式上带来混乱,所以借鉴一些大牛的经验用于你实际项目中参考:
  1. 尽量设置相对尺寸

  2. 只有在预知元素尺寸下,才使用决定尺寸

  3. 使用em 或者 rem 设置页面字体大小


咳咳,还是那句话

还是要不断学习,因为自己还很年轻

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: rpx是小程序单位,可以根据屏幕宽度进行自适应缩放,适用于小程序开发。 px是像素单位,是网页开发最常用的单位,不具有自适应性。 em是相对于父元素字体大小的单位,适用于网页开发的字体大小设置。 rem是相对于根元素字体大小的单位,也适用于网页开发的字体大小设置。 %是相对于父元素的百分比单位,适用于网页开发的宽度、高度、边距等设置。 vh和vw是相对于视口高度和宽度的单位,适用于网页开发的响应式布局。 ### 回答2: 1. rpx:rpx 是小程序自带的一种单位,是可以根据屏幕宽度自适应的单位,即在不同设备上展示的物理尺寸相同。rpx 的设计理念是为了满足不同屏幕分辨率下 UI 图片等素材大小的自适应,它根据设备宽度进行换算,当屏幕宽度为 750 时,1rpx 就等于 1px,当屏幕宽度小于或大于 750 时,1rpx 的值也会相应缩放或放大。在开发小程序时,如果需要让视觉稿能够自动调整到不同设备上,使用 rpx 单位是非常方便的。 2. pxpx 单位是 web 开发最常用的单位,它是一个绝对的单位,不会因为屏幕大小而变化,是一个固定的值。 3. emem 是相对单位,它是根据自身字体大小的倍数来确定元素的大小。因为 em 的值是基于父元素的字体大小计算的,所以通常用于设置文本的字体大小。比如一个元素的 font-size 为 16px,设定它的子元素 font-size: 0.5em,则子元素字体大小为 8px。 4. remrem 是相对单位,它是根据根元素的字体大小来确定元素的大小,即根元素的 font-size 所对应的值。相比 em,它更为灵活,因为根元素的字体大小可以通过 JavaScript 动态改变,因此 rem 也可以方便地实现响应式布局。 5. %:百分比也是相对单位,它是相对于包含块的大小进行计算。如果一个元素的宽度为 50%,则它的宽度大小会自动调整为包含块的一半。 6. vh 和 vw:vh 和 vw 是视口尺寸的相对单位,vh 表示视口高度的百分比,vw 表示视口宽度的百分比。如果一个元素的宽度设置为 50vw,则它的宽度将自动调整为视口宽度的一半。使用 vh 和 vw 可以方便地实现基于视口适应的响应式布局。 ### 回答3: rpxpxemrem%、vw、vh 都是网页开发经常使用的单位。在网页开发,我们经常需要根据屏幕大小和分辨率来设置文本、元素的大小和位置。这些单位的不同使用场景也不同,下面我将详细介绍各个单位的区别。 1. rpx rpx是小程序独有的单位,原意为responsive pixels,文翻译为响应式像素。在小程序,rpx被设计为可根据屏幕宽度自适应的单位,1rpx等于屏幕宽度的1/750。因此,rpx的使用场景主要是小程序一些比较小的元素,如边框线、小图标等的大小或距离的设置。 2. px px是像素的意思。在Web开发px通常指屏幕上的一个像素点,即一个设备像素(Device Pixel)。使用px设置元素大小与距离时,元素的大小和距离不受页面缩放影响,不具备响应式设计特性。一般在设置一些固定大小元素的时候就会使用px单位。 3. em em单位是相对单位,指相对于当前元素的字体大小。例如,一个元素的字体大小为10px,那么设置它的margin为2em,表示为20pxem单位在设置字体大小时尤其有用,因为可以实现文本的相对大小调整。 4. rem rem单位也是相对单位,但是是相对于根元素的字体大小。例如,如果根元素html的字体大小为16px,那么1rem等于16px。使用rem可以实现相对大小的控制,而且可以随着页面大小的变化而变化,非常方便。 5. % 百分比单位是相对于父元素的大小。例如,如果一个元素的宽度设置为50%,则其宽度为其父元素宽度的50%%单位在设置图片大小时比较常用,可以保证图片大小与容器大小的比例不变。 6. vw和vh单位 这两个单位是针对视窗大小的相对单位。vw代表视窗宽度的百分比,vh代表视窗高度的百分比。例如,一个元素的宽度设置为50vw,表示其宽度为视窗宽度的50%。这些单位在移动端的响应式开发用得比较多。 综上所述,各个单位的使用场景是不同的。在实际开发,需要根据不同的情况选用不同的单位来设置元素的大小或位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值