成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

前端常見問題——一像素顯示

fsmStudy / 2527人閱讀

摘要:關(guān)于一像素顯示的問題可以參考從像素問題剖析像素及和屏幕揭秘。解決方案如何解決一像素顯示問題可以參考博客種方法解決移動(dòng)端屏幕邊框問題。

關(guān)于一像素顯示的問題可以參考 從1px像素問題剖析像素及viewport 和 iPhone 6 屏幕揭秘。

解決方案

如何解決一像素顯示問題可以參考博客 7種方法解決移動(dòng)端Retina屏幕1px邊框問題。

方案/優(yōu)缺點(diǎn) 兼容性 顏色 圓角 總結(jié)
0.5px 邊框 無(wú)法兼容安卓設(shè)備、 iOS 8 以下設(shè)備 支付 支持 簡(jiǎn)單,不需要過多代碼
使用 border-image 無(wú) 修改顏色麻煩,需要替換圖片 圓角需要特殊處理,并且邊緣會(huì)模糊 可以設(shè)置單條,多條邊框,且沒有性能瓶頸的問題
使用background-image實(shí)現(xiàn) 無(wú) 修改顏色麻煩, 需要替換圖片 圓角需要特殊處理,并且邊緣會(huì)模糊 可以設(shè)置單條,多條邊框,沒有性能瓶頸的問題
多背景漸變實(shí)現(xiàn) 多背景圖片有兼容性問題 支持 不支持 可以實(shí)現(xiàn)單條、多條邊框,邊框的顏色隨意設(shè)置,但是代碼量不少
使用 box-shadow 模擬邊框 無(wú) 邊框有陰影,顏色變淺 支持 代碼里少,可以滿足所有場(chǎng)景
viewport + rem 實(shí)現(xiàn) 無(wú) 支持 支持 所有場(chǎng)景都能滿足,一套代碼,可以兼容基本所有布局,但是老項(xiàng)目修改代價(jià)過大,只適用于新項(xiàng)目
偽類 + transform 實(shí)現(xiàn) 無(wú) 支持 支持(偽類和本體類都需要加border-radius) 所有場(chǎng)景都能滿足,對(duì)于已經(jīng)使用偽類的元素(例如clearfix),可能需要多層嵌套
測(cè)試示例

一像素分割線

一像素分割線(viewport + rem 實(shí)現(xiàn))

一像素邊框

一像素邊框(viewport + rem 實(shí)現(xiàn))

最佳實(shí)踐

如果公司內(nèi)部已經(jīng)有成熟的 “viewport + rem” 實(shí)現(xiàn)方案,那就不需要考慮一像素問題了。對(duì)于沒有采用該方案的項(xiàng)目,可以結(jié)合 ”0.5px 邊框“ 和 “偽類 + transform 實(shí)現(xiàn)” 的實(shí)現(xiàn)方案。

HTML 的 header 標(biāo)簽里加入 0.5 像素檢測(cè)腳本(放在頭部可避免屏幕出現(xiàn)閃爍問題)

var docEl = document.documentElement;
var fakeBody = document.createElement("body");
var testElement = document.createElement("div");
testElement.style.border = ".5px solid transparent";
fakeBody.appendChild(testElement);
docEl.appendChild(fakeBody);
if (testElement.offsetHeight === 1) {
  docEl.classList.add("hairlines");
}
docEl.removeChild(fakeBody);

根據(jù)選擇器 .hairlines 和設(shè)備像素比來(lái)設(shè)置預(yù)定義的公共樣式

/* 分割線 */
.line-bottom,
.line-left,
.line-right,
.line-top {
  position: relative;
}
.line-top::before,
.line-bottom::after {
  content: "";
  position: absolute;
  left: 0;
  height: 1px;
  width: 100%;
  background-color: #e8e8e8;
}
.line-left::before,
.line-right::after {
  content: "";
  position: absolute;
  top: 0;
  width: 1px;
  height: 100%;
  background-color: #e8e8e8;
}
.line-top::before {
  top: 0;
}
.line-bottom::after {
  bottom: 0;
}
.line-left::before {
  left: 0;
}
.line-right::after {
  right: 0;
}
.hairlines .line-top::before,
.hairlines .line-left::before,
.hairlines .line-right::after,
.hairlines .line-bottom::after {
  transform: none;
}
.hairlines .line-top::before,
.hairlines .line-bottom::after{
  height: 0.5px;
}
.hairlines .line-left::before,
.hairlines .line-right::after{
  width: 0.5px;
}
@media (-webkit-min-device-pixel-ratio: 2) {
  .line-top::before,
  .line-bottom::after {
    transform: scaleY(0.5);
  }
  .line-left::before,
  .line-right::after {
    transform: scaleX(0.5);
  }
}
/* 由于部分顏色比較淡,按實(shí)際比例縮放可能導(dǎo)致看不清分割線,所以可根據(jù)具體需求來(lái)決定是否按照實(shí)際像素比縮放 */
/*@media (-webkit-min-device-pixel-ratio: 3) {
  .line-top::before,
  .line-bottom::after {
    transform: scaleY(0.333333);
  }
  .line-left::before,
  .line-right::after {
    transform: scaleX(0.333333);
  }
} */
/* 邊框 */
.border {
  position: relative;
}
.border::after {
  content: " ";
  position: absolute;
  top: 0;
  left: 0;
  border: 1px solid #e8e8e8;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  transform-origin: left top;
}
.hairlines .border::after {
  display: none;
}
.hairlines .border {
  border: 0.5px solid #e8e8e8;
}
@media (-webkit-min-device-pixel-ratio: 2) {
  .border::after {
    width: 200%;
    height: 200%;
    transform: scale(0.5);
  }
}
/*@media (-webkit-min-device-pixel-ratio: 3) {
  .border::after {
    width: 300%;
    height: 300%;
    transform: scale(0.333333);
  }
} */

