还傻傻分不清px、em、rem、rpx、vh/vw吗

719 阅读3分钟

在前端开发里,尺寸单位的恰当选用对打造出适配不同设备的界面起着关键作用。下面为你详细剖析几种常见的尺寸单位及其应用场景。

固定尺寸单位:px(像素)

px 是一种固定的物理像素单位,其大小不会随着页面缩放或者父元素尺寸的改变而变化。它的优势在于能够精准地控制元素大小,特别适合用于那些对尺寸精度要求高的场景,像绘制图标、设置边框宽度等。然而,它也存在明显的劣势,在响应式设计中,使用 px 可能会使页面在不同设备上的显示效果不佳。

.icon {
    width: 24px;
    height: 24px;
    border: 1px solid #ccc;
}

相对单位:rem(根元素字体大小)

rem 是相对于根元素(即 <html> 元素)字体大小的单位。通过设置根元素的字体大小,能够实现全局的尺寸调整。这一特性使得它非常适合用于响应式布局。例如,在移动端适配时,可以借助媒体查询来动态修改根元素的字体大小。

/* 基础设置 */
html {
    font-size: 16px;
}

.container {
    width: 20rem; /* 相当于 320px */
}

/* 在小屏幕设备上调整根字体大小 */
@media (max-width: 768px) {
    html {
        font-size: 14px;
    }
}

相对单位:em(父元素字体大小)

em 与元素的父元素字体大小相关。它常用于实现局部的尺寸缩放,像按钮、标题等元素的尺寸设置。不过,由于 em 会继承父元素的字体大小,所以在嵌套层级较深的情况下,可能会使尺寸计算变得复杂。

.button {
    font-size: 1.2em; /* 父元素字体大小的 1.2 倍 */
    padding: 0.5em 1em; /* 内边距会随字体大小变化 */
}

视口单位:vh 和 vw

vhvw 分别代表视口高度和视口宽度的百分比。1vh 等于视口高度的 1%,1vw 等于视口宽度的 1%。它们非常适合用于创建全屏布局或者那些需要根据视口大小进行缩放的元素。

.hero-banner {
    height: 100vh; /* 全屏高度 */
    width: 100vw; /* 全屏宽度 */
}

.sidebar {
    width: 20vw; /* 视口宽度的 20% */
}

微信小程序单位:rpx

rpx 是微信小程序特有的尺寸单位,它会根据屏幕宽度进行自适应调整。在微信小程序里,默认将屏幕宽度划分为 750 个 rpx。这就意味着在不同屏幕尺寸的设备上,相同的 rpx 值能够呈现出相近的视觉效果。

view {
    width: 375rpx; /* 在任何设备上都约占屏幕宽度的一半 */
}

单位选择建议

  1. 需要精确控制尺寸时:可以选择 px,例如设置图标、边框等的尺寸。
  2. 进行全局响应式布局时:优先考虑 rem,通过调整根元素的字体大小来实现整体布局的缩放。
  3. 实现局部自适应时em 是不错的选择,比如设置按钮的内边距等。
  4. 创建全屏或视口相关元素时:使用 vhvw,能够确保元素与视口大小保持比例关系。
  5. 开发微信小程序时:使用 rpx,可使界面在不同设备上有一致的显示效果。

在实际的项目开发中,往往需要结合多种单位来满足各种复杂的布局需求。通过合理地搭配使用这些单位,能够让你的界面在各种设备上都有出色的显示效果。