css3新增的rem是現在非常受歡迎的單位。來看看MDN上的說明:
這個單位代表根元素的
font-size
大小(例如<html>
元素的font-size) 。
使用這個單位可以創造完美的可擴充佈局,只要依照頁面大小去修改html的font-size,就能達到適合整個頁面的目的。那麼問題來了,要如何讓html的font-size適應呢?
media的用法這裡就不贅述,簡單說明透過媒體查詢修改html的font-size以達到頁面自適應的目的。
html如下:
<article class="container"> <ol> <li>rem是相对于root元素(html)字体大小的一个单位。 eg:html默认font-size为16px 则1rem = 16px</li> <li>若元素以rem为单位去设置字体、宽高、边距等。则修改html字体大小就能达到所有元素一起等比例修改的效果</li> <li>所以要实现html字体在不同页面大小下自适应</li> </ol> </article>
css如下:
//媒体查询控制html字体大小 @media (max-width:767px) { html{ font-size: 14px; } } @media (min-width:768px) { html{ font-size: 16px; } } @media (min-width:992px) { html{ font-size: 20px; } } //页面元素的简单样式 .container{ padding: 1rem; } li{ font-size: 1rem; }
html{ font-size: calc(16/768*100vw); //以768时16px为标准进行缩放 }
(function(){ var doc = document.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'; function changeFontSize(){ var clietWidth = doc.offsetWidth, scale = clietWidth/768; //以768为标准 doc.style.fontSize = scale * 16 + 'px'; } if (!doc.addEventListener) return; window.addEventListener(resizeEvt,changeFontSize) //窗口大小变化或者手机横屏 document.addEventListener('DOMContentLoaded',changeFontSize) //加载页面触发 })()
以上是rem絕對自適應方案解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!