如何给1个宽高均为100px的div加上0.5px的border?
理论上px的最小单位是1,如果直接设置0.5px,在不同浏览器有不同表现,所以就不多说了。
解决方法:给伪元素设置1px的border,并且scale(0.5)
直接上代码:
<!DOCTYPE html>
<html lang="en">
<head>
<title>0.5px border</title>
<style>
div {
margin-bottom: 10px;
width: 100px;
height: 100px;
}
.box {
border: 1px solid #000;
}
.box1 {
border: 0.5px solid #000;
}
.box2 {
position: relative;
}
.box2::after {
content: '';
position: absolute;
border: 1px solid #000;
width: 200%;
height: 200%;
transform: scale(0.5);
transform-origin: left top;
}
</style>
</head>
<body>
<div class="box"></div>
<div class="box1"></div>
<div class='box2'></div>
</body>
</html>
chrome中效果图:
注意:
-
伪元素绝对定位
-
伪元素的宽高是真实元素的2倍
-
transform: scale(0.5);默认基准点是50% 50% 0。 即div的中心位置
-
transform-origin: left top;设置基准点为左上。
当然 transform-origin:0 0;也可以(不考虑三维)