數據大屏響應式布局rem


數據大屏響應式布局,主要用到rem,涉及一個rem.js文件,需要安裝一個依賴 postcss-px2rem ,此外還用到vw、vh 、百分比相對單位來設置布局寬度。

 

1、什么是rem?摘自菜鳥教程

rem是CSS3新增的一個相對單位(root em,根em),這個單位與em有什么區別呢?區別在於使用rem為元素設定字體大小時,仍然是相對大小,但相對的只是HTML根元素。這個單位可謂集相對大小和絕對大小的優點於一身,通過它既可以做到只修改根元素就成比例地調整所有字體大小,又可以避免字體大小逐層復合的連鎖反應。目前,除了IE8及更早版本外,所有瀏覽器均已支持rem。

2、postcss-px2rem 的作用是把css文件中的px自動轉為rem 

寫css樣式時,寫固定的px,通過該插件將自動轉換px為rem。比如設置頭部高度為80px,在瀏覽器中查看 按f12,會看到對應的css變為了5.714286rem,此時根節點的font-size: 11.6375px;,計算出頭部高度為 11.6375 *5.714286=66.5px

 

 

3、rem.js文件如下:

 1 const baseSize = 14
 2 // 設置 rem 函數
 3 const setRem=()=> {
 4   // 當前頁面寬度相對於 1920寬的縮放比例,可根據自己需要修改。
 5   const scale = document.documentElement.clientWidth / 1920
 6   // 設置頁面根節點字體大小(“Math.min(scale, 2)” 指最高放大比例為2,可根據實際業務需求調整)
 7   console.log(scale);
 8   if(scale>=0.46){
 9      document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px' //根據比例計算根節點的font-size大小
10   }else{
11      document.documentElement.style.fontSize = '6.5px'
12   }
13  
14 
15 }
16 // 初始化
17 setRem()
18 // 改變窗口大小時重新設置 rem
19 window.onresize = function() {
20   setRem()
21 }

在入口文件main.js中引入rem.js

 當改變窗口時,根據當前窗口寬度重新計算根節點的fontsize

頁面中rem的值對應也將重新計算。

4、使用相對單位來設置布局寬度

比如vw,vh (代表窗口的寬和高)

設置100vw 相當於設置百分百窗口寬,10vw相當於設置10%的窗口寬

比如百分比來定義寬高,100% 30%

最外層的div寬高設定好后,內部的div用百分比來定義,相對於外層,多高。

如下所示,

 

大屏左中右三個div設置樣式如下: 用百分比設置寬度,當調整窗口寬度的時候,div的寬自動變了。

 1   #centerBox{
 2         width:48%;
 3         height: calc(100% - 100px);
 4           min-height: 400px;/*no*/ 
 5         position: absolute;
 6         z-index: 9999;
 7         left:26%;
 8         top: 100px;
 9     }
10 #centerBottomBox{ 11 width: 100%; 12 height: calc(40% - 60px) 13 } 14 19 #rightBox{ 20 width:24%; 21 height: calc(100% - 100px); 22 min-height: 400px;/*no*/ 23 position: absolute; 24 z-index: 9999; 25 right:10px; 26 top: 100px; 27 } 28 #leftBox{ 29 width:24%; 30 height: calc(100% - 100px); 31 position: absolute; 32 min-height: 400px;/*no*/ 33 z-index: 9999; 34 left:10px; 35 top: 100px; 36 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM