1. 程式人生 > >px與 rem css常見單位

px與 rem css常見單位

文筆可能不太好,請多多包涵

css的單位:

  1. px 這個不需要說
  2. rem/em
  3. vh/vw
  4. vmax/vmin

1. rem /em

1.1. 含義 rem 是根據根元素的fontSize來計算,這裡的根源素指的是html; em 是根據其父級的font Size來計算的。

eg:

  • rem

    <html style='font-size:20px;'>
    	<header></header>
    	<body>
    		<div style='width:20rem;font-size:2rem;'>    
    		/*  div的width為10rem,即 10 * 20 = 200px ,fontSize是2*20 = 40px  */
    			<p>哈哈</p>  
    			/*  fontSize設定2rem,即 2 * 20 = 40px  這邊是根據根元素的font Size20px計算的,而不是根據其父元素的40px計算的*/
       	</div>
       </body>
    </html>
    
  • em

    <html style='font-size:20px;'>
    	<header></header>
    	<body>
    		<div style='width:20rem;font-size:2rem;'>    
    		/*  div的width為10rem,即 10 * 20 = 200px ,fontSize是2*20 = 40px  */
    			<p>哈哈</p>  
    			/*  fontSize設定2rem,即 2 *40 = 80px  這邊是根據其父元素的40px計算的,而不是根據根元素的font Size20px計算的*/
       	</div>
       </body>
    </html>
    

    1.2 px <=> rem 轉換

;(function(win, doc) {
  change()
  function change() {
   var remSize = window.innerWidth / 7.5 || 50   /*設計稿是以width = 750px 為基準的*/
  document.querySelector('html').style.fontSize = (remSize > 100 ? 100 : remSize) + 'px'  /*這樣寫是為了保障在pc端的時候可以相容使用*/
  }
  win.addEventListener('resize', change, false)
  win.addEventListener(  'orientationchange', change, false ) /* 這個是移動端裝置橫屏、豎屏轉換時觸發的事件處理函式 */
})(window, document)

2. vh/vw

1vh等於viewport高度的100%.視窗高度是1000px,1vh求得的值為10px; 1vw等於viewport寬度的100%.視窗寬度為750px,1vw求得的值為7.5px。

3. vmax/vmin

vmin和vmax是與螢幕的寬度和高度的最大值或著最小值有關,取決於哪個更大和更小。例如,如果瀏覽器設定為width750px,height1100px,1vmin會是7.5px,1vmax為11px。如果寬度設定為11000px,高度設定為750px,1vmin將會等於7.5px而1vmax將會是11px。

設想你需要一個總是在螢幕上可見的元素。使用高度和寬度設定為低於100的vmin值將可以實現這個效果。例如,一個div總是至少接觸螢幕的兩條邊可能是這樣定義的:

.box {
    height: 100vmin;
    width: 100vmin;
}

在這裡插入圖片描述

如果你需要一個總是覆蓋可視視窗的正方形(一直接觸螢幕的四條邊),使用相同的規則只是把單位換成vmax。

.box {
    height: 100vmax;
    width: 100vmax;
}

在這裡插入圖片描述