1 min read

关于1px边框的学习

关于1px边框的学习

今天仔细看了以下weui(http://weui.github.io/weui)的css,发现全部边框都是使用伪类来实现。

最开始十分疑惑,为什么不直接使用border呢?

后来仔细看看发现,同时配合伪类实用的还有scale。
而且在mac上面,线条是1px。

这不禁让我赞叹!好巧妙的方法,通过缩放压缩线条。

以下是下边框1px现的css:

.weui_cells:after {
    content: " ";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 1px;
    border-bottom: 1px solid #D9D9D9;
    color: #D9D9D9;
    -webkit-transform-origin: 0 100%;
    -ms-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -webkit-transform: scaleY(0.5);
    -ms-transform: scaleY(0.5);
    transform: scaleY(0.5);
}

通过y方向上的缩放,达到了1px高度线条。

.weui_btn:after {
    content: " ";
    width: 200%;
    height: 200%;
    position: absolute;
    top: 0;
    left: 0;
    border: 1px solid rgba(0, 0, 0, 0.2);
    -webkit-transform: scale(0.5);
    -ms-transform: scale(0.5);
    transform: scale(0.5);
    -webkit-transform-origin: 0 0;
    -ms-transform-origin: 0 0;
    transform-origin: 0 0;
    box-sizing: border-box;
    border-radius: 10px;
}

这里通过也是一样的原理。

想想我原来都是用js判断浏览器,通过class判断1px和0.5px边框,还是不够优雅。