要實現半像素邊框,可能咱們首先想到的是 border-width:0.5px ,但並非全部手機瀏覽器都能識別border-width:0.5px ;
javascript
注:關於0.5px 並非說 css 的 border-width 值不支持0.5px,而是顯示狀態受屏幕分辨率的影響。ios8和winphone 8的設備對高清屏作了特殊處理,支持顯示border-width:0.5px,android 幾乎全部的機型不支持顯示0.5px的邊框。css
儲備知識點:須要先了解devicePixelRatio和border-imagejava
補充:scale和zoom區別android
transform-origin
修改基準點height:1px
的div,而後根據媒體查詢設置transform:scaleY(0.5);
.box{ height:1px; background:#000; transform: scaleY(0.5); -webkit-transform: scaleY(0.5); transform-origin:0 0; -webkit-transform-origin:0 0; overflow: hidden; }
.box::after{ content:''; width:100%; display: inline-block; border-bottom:1px solid #000; transform: scaleY(0.5); -webkit-transform: scaleY(0.5); }
::after
設置border:1px solid #000; width:200%; height:200%
,而後再縮放scaleY(0.5);
優勢能夠實現圓角
,比較好的用法,缺點是點擊涉及層級問題。@mixin border_half($color: $borderColor, $radius: 0){ position: relative; &:after{ content: ''; width: 200%; height: 200%; position: absolute; top: 0; left: 0; box-sizing: border-box; border: 1px solid $color; border-radius: $radius; -webkit-transform: scale(0.5,0.5); transform: scale(0.5,0.5); transform-origin: top left; -webkit-transform-origin: top left; } }
缺定:須要定製圖片顏色,不能實現圓角,不靈活,可是不涉及層級的問題。ios
/*參考文章:https://github.com/AlloyTeam/Mars/blob/master/solutions/border-1px.md */ .box{ border-width: 1px; border-style: solid; width: 200px; height: 100px; /* -webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAC3obSmAAAABlBMVEUAAADu7u6BVFV4AAAAAXRSTlMAQObYZgAAAA5JREFUCNdj+MHQAYY/ABGyA4nEIg1TAAAAAElFTkSuQmCC) 2 stretch; */ -webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFAQMAAAHApoQwAAAABlBMVEX///8mJiZ40e/1AAAAAXRSTlMAQObYZgAAABlJREFUCB1jbmBuYD4AxA7MC4A0CHcwuwAARL4GLlsABegAAAAASUVORK5CYII=) 2 stretch; }
源碼地址:https://github.com/zuobaiquan/css3/tree/master/半像素邊框實現思路css3