一像素顯示-最佳實(shí)踐

參考文獻(xiàn)

iPhone 6 屏幕揭秘 / iPhone 6 Screens Demystified

從1px像素問題剖析像素及viewport

7種方法解決移動(dòng)端Retina屏幕1px邊框問題

移動(dòng)web 1像素邊框 瞧瞧大公司是怎么做的

Retina屏的移動(dòng)設(shè)備如何實(shí)現(xiàn)真正1px的線?

再談mobile web retina 下 1px 邊框解決方案

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/113761.html

相關(guān)文章

  • 前端:移動(dòng)開發(fā) - 像素、viewport

    摘要:表示單位面積上的物理像素點(diǎn)數(shù)目。比如原本像素高的頂部導(dǎo)航欄,在屏上用了個(gè)像素的高度來(lái)顯示。參考譯此像素非彼像素譯不是像素的像素不是像素移動(dòng)前端開發(fā)之的深入理解移動(dòng)端尺寸基礎(chǔ)知識(shí)張?chǎng)涡裨O(shè)備像素比簡(jiǎn)單介紹 知識(shí) CSS 像素、物理像素、PPI CSS 像素 CSS 像素 是 Web 編程的概念,本質(zhì)上是為我們 Web 開發(fā)者創(chuàng)建的一個(gè)抽象結(jié)構(gòu),是相對(duì)的而不是絕對(duì)的。 物理像素 物理像素 是...

    QLQ 評(píng)論0 收藏0
  • 像素,css像素,物理像素,設(shè)備獨(dú)立像素,分辨率大亂斗

    摘要:我們用小米舉例,屏幕像素物理像素為,設(shè)備獨(dú)立像素為,也就是說,一個(gè)設(shè)備獨(dú)立像素就包含個(gè)物理像素,同時(shí)我們能得出。 本文主要闡述移動(dòng)端布局中常遇到的一些基本概念,這些概念也適用于PC端,這些概念大概有:像素(pixel),ppi,分辨率,物理像素(physical pixel), CSS像素,設(shè)備獨(dú)立像素(devicedependent pixel) 像素 像素是圖像顯示的基本單位,同時(shí)...

    LiveVideoStack 評(píng)論0 收藏0
  • 前端移動(dòng)端適配總結(jié)

    摘要:設(shè)備像素比縮寫簡(jiǎn)稱,也就是我們經(jīng)常在谷歌控制臺(tái)移動(dòng)端調(diào)試頂端會(huì)看到的一個(gè)值。在移動(dòng)端,默認(rèn)的情況下,布局視口的寬度是要遠(yuǎn)遠(yuǎn)大于瀏覽器的寬度的。手淘團(tuán)隊(duì)布局現(xiàn)今,適配手機(jī)端 meta標(biāo)簽到底做了什么事情 做過移動(dòng)端適配的小伙伴一定有遇到過這行代碼: 但是,很多小伙伴只是感性的認(rèn)識(shí):噢,我加了這行代碼,然后頁(yè)面的寬度就會(huì)跟我的設(shè)備寬度一致。然而,這種理解是很片面的。那么,這句話的本質(zhì)到底...

    sydMobile 評(píng)論0 收藏0
  • 前端移動(dòng)端適配總結(jié)

    摘要:設(shè)備像素比縮寫簡(jiǎn)稱,也就是我們經(jīng)常在谷歌控制臺(tái)移動(dòng)端調(diào)試頂端會(huì)看到的一個(gè)值。在移動(dòng)端,默認(rèn)的情況下,布局視口的寬度是要遠(yuǎn)遠(yuǎn)大于瀏覽器的寬度的。手淘團(tuán)隊(duì)布局現(xiàn)今,適配手機(jī)端 meta標(biāo)簽到底做了什么事情 做過移動(dòng)端適配的小伙伴一定有遇到過這行代碼: 但是,很多小伙伴只是感性的認(rèn)識(shí):噢,我加了這行代碼,然后頁(yè)面的寬度就會(huì)跟我的設(shè)備寬度一致。然而,這種理解是很片面的。那么,這句話的本質(zhì)到底...

    justjavac 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<