css中常見的單位

px

  • 這個(gè)就不多說了,CSS中最為常用的一種單位,傳統(tǒng)上一個(gè)像素對(duì)應(yīng)計(jì)算機(jī)屏幕上的一個(gè)點(diǎn)。

百分比%

  • 子元素相對(duì)父容器的占比
  • 設(shè)置子元素的font-size為50%,那么子元素的font-size等于父容器的font-size*50%。

em

  • em是一個(gè)相對(duì)單位
  • 1em等于該元素設(shè)置的字體大小
    這里有一個(gè)很常見的誤區(qū),很多人說1em等于其父元素的字體大小,其實(shí)這是不對(duì)的,在該元素沒有設(shè)置字體大小的時(shí)候,該元素的字體大小繼承了其父元素的字體大小,所以這時(shí)該元素上1em等于其父元素的字體大小。但是如果該元素自己設(shè)置了字體大小且不等于其父元素的字體大小,那么該元素上1em就等于該元素自己的字體大小而于其父元素的字體大小無關(guān)。
    例如下邊這段代碼,box2自己設(shè)定了font-size:15px;而box1沒有設(shè)定font-size,所以box的font-size繼承了其父元素的font-size等于20px。造成的結(jié)果是box1中1em等于20px;box2中1em等于15px,所以box2的寬度會(huì)小于box1的寬度。
<div style="font-size:20px;">
    <div style="width: 5em;background-color: blueviolet">box1</div>
    <div style="font-size: 15px;width: 5em;background-color: blue">box2</div>
</div>
屏幕快照 2018-11-07 下午10.45.00.png
  • 為什么使用em,或者說em相較于px的好處
  1. 用戶可以設(shè)置字體大小
  • 如果使用em為單位,用戶在瀏覽器中設(shè)置字號(hào)大小,我們的頁(yè)面字體和用em作為單位設(shè)定的屬性也會(huì)相應(yīng)的改變(例如設(shè)定width:5em;用戶修改瀏覽器字號(hào)后該元素的寬度也會(huì)變化),使用px則沒有任何改變(很多國(guó)外的網(wǎng)站是這樣做的,國(guó)內(nèi)這樣做的很少)。
  1. 修改方便快捷
  • 修改父容器的字體大小子元素的字體大小都會(huì)跟著改變,這一點(diǎn)是px無法做到的
  • 舉一個(gè)例子可能更好理解,比如我們寫一片文章的樣式,有標(biāo)題,二級(jí)標(biāo)題,大綱,文本,現(xiàn)在要整體將字體放大,我們只需要修改html或者bodyfont-size就可以了,如果使用px作單位就需要每一處分別修改了。

rem

  • rem是對(duì)em的改進(jìn),這里我們先講一下em的一個(gè)很煩人的缺陷,就是遇到嵌套很深的結(jié)構(gòu),我們就不容易立刻知道每個(gè)子元素的1em等于多個(gè)px了,比如下面這個(gè)例子:
.outer{
    font-size: 2em;
}
.inner,.text{
    font-size: 0.75em;
}
<div class="outer">
     <div class="articl-title">測(cè)試一下,你就知道的點(diǎn)點(diǎn)滴滴多多多多多</div>
     <div id="inner" class="inner">
          <a href="">css中的常見單位</a>
          <p class="text">em和rem有哪些不同</p>
      </div>
</div>
  • .outerfont-size2em,我們沒有給它以上的父容器設(shè)置font-size,所以它的font-size16px*2=32px,但是我們想知道.textfont-size就比較復(fù)雜了16px*2*0.75*0.75=18px。
  • 如何解決這問題呢?這里css3引入了 rem的概念,與em非常相似,最重要的不同是,不論在那一級(jí)元素上1個(gè)rem都等于跟元素htmlfont-size,這樣不僅具有em的優(yōu)點(diǎn),還不會(huì)造成混亂,不論html結(jié)構(gòu)嵌套多復(fù)雜我們都能輕松換算出當(dāng)前元素的font-size對(duì)應(yīng)多少個(gè)px。
<div style="font-size: 1.5rem; width: 5rem;background-color: #797979;">1.5rem;</div>
html{
        font-size: 20px;
 }
  • 上面這段代碼中,即使我們給當(dāng)前元素設(shè)定了font-size:1.5rem;但不影響我們width:5rem的計(jì)算,當(dāng)前元素的寬度還是以1rem=20px;計(jì)算20*5=100px;
  • 這里有一點(diǎn)建議,給<html>根元素添加如下的樣式:
html{
        font-size:62.5%;
}
  • 這樣一來根元素<html>font-size就變成16px*62.5%=10px,也就是 1rem=10px。這樣方便我們計(jì)算(與設(shè)計(jì)稿對(duì)照)

vw和vh

名稱 解釋
vw 1vw = 視口寬度的1%
vh 1vw = 視口高度的1%
vmin 選取vw和vh中最小的那個(gè)
vmax 選取vw和vh中最大的那個(gè)
  • 這里解釋一下視口
    這里視口的寬度和高度不是指屏幕的高寬,更不是瀏覽器的高寬,而是瀏覽器內(nèi)部的可視區(qū)域大小,即window.innerWidth/window.innerHeight
  • 目前使用的場(chǎng)景并不多,因?yàn)槭褂冒俜直纫部梢詫?shí)現(xiàn)相同的效果,我個(gè)人在制作幻燈片效果時(shí),會(huì)選擇使用vw,vh,比較方便。

先寫這些有時(shí)間再更

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容