關于wap站的適配問題小記

問題: 設計師給了一個適配iphone6 plus的設計圖。做好頁面之后適配iphone4、5、6很困難,這個間距調好了,那個又不好了。很糾結也很苦惱。最開始的辦法是用css3的media來查詢,然后設置相應的值。這樣的做法也不是很好。畢竟屏幕尺寸太多,根本適配不過來。有沒有一種方法可以隨著屏幕大小而變化呢?

帶著問題發現了很有用的一段回答,原文如下:

在移動端可以做到適配不同的手機分辨率,如果保持整體縮放,沒有設計上的差異可以不需要用到`media query`”

假設設計師的視覺稿是按照iPhone6的寬度來設計的,即375px (如果是高清的視覺稿750/2=375)

那么,我們可以完全按照視覺稿上的尺寸來賦值給元素的樣式,比如視覺稿上的尺寸是80px,那么在css中就可以直接定義width:80px;? 頁面中所有的尺寸都這樣來設置。

當所有的網站所有的頁面樣式都設置好之后。

我們需要做兩件事情:

1. 設置頁面的rem大小

```css

html {

font-size: calc(100vw/3.75); ?(vw是css3的一個單位,相對于視口的寬度,視口被均分為100單位的vw)

}

```

100vw是設備的寬度,除以3.75可以讓1rem的大小在iPhone6下等于100px

2. 替換頁面中的單位,把所有的px單位替換成rem,除以100,比如前面的80px,就是0.8rem

這樣在iPhone6下,所有元素的尺寸還是和視覺稿的尺寸一樣,而iphone5中,因為設備的寬度變小了,100vw/3.75得到的值,會相應的變小,即rem的單位值會變小,頁面中所有的尺寸會等比例縮放。

這樣就可以做到針對任何分辨率的設備保持視覺一致了。

最后,前面用到vw單位,但是低版本的設備可能不支持,那么就需要js來處理一下:

```javascript

document.documentElement.style.fontSize = window.innerWidth/3.75 + 'px'

```

之所以前面讓1rem等于100px,而不是1rem等于1px,是因為在chrome下針對中文的最小字體是12px。

當然,這種步驟是針對現在的狀況改rem來做的,如果一開始就是使用rem,那么寫css的時候,可以直接寫rem單位,按視覺稿除以100,其實也沒有什么計算過程。或者用預處理器的話,也可以寫一個`px2rem`的函數,直接改這個函數就可以了。

作者:sapjax

鏈接:https://www.zhihu.com/question/21504656/answer/48542422

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。



于是,就嘗試了上面的方法根據rem的特性實現隨屏幕大小而變化的效果。暫時覺著這個辦法很好。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • (轉自:http://www.cnblogs.com/qiny-easyui/archive/2016/11/26...
    一個廢人閱讀 633評論 0 0
  • 在移動互聯網快速發展的今天,手機的種類和尺寸越來越多,作為前端的小伙伴們可能會越來越頭疼,但又不得不去適配一款又一...
    keenjaan閱讀 26,912評論 9 86
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,805評論 1 92
  • 響應式布局的實現依靠媒體查詢( Media Queries )來實現,選取主流設備寬度尺寸作為斷點針對性寫額外的樣...
    iyimao閱讀 542評論 0 0
  • 拆信悅。 俞兄,未見幾月,可好? 長清辭很好,但蕭墨卻消失了。我們見過他的最后一面,是在空死后的晚上。 再過四個星...
    長清辭閱讀 308評論 0 0