css中的各種單位簡述以及ios10下safari禁止縮放的問題


px:絕對單位,頁面按精確像素展示

em:相對單位,基准點為父節點字體的大小,如果自身定義了font-size按自身來計算(瀏覽器默認字體是16px),整個頁面內1em不是一個固定的值。

rem:相對單位,可理解為”root em”, 相對根節點html的字體大小來計算,css3新加屬性,chrome/firefox/IE9+支持。

(另外需注意chrome強制最小字體為12px,即使設置成 10px 最終都會顯示成 12px,當把html的font-size設置成10px,子節點rem的計算還是以12px為基准,所以網上很多文章提到的將html的font-size設為10方便計算不是那么可取)。

html{font-size: 62.5%}  /* 16px * 62.5% = 10px */ body{font-size: 1.4rem;} /* 1.4rem * 12px = 16.8px */

本意設置body的字體大小為14px,可是在chrom中實際上卻是16.8px,就是因為10px小於12px,所以采取了12px。

rem與em的區別:

  • rem是相對於根元素(html)的字體大小,而em是相對於其父元素的字體大小

  • em最多取到小數點的后三位

<style> html{ font-size: 20px; } body{ font-size: 1.4rem;  /* 1rem = 28px */ padding: 0.7rem;  /* 0.7rem = 14px */
  } div{ padding: 1em;  /* 1em = 28px */
  } span{ font-size:1rem;  /* 1rem = 20px */ padding: 0.9em;  /* 1em = 18px */
  }
</style>

<html>
  <body>
    <div>   
      <span></span>  
    </div>
  </body>
</html>

在上面的代碼中,我們將根元素(html)的字體大小font-size設為20px,body的字體大小設為1.4rem,那么轉換為像素就是28px(20 × 1.4),接着我們又將div的padding設為1em,由於其基於父元素,所以轉換為像素是28px ( 28 × 1),然后我們又將span的字體大小設為1rem,也就是20px,由於其自身設置了字體大小,所以padding設為1em,轉換為像素是20px(20 × 1),而不是乘以其父元素的字體大小28px(28 × 1)。

注意:當元素自身設置了字體大小,那么如果它的其他css屬性也使用em單位,則會基於它自身的字體大小。(就像上面例子的span的padding一樣)

注:rem與em多在移動端中使用,一般需設置meta縮放比1:1

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

但在IOS10 safari 下官方規定了不能禁止用戶縮放,就是說上述標簽是無效的。

暫未找到正確的解決之道,本人采用監聽事件來阻止默認行為,有一定作用,但並不能完全解決。

 window.onload = function () { document.addEventListener('gesturestart', function (e) { e.preventDefault(); }); document.addEventListener('dblclick', function (e) { e.preventDefault(); }); document.addEventListener('touchstart', function (event) { if (event.touches.length > 1) { event.preventDefault(); } }); var lastTouchEnd = 0; document.addEventListener('touchend', function (event) { var now = (new Date()).getTime(); if (now - lastTouchEnd <= 300) { event.preventDefault(); } lastTouchEnd = now; }, false); };

vw:viewpoint width,視窗寬度,1vw等於視窗寬度的1%。假如瀏覽器的寬度為200px,那么1vw就等於2px(200px/100)。
vh:viewpoint height,視窗高度,1vh等於視窗高度的1%。假如瀏覽器的高度為500px,那么1vh就等於5px(500px/100)。
vmin:vw和vh中較小的那個。
vmax:vw和vh中較大的那個。

vw, vh, vmin, vmax:IE9+局部支持,chrome/firefox/safari/opera支持,ios safari 8+支持,android browser4.4+支持,chrome for android39支持

其它的單位還有:
%:百分比
in:寸
cm:厘米
mm:毫米
pt:point,大約1/72寸

pc:pica,大約6pt,1/6寸

ex:取當前作用效果的字體的x的高度,在無法確定x高度的情況下以0.5em計算(IE11及以下均不支持,firefox/chrome/safari/opera/ios safari/android browser4.4+等均需屬性加么有前綴)

ch:以節點所使用字體中的“0”字符為基准,找不到時為0.5em(ie10+,chrome31+,safari7.1+,opera26+,ios safari 7.1+,android browser4.4+支持)

 


免責聲明!

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



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