[css] 在rem下如何实现1像素?
"在 rem 单位下实现 1 像素边框在移动端是一项常见需求。由于 rem 是相对于根元素的字体大小进行计算的,所以无法直接使用 1px 来设置边框宽度。但是我们可以通过使用 transform 属性和伪元素来实现。

下面是一种常用的方法,使用伪元素 ::before 和 transform 缩放来实现 1 像素边框:

```css
/* 设置根元素字体大小,这里以 16px 为例 */
html {
font-size: 16px;
}

/* 定义一个 1 像素边框的 mixin */
@mixin border-1px {
position: relative;
&:after {
content: \"\";
position: absolute;
left: 0;
top: 0;
width: 200%;
height: 200%;
border: 1px solid;
transform: scale(0.5);
transform-origin: left top;
box-sizing: border-box;
}
}

/* 使用 mixin 设置边框 */
.element {
@include border-1px;
}
```

上述代码中,通过定义一个 mixin `border-1px`,将伪元素 `::after` 应用到目标元素上。伪元素的宽度和高度设置为原来的两倍,然后通过 `transform: scale(0.5)` 将其缩小一半,从而实现 1 像素的边框效果。需要注意的是,为了保持边框在元素内部,需要设置 `box-sizing: border-box`。

使用时,只需为目标元素添加 `border-1px` 类即可:

```html
<div class=\"element\">1px 边框</div>
```

这样就可以在 rem 单位下实现 1 像素边框的效果。需要注意的是,由于不同设备的像素密度不同,实际显示效果可能有所差异。在高像素密度的设备上,可能需要使用更高的缩放比例。另外,使用伪元素和 transform 缩放的方法可能会对渲染性能产生一定的影响,所以在实际使
展开
1