如何画出border为0.5px的div?

1,166 阅读1分钟

如何给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中效果图:

image.png

注意:

  1. 伪元素绝对定位

  2. 伪元素的宽高是真实元素的2倍

  3. transform: scale(0.5);默认基准点是50% 50% 0。 即div的中心位置

  4. transform-origin: left top;设置基准点为左上。

    当然 transform-origin:0 0;也可以(不考虑三维)

参考网址:

www.runoob.com/cssref/css3…