成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何解決移動端1px邊框

這篇文章主要介紹了如何解決移動端1px邊框,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

專注于為中小企業(yè)提供成都做網站、成都網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)武鄉(xiāng)免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現規(guī)模擴充和轉變。

在移動端開發(fā)時,經常會遇到在視網膜屏幕中元素邊框變粗的問題。

1px 邊框問題的由來

蘋果 iPhone4 首次提出了 Retina Display(視網膜屏幕)的概念,在 iPhone4 使用的視網膜屏幕中,把 2x2 個像素當 1 個物理像素使用,即使用 2x2 個像素顯示原來 1 個物理像素顯示的內容,從而讓 UI 顯示更精致清晰,這 2x2 個像素叫做邏輯像素。像這種像素比(像素比(即dpr)= 物理像素 / 邏輯像素)為 2 的視網膜屏幕也被稱為二倍屏,目前市面上還有像素比更高的三倍屏、四倍屏。而 CSS 中 1px 指的是物理像素,因此,設置為 1px 的邊框在 dpr = 2 的視網膜屏幕中實際占用了 2 個邏輯像素的寬度,這就導致了界面邊框變粗的視覺體驗。

使用 transform 解決

通過設置元素的 box-sizing 為 border-box,然后構建偽元素,再使用 CSS3 的 transform 縮放,這是目前市面上最受推崇的解決方法。這種方法可以滿足所有的場景,而且修改靈活,唯一的缺陷是,對于已使用偽元素的元素要多嵌套一個無用元素。具體的實現如下:

.one-pixel-border {
  position: relative;
  box-sizing: border-box;
}

.one-pixel-border::before {
  display: block;
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 200%;
  height: 200%;
  border: 1px solid red;
  transform: translate(-50%, -50%) scale(0.5, 0.5);
}

這樣就可以得到 0.5px 的邊框。

還可以結合媒體查詢(@media)解決不同 dpr 值屏幕的邊框問題,如下:

@media screen and (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {
  ...
}

@media screen and (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {
  ...
}

注意:IOS 系統(tǒng)的 safari 瀏覽器不支持標準的 min-resolution,使用非標準的 min-device-pixel-ratio。

使用 pixel-border.css 解決

pixel-border.css是一個解決移動端 1px 邊框的通用 CSS 工具。使用 transform 的解決方法,僅有幾行的源碼,使用起來非常方便,是目前發(fā)現最好的解決方法。

安裝

npm安裝:

npm install pixel-border --save

yarn安裝:

yarn add pixel-border

瀏覽器安裝,建議安裝壓縮后的版本:

<link rel="stylesheet" href="path/to/pixel-border.min.css"><link>

使用

pixel-border 通過元素的 ::before 偽元素使用 transform 縮放為元素設置邊框。因此,你可以使用原生的 CSS 邊框屬性為原素設置邊框,只需要在元素上添加一個 pixel-border 或 pixel-border="true" 的屬性,并設置元素的 border-style 值即可。如下會創(chuàng)建一個單像素邊框:

<div pixel-border style="border-style: solid;">單像素邊框</div>

注意:pixel-border已為元素的邊框設置為固定值 1px,因此不要為元素再設置 border-width,并且元素的 box-sizing 值被設置為 border-box,請不要重置為其他類型的值。

設置任意邊框:

設置元素某一邊的邊框時,只需為元素設置 border-top-style、border-bottom-style、border-left-style、border-right-style 其中一項的值,并設置元素 border-color 的值即可。如下設置上邊邊框:

<style>
  .border-top {
    border-top-style: solid;
    border-top-color: red;
  }
</style>

<div class="border-top" pixel-border>上邊框</div>

設置圓角邊框:

當需要圓角邊框時,始終為 border-radius 設置百分比值。如下:

<style>
  .border-radius {
    width: 100px;
    height: 100px;
    border-style: solid;
    border-color: red;
    border-radius: 10%;
  }
</style>

<div class="border-radius" pixel-border>圓角邊框</div>

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何解決移動端1px邊框”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!

網站欄目:如何解決移動端1px邊框
標題URL:http://jinyejixie.com/article44/ggeihe.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供電子商務Google、App開發(fā)、網站設計、網站內鏈、響應式網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網站建設
专栏| 平阳县| 宝鸡市| 东海县| 洛川县| 大埔区| 阿坝| 浦江县| 灵武市| 罗源县| 邳州市| 金乡县| 镇远县| 乐昌市| 双城市| 台中市| 金山区| 英吉沙县| 井冈山市| 崇明县| 奉节县| 谢通门县| 阿城市| 易门县| 久治县| 澎湖县| 闽清县| 南阳市| 渑池县| 财经| 桐庐县| 博爱县| 洛阳市| 汾阳市| 济宁市| 聂荣县| 喀喇| 郸城县| 五大连池市| 河池市| 甘谷县|