1️⃣ 利用 css 的 伪元素::after
+ transfrom
进行缩放
为什么用伪元素? 因为伪元素::after
或::before
是独立于当前元素,可以单独对其缩放而不影响元素本身的缩放
伪元素大多数浏览器默认单引号也可以使用,和伪类一样形式,而且单引号兼容性(ie)更好些
// 当某个元素需要设置 1px 的边框时为元素设置相对定位并且添加指定的类名即可
<!-- 全部边框 -->
.border-1px:after {
content: '';
position: absolute;
top: 0;
left: 0;
box-sizing: border-box;
width: 100%;
height: 100%;
border: 1px solid #000;
-webkit-transform: scale(0.5);
transform: scale(0.5);
-webkit-transform-origin: top left;
}
<!-- 单边框,以上边框为例 -->
.border-1px-top:after {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
border-top: 1px solid red;
transform: scaleY(0.5);
transform-origin: left top;
}
// 在高清屏幕下设置
@media screen and (-webkit-min-device-pixel-ratio: 2){
.border-1px-top:after{
transform:scaleY(0.5); // 2倍屏 伪元边框缩小为一半
}
}
@media screen and (-webkit-min-device-pixel-ratio: 3){
.border-1px-top:after{
transform:scaleY(0.33333); // 3倍屏 伪元边框缩小为三分之一
}
}