解決flexible.js 在安卓中1px問題

1.Flexible原理

  • 1.1設(shè)置viewport
    通過設(shè)置scale將viewport寬度設(shè)置為實際的設(shè)備物理寬度, css里的1px就等于實際物理設(shè)備1px欠气。
    例如iphone6 設(shè)備像素比devicePixelRatio=2,flexible設(shè)置的meta信息如下:
<meta name="viewport" content="initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no">

iphone6沒有設(shè)置scale之前(375px) x (667px),1個css像素由2 x 2個物理像素構(gòu)成钱慢,設(shè)置scale之后viewport大小為(750px) x (1334px),iphone6是二倍屏知允,從而實現(xiàn)css1px等于實際1px。1px就是設(shè)備展示的最小單位了婆排。通常ui給的1px就是物理設(shè)備的最小單位(下圖中紅色部分標(biāo)注的部分),flexible很好的實現(xiàn)了在iphone上的1px線條益眉,直接設(shè)置height: 1px即可陕壹。


image.png
  • 1.2 設(shè)置rem
    Flexible將屏幕寬度等分10份应狱,html元素上的font-size設(shè)置為1rem, 1rem = 屏幕寬度 / 10, 例如iphone6中1rem = 750px / 10 = 75px, css需要將px轉(zhuǎn)化為rem, 從而實現(xiàn)不同屏幕的適配共郭。

2. 安卓下1px問題

Flexible只處理了IOS機(jī)型,非iOS機(jī)型還是采用傳統(tǒng)的scale=1.0侦香,原因是在于安卓手機(jī)不一定有devicePixelRatio屬性,以及devicePixelRatio的不規(guī)范,導(dǎo)致Flexible放棄治療纽疟。所以在安卓的高清屏幕上1px顯示比較粗罐韩,例如安卓3倍屏,1px會用3行物理像素點(diǎn)展示如下圖所示污朽。比ios的1px寬了許多散吵。


image.png

解決方案:判斷若為安卓機(jī)型,給html添加樣式如下

// flexible.js
function retina () { // android高分辨率屏幕處理
    if (navigator.userAgent.toUpperCase().indexOf('IPHONE OS') !== -1) return; 
    var classNames = [];
    var pixelRatio = window.devicePixelRatio || 1;
    classNames.push('pixel-ratio-' + Math.floor(pixelRatio));
    if (pixelRatio >= 2) {
        classNames.push('retina');
    }
    var html = document.getElementsByTagName('html')[0];
    classNames.forEach(function (className) {
        html.classList.add(className);
    });
  }

...
// css文件
.border {
   ...
   height:1px;
   html.pixel-ratio-2 & {
     transform: scaleY(0.5)
   }
   html.pixel-ratio-3 & {
      transform: scaleY(0.3)
   }
}

ps:在iphone下設(shè)置0.5px(小于最小的物理像素單位)依然有線條展示,在android下設(shè)置0.5px是不會展示的矾睦。
為什么小于最小的物理像素單位還會展示線條呢晦款?
其實展示的依然是最小的物理像素單位,不同的瀏覽器處理小于1px的方式不同枚冗,有些采用四舍五入缓溅,有些大于某個值展示1px否則就不展示,有些只是線條的顏色變淺了赁温,從視覺上看就變細(xì)了坛怪。對比處理效果如下圖所示。

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末股囊,一起剝皮案震驚了整個濱河市袜匿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稚疹,老刑警劉巖居灯,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異内狗,居然都是意外死亡怪嫌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進(jìn)店門其屏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喇勋,“玉大人,你說我怎么就攤上這事偎行〈ū常” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵蛤袒,是天一觀的道長熄云。 經(jīng)常有香客問我,道長妙真,這世上最難降的妖魔是什么缴允? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮珍德,結(jié)果婚禮上练般,老公的妹妹穿的比我還像新娘。我一直安慰自己锈候,他們只是感情好薄料,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泵琳,像睡著了一般摄职。 火紅的嫁衣襯著肌膚如雪誊役。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天谷市,我揣著相機(jī)與錄音蛔垢,去河邊找鬼。 笑死迫悠,一個胖子當(dāng)著我的面吹牛鹏漆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播及皂,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼甫男,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了验烧?” 一聲冷哼從身側(cè)響起板驳,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碍拆,沒想到半個月后若治,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡感混,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年端幼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弧满。...
    茶點(diǎn)故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡婆跑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庭呜,到底是詐尸還是另有隱情滑进,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布募谎,位于F島的核電站扶关,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏数冬。R本人自食惡果不足惜节槐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拐纱。 院中可真熱鬧铜异,春花似錦、人聲如沸秸架。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咕宿。三九已至,卻和暖如春府阀,著一層夾襖步出監(jiān)牢的瞬間缆镣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工试浙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留董瞻,地道東北人。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓田巴,卻偏偏與公主長得像钠糊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子壹哺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一些基本概念 viewport 視窗 在桌面瀏覽器中抄伍,viewport就是瀏覽器窗口的寬度高度。但在移動端設(shè)備上管宵,...
    Cruyun閱讀 1,588評論 0 2
  • 在移動互聯(lián)網(wǎng)快速發(fā)展的今天截珍,手機(jī)的種類和尺寸越來越多,作為前端的小伙伴們可能會越來越頭疼箩朴,但又不得不去適配一款又一...
    keenjaan閱讀 26,817評論 9 86
  • 本文來自尚妝前端團(tuán)隊南洋發(fā)表于尚妝github博客岗喉,歡迎訂閱。 移動端H5頁面rem縮放方案flexible.js...
    尚妝產(chǎn)品技術(shù)刊讀閱讀 2,583評論 1 12
  • 好長時間沒寫寫東西了查牌,忙完了工作又忙孩子,如實靜不下心做個整理了拐格!最近發(fā)生了大大小小的好多事僧免!最讓我感動的是孩她爸...
    天格燕子閱讀 119評論 0 0
  • 每天都有關(guān)注心藍(lán)老師,看見夏天的絕配冰淇淋捏浊,就忍不住也畫了懂衩。 草稿這樣 一點(diǎn)點(diǎn)上色 不要小看上色,要好幾種顏色疊加...
    謙玥兒閱讀 325評論 0 0