摘要:問題描述為了適配各種屏幕,我們寫代碼時(shí)一般使用設(shè)備獨(dú)立像素來對(duì)頁面進(jìn)行布局。對(duì)此有如下解決方案這種方式可以滿足各種場景。
問題描述:
為了適配各種屏幕,我們寫代碼時(shí)一般使用設(shè)備獨(dú)立像素來對(duì)頁面進(jìn)行布局。
而在設(shè)備像素比大于 1的屏幕上,我們寫的 1px實(shí)際上是被多個(gè)物理像素渲染,這就會(huì)出現(xiàn) 1px在有些屏幕上看起來很粗的現(xiàn)象。
對(duì)此有如下解決方案:
@mixin border-1px($color, $direction) {
position: relative;
&::before {
content: "";
position: absolute;
z-index: 1;
@if $direction==all {
left: 0;
top: 0;
border: 1px solid $color;
box-sizing: border-box;
transform-origin: left top;
}
@else {
background-color: $color;
@if $direction==top {
left: 0;
top: 0;
width: 100%;
height: 1px;
}
@if $direction==right {
right: 0;
top: 0;
width: 1px;
height: 100%;
}
@if $direction==bottom {
left: 0;
bottom: 0;
width: 100%;
height: 1px;
}
@if $direction==left {
left: 0;
top: 0;
width: 1px;
height: 100%;
}
}
}
}
@each $direction in all,
top,
right,
bottom,
left {
@for $i from 1 to 10 {
$scale: 1 / $i;
@media only screen and (-webkit-min-device-pixel-ratio:$i) {
.border-1px-#{$direction}::before {
@if $direction==all {
width: $i * 100%;
height: $i * 100%;
transform: scale($scale);
}
@if $direction==top {
transform: scaleY($scale);
}
@if $direction==bottom {
transform: scaleY($scale);
}
@if $direction==right {
transform: scaleX($scale);
}
@if $direction==left {
transform: scaleX($scale);
}
}
}
}
}
這種方式可以滿足各種場景。
使用方式:
第一步:@include border-1px(blue, all);引入由mixin定義的代碼塊(創(chuàng)建偽類 模擬border)
第二步:
*注:
為何沒有直接對(duì)border-width直接操作 是因?yàn)橛胁糠謾C(jī)型不支持0.5px這樣的值 會(huì)被當(dāng)成0來處理 故用縮放來實(shí)現(xiàn)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/114940.html
問題提出 這是一個(gè)比較老的問題了,我第一次注意到的時(shí)候,是UI設(shè)計(jì)師來找我麻煩,emmm那時(shí)候我才初入前端職場,啥也不懂啊啊啊啊啊,情形是這樣的:設(shè)計(jì)師拿著手機(jī)過來:這些邊框都粗了啊,我的設(shè)計(jì)稿上是1px的我:????我寫的是1px呀,不信你看。(說著拿出了css代碼設(shè)計(jì)師:不對(duì)啊我眼睛看來這個(gè)邊框比我設(shè)計(jì)稿上粗很多,看起來好奇怪(emmm果然像素眼我:那我把它改成0.5px你看看(邊說邊改了代碼...
問題提出 這是一個(gè)比較老的問題了,我第一次注意到的時(shí)候,是UI設(shè)計(jì)師來找我麻煩,emmm那時(shí)候我才初入前端職場,啥也不懂啊啊啊啊啊,情形是這樣的:設(shè)計(jì)師拿著手機(jī)過來:這些邊框都粗了啊,我的設(shè)計(jì)稿上是1px的我:????我寫的是1px呀,不信你看。(說著拿出了css代碼設(shè)計(jì)師:不對(duì)啊我眼睛看來這個(gè)邊框比我設(shè)計(jì)稿上粗很多,看起來好奇怪(emmm果然像素眼我:那我把它改成0.5px你看看(邊說邊改了代碼...
閱讀 1157·2023-04-25 22:13
閱讀 2509·2019-08-30 15:56
閱讀 2359·2019-08-30 11:21
閱讀 862·2019-08-30 11:13
閱讀 2215·2019-08-26 14:06
閱讀 2164·2019-08-26 12:11
閱讀 2446·2019-08-23 16:55
閱讀 681·2019-08-23 15:30