日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

px转rem的详细解释和用法

發布時間:2023/12/20 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 px转rem的详细解释和用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最終可實現:例如寬 20px 的圖,就可以寫成 0.2rem ; 公式為20px/100=0.2rem;

var rootResize=function(){var baseFontSize = 100;var baseWidth = 640;var minWidth=320;var clientWidth = document.documentElement.clientWidth || window.innerWidth;var innerWidth = Math.max(Math.min(clientWidth, baseWidth), minWidth);var rem = clientWidth/(baseWidth/baseFontSize);if(innerWidth==640||innerWidth==320){rem=innerWidth/(baseWidth/baseFontSize)}document.querySelector('html').style.fontSize = rem + 'px';}; rootResize(); window.οnresize=function(){rootResize()};

解析代碼:(針對手機端)

documentElement.clientWidth
window.innerWidth

先解釋下

documentElement:

返回HTML DOM中的ROOT節點 即 ; 菜鳥網解釋與案例

documentElement.clientWidth:

window.innerWidth:

Element.clientWidth 屬性表示元素的內部寬度,以像素計。該屬性包括內邊距,但不包括垂直滾動條(如果有)、邊框和外邊距。

window.innerWidth:

瀏覽器視口(viewport)寬度(單位:像素),如果存在垂直滾動條則包括它。

我們用代碼驗證下:

<html > <head><meta charset="UTF-8"><title>Title</title><meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> </head> <body> <div style="border: 10px #7f7f7f solid;"><p style="background: #fe9901" id="demo1">顯示值</p><p style="background: #d76342" id="demo2">顯示值</p><p style="background: #fe9901" id="demo3">顯示值</p><button οnclick="Click1()">body</button><button οnclick="Click2()">html</button><button οnclick="Click3()">p</button> </div> </body> <script>// var mybody = document.body.clientWidth;var myhtmlto = document.documentElement.clientWidth;var myhtml = window.innerWidth;var myp = document.getElementById("demo3").clientWidth;/* function Click1 (){var mby=document.getElementById("demo1");mby.innerHTML=mybody+"---document.body.clientWidth;";}*/function Click1 (){var diy=document.getElementById("demo1");diy.innerHTML= myhtmlto+"---document.body.clientWidth;";}function Click2(){var diy =document.getElementById("demo2");diy.innerHTML=myhtml+"---window.innerWidth;";}function Click3(){var diy =document.getElementById("demo3");diy.innerHTML=myp+"---getElementById(\"demo3\").clientWidth;";} </script> </html>

針對手機端, 所以設置

<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">

運行結果:

document.documentElement.clientWidth / window.innerWidth; 都是獲取的HTML寬度。 document.getElementById("demo3").clientWidth; 當.clientWidth 定位到P標簽寬度時,只計算內邊距寬度,不計算邊框.

打開 document.body.clientWidth; 當P標簽沒有外邊框的時候 body寬度等于P標簽寬度, body和HTML寬度不相等,相差得數值 就不做深究了。

剩下的我就重點說一下clientWidth/(baseWidth/baseFontSize); 這個公式的意義。

首先當把HTML font-size:設置多少。 1rem 就等于 多少;

<html> <head><meta charset="UTF-8"><title>Title</title> </head> <style>html{font-size: 100px;} </style> <body> <p style="background: #fe9901;width: 1rem;" id="demo3">顯示值</p> <button οnclick="Click3()">p</button> <script>var myp = document.getElementById("demo3").clientWidth;function Click3(){var diy =document.getElementById("demo3");diy.innerHTML=myp+"px我的寬度";} </script> </body> </html>

大家自己動手改下數值驗證一下, 也可以切換模擬器寬度,是不受模擬器寬度影響的。

clientWidth 變量=實際手機窗口寬度。 baseWidth=640px; baseFontSize=100px;

換個方法大家就一眼看懂了。 640px/100px = 實際手機窗口寬度/ 實際手機HTML:font-size;代碼是rem 我用 實際手機HTML:font-size 代替便于大家理解。 等式的意義就是, 當窗口為640PX font-size設置為100PX 時 1rem=100px 。 那當實際手機窗口寬度為比如:320 時, 那么實際手機的font-size我改設置多少呢。 這個等式最后求出的 實際手機font-size 目的就是按照100PX=1rem這個關系來動態的換算我們的rem;不受實際窗口寬度變化影響。

剩余沒講解的代碼 都比較清晰易懂,大家動手查查吧!

總結

以上是生活随笔為你收集整理的px转rem的详细解释和用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。