819
技術社區[雲棲]
rem計算適配
建議在CSS引入之前引入下麵這段JS代碼,比例1rem:100px。
用了這個JS就不用在CSS內寫N多個@media screenXXX了。
說明:
- 在html內最外層元素給max-width:640px,min-width:320px
- 元素寬高都以rem為單位就會自動縮放
- 字體大小一般0.2rem-0.34rem,如>h3:font-size:0.3rem,h4:font-size:.28rem,p:font-size:.2rem一般這幾個夠用了.
- 引入img標簽時候該img必須float或者給一個屬性(vertical-align: middle;display:block)否則其與父元素有20多px的margin-bottom
- 如img想自適應需要給個寬度,寬度可以百分比,可以rem為單位給固定寬度,比如img實際寬度100px,用此JS後想自動縮放,可以css裏給該img{width:1rem},其他元素雷同。
- 如果有用到input時候,該input得浮動或者以rem為單位給固定寬度和高度,不然占據行高很大,出現元素占據位置大時候,float一下即可
- 參考來源:戳此處
(function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', //orientationchange 事件是在用戶水平或者垂直翻轉設備(即方向發生變化)時觸發的事件。 //resize事件是屏幕縮放時候觸發的事件 recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; if(clientWidth>=640){ docEl.style.fontSize = '100px'; }else{ docEl.style.fontSize = 100 * (clientWidth / 640) + 'px'; } }; if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener('DOMContentLoaded', recalc, false); /*DOMContentLoaded是firefox下特有的Event, 當所有DOM解析完以後會觸發這個事件。 DOMContentLoaded事件本身不會等待CSS文件、圖片、iframe加載完成。 它的觸發時機是:加載完頁麵,解析完所有標簽(不包括執行CSS和JS), 並如規範中所說的設置interactive和執行每個靜態的script標簽中的JS,然後觸發。 而JS的執行,需要等待位於它前麵的CSS加載(如果是外聯的話)、執行完成, 因為JS可能會依賴位於它前麵的CSS計算出來的樣式。*/ })(document, window);
最後更新:2017-11-03 18:03:39