魯迅曾經(jīng)說過:竊代碼不能算偷……竊代碼!……程序員的事,能算偷么!
最近有個項目需要做移動端,想起來以前uncle對我說過,移動端需要對不同的手機做適配,所以不能單純用px,很久以前的移動端適配是使用的媒體查詢。
@media screen and (max-width: 300px){} 最大寬度300像素需要的樣式。
后來移動端興起,為每一個都做一個適配不合理,所以需要做響應式rem布局。
rem單位都是相對于根元素html的font-size來決定大小。
因此,如果通過rem來實現(xiàn)響應式的布局,只需要根據(jù)視圖容器的大小,動態(tài)的改變font-size即可(而em是相對于父元素的)。
這里可以使用js來讀取頁面大小。
貼一下uncle的代碼。
function fontRem() { var bodyWidth = document.getElementsByTagName("body")[0].clientWidth; var htmlWidth = document.getElementsByTagName('html')[0]; var fontSize = bodyWidth / 375; htmlWidth.style.fontSize = fontSize + "px"; } fontRem() // 改變窗口大小時重新設置 rem window.onresize = function(){ fontRem(); }
介紹一下代碼,375就是設計圖的寬度,實際頁面尺寸 1px = 1rem。
看一下例子,這里設計圖寬度是375,這里我們設置寬度為250rem 和 375rem.可以看到,當寬度為375rem時,并沒有出現(xiàn)x軸的滾動條,所以剛剛好鋪滿。
因為需要拿到body和html這兩個標簽,所以需要放到body外面的位置。
下一篇: 粘性定位(sticky)詳解