實例解說js實作rem自動比對計算font-size
實際開發過程中,我們常常會被各種寬度,高度計算搞暈。尤其是使用了rem的計算方式,自適應佈局難倒一大片程式設計師。為了解決這類問題,我覺得可以利用js監聽螢幕寬度變化來實現更改HTML 根元素font-size的值。本文主要介紹了js實作rem自動比對計算font-size的範例,小編覺得還挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。
下面是相關JavaScript的實作程式碼:
(function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? '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); })(document, window);
此程式碼選640px為基準值,為什麼選640呢,
#640px的頁面寬度是一個安全的最大寬度,保證了行動版頁面兩邊不會留白。注意這裡的px是css邏輯像素,與裝置的實體像素是有差別的。如iPhone 5所使用的是Retina視網膜螢幕,使用2px x 2px的 device pixel 代表 1px x 1px 的 css pixel,所以裝置像素數為640 x 1136px,而它的CSS邏輯像素數為320 x 568px。
所以當要切割行動端的頁面的時候,就需要把效果圖寬度等比例縮放到640px。
例如當頁面中某一p的寬度為60,高度為65的時候,就可以直接這樣寫樣式:
{ width:0.6rem; height:0.65rem }
瀏覽器的相容性
rem是CSS3新引進的度量單位,大家心裡一定會覺得心灰意冷呀,擔心瀏覽器的支援狀況。其實大家不用害怕,你可能會驚訝,支援的瀏覽器還是蠻多的,例如:Mozilla Firefox 3.6+、Apple Safari 5+、Google Chrome、IE9+和Opera11+。只是可憐的IE6-8無法,你們就把他們當透明了吧,我向來都是如此。
不過使用單位設定字體,可不能完全不考慮IE了,如果你想使用這個REM,但也想相容IE下的效果,可你可考慮「px」和「rem」一起使用,用"px"來實現IE6-8下的效果,然後使用「Rem」來實現代瀏覽器的效果。就讓IE6-8不能隨文字的改變而改變吧,誰讓這個Ie6-8這麼老呢?大家不彷試試,還蠻有意思,說不定這個就是主流的度量單位了。
完整實例程式碼:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" /> <meta content="telephone=no" name="format-detection" /> <meta name="format-detection" content="email=no" /> <meta http-equiv="Cache-Control" content="no-cache"/> <title>响应式布局</title> <style> html{font-size: 20px;width: 100%;height: 100%;} body{margin: 0;padding: 0;} header,footer{width: 100%;background: #17A578;color: #fff;font-size:1rem;text-align: center;line-height: 2rem;} .footer{position: fixed;bottom: 0;} .box{} .public{width: 5rem;height: 5rem;font-size: 1.2rem;display: inline-block;text-align: center;color: #fff;line-height: 5rem;margin-top: 1rem;} .left{background: #f00;} .center{background: #048F74;} .right{background: #000;} </style> </head> <body> <header>页面头部</header> <p class="box"> <p class="public left">左</p> <p class="public center">中</p> <p class="public right">右</p> <p class="public left">左</p> <p class="public center">中</p> <p class="public right">右</p> </p> <footer class="footer">页面底部</footer> <script> //orientationchange方向改变事件 (function (doc, win) { var docEl = doc.documentElement,//根元素html //判断窗口有没有orientationchange这个方法,有就赋值给一个变量,没有就返回resize方法。 resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; //把document的fontSize大小设置成跟窗口成一定比例的大小,从而实现响应式效果。 docEl.style.fontSize = 20 * (clientWidth / 320) + 'px'; }; //alert(docEl) if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false);//addEventListener事件方法接受三个参数:第一个是事件名称比如点击事件onclick,第二个是要执行的函数,第三个是布尔值 doc.addEventListener('DOMContentLoaded', recalc, false)//绑定浏览器缩放与加载时间 })(document, window); //alert(document.documentElement.clientWidth/320) </script> </body> </html>
相關推薦:
使用CSS 的 font-size-adjust屬性改善網頁排版詳情介紹
wap手機端頁面根據dpr和寬度計算出font-size對應數值_html/css_WEB-ITnose
#以上是實例解說js實作rem自動比對計算font-size的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

前言vim是個強大的文字編輯的工具,在Linux端得到極大的使用熱度。最近在另外一台伺服器上使用vim時,遇到了一個奇怪的問題:當我將本地編寫好的腳本複製並貼上到伺服器中的空白檔案時,出現了自動縮排的情況。用個簡單的例子來說,就是我在本地寫的腳本如下:aaabbbcccddd當我將上述內容複製後,粘貼到伺服器中的空白文件後得到的卻是:aabbbcccddd很明顯,這是vim給我們自動進行了格式縮排。但是,這個自動有點不聰明。這裡記錄下解決方案。解決方案:設定.vimrc設定檔我們在家目錄下,新

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

如果您使用Linux作業系統,並希望系統在啟動時自動載入驅動器,可以透過將裝置的唯一識別碼(UID)和掛載點路徑新增至fstab設定檔來實現。 fstab是位於/etc目錄中的檔案系統表文件,它包含了系統在啟動時需要掛載的檔案系統的資訊。透過編輯fstab文件,您可以確保在每次系統啟動時都能正確載入所需的驅動器,從而確保系統的穩定運作。自動安裝驅動器可方便地應用於多種情境。例如,我計劃將系統備份到外部儲存設備。為了實現自動化,需確保設備與系統保持連接,甚至在啟動時。同樣,很多應用程式會直接

PHP字串比對技巧:避免模糊包含表達式在PHP開發中,字串比對是常見的任務,通常用於尋找特定的文字內容或驗證輸入的格式。然而,有時候我們需要避免使用模糊的包含表達式來確保匹配的準確性。本文將介紹一些在PHP中進行字串匹配時避免模糊包含表達式的技巧,並提供具體的程式碼範例。使用preg_match()函數進行精確比對在PHP中,可以使用preg_mat
