CSS的三大特性總結(jié)(深入理解css權(quán)重)

【目錄】

  • css的三大特性
    • 層疊性
      • 特性說(shuō)明
      • 原理
      • DEMO
    • 繼承性
      • 優(yōu)缺點(diǎn)
      • 重點(diǎn)
      • DEMO
        • html代碼
        • css代碼
    • 優(yōu)先級(jí)
      • css特殊性(權(quán)重Specificity)
      • 計(jì)算規(guī)則
      • 總結(jié)
      • DEMO

層疊性

CSS(Cascading Style Sheets)又稱為層疊樣式表胸懈,所以這個(gè)第一個(gè)特性就是層疊性实昨。

要說(shuō)層疊性就要先明確一個(gè)定義:樣式?jīng)_突 膘滨。因?yàn)閷盈B性就是解決樣式?jīng)_突的問(wèn)題的锹安。

特性說(shuō)明

樣式?jīng)_突 是指一個(gè)標(biāo)簽指定了相同樣式同值的情況。一般情況器净,如果出現(xiàn)樣式?jīng)_突尖淘,會(huì)按照書(shū)寫(xiě)順序最后的為準(zhǔn)

原理

這種特性的原理與瀏覽器的渲染原理有關(guān):

一般打開(kāi)網(wǎng)頁(yè)倡勇,會(huì)先下載文檔內(nèi)容逞刷,加載頭部的樣式資源嘉涌,然后按照從上而下,自外而內(nèi)的順序渲染DOM內(nèi)容夸浅。

所以在運(yùn)行的過(guò)程中仑最,上面的樣式先執(zhí)行,下面的樣式元素會(huì)將上面的層疊掉 帆喇。

DEMO

下面看一個(gè)小例子:

一個(gè)div警医,在head標(biāo)簽里面添加這個(gè)樣式

<style>
  div{
    width: 300px;
    height: 150px;
    background-color: red;
    background-color: blueviolet;
    color:pink;
    color:#fff;
    font-size: 30px;
    font-size: 20px;
    text-align: center;
    text-align: right;
  }
  div{
    color:yellow;
  }
</style>

然后會(huì)顯示什么呢?

css1.jpg

可能到這里顯示的不是很明白坯钦,那么F12審查元素看一下:

cssstyle.jpg

結(jié)論 :無(wú)論在同一個(gè)div中還是不在同一個(gè)div中预皇,后面的樣式將前面的層疊掉了,所以這就是css的層疊性婉刀。

繼承性

所謂 繼承性 是指書(shū)寫(xiě)css樣式表時(shí)吟温,字標(biāo)簽會(huì)繼承父標(biāo)簽的某些樣式,有一些樣式是具有繼承性的突颊,想要設(shè)置一個(gè)可繼承的屬性鲁豪,只需將它應(yīng)用于父元素即可。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn) 缺點(diǎn)
繼承可以簡(jiǎn)化代碼律秃,降低css樣式的復(fù)雜性爬橡。 如果在網(wǎng)頁(yè)中所有的元素都大量使用繼承樣式,那么判斷樣式的來(lái)源就會(huì)很困難友绝。

重點(diǎn)

并不是所有的css屬性都可以繼承堤尾,對(duì)于字體、文本屬性等網(wǎng)頁(yè)中通用的樣式可以使用繼承迁客。例如:字體郭宝、字號(hào)、顏色掷漱、行距等可以在body元素中統(tǒng)一設(shè)置粘室,然后通過(guò)繼承影響文檔中所有文本。而有一些屬性就不具有繼承性:邊框卜范、外邊距衔统、內(nèi)邊距、背景海雪、定位锦爵、元素高屬性。

可繼承的(字體奥裸、文本屬性等) 不可繼承的
顏色险掀、font-開(kāi)頭、text-開(kāi)頭湾宙、line-開(kāi)頭的樟氢、white-space 邊框冈绊、外邊距、內(nèi)邊距埠啃、背景死宣、定位、高度
浮動(dòng)

下面來(lái)試驗(yàn)一下下碴开,第一行的來(lái)個(gè)大鍋燴看看:

DEMO

html代碼

<div class="father">哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
  <p>呵呵</p>
  <span>嘻嘻</span>
  <div class="son">嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿黑嘿嘿<p>哦~</p></div>
</div>

css代碼

.father{
  width: 300px;
  height: 200px;
  font-size: 20px;
  font-weight: 700;
  text-align: right;
  text-decoration: underline;
  line-height: 20px;
  background-color: green;
  color:greenyellow;
  margin: 5px;
  padding: 5px;
  position: relative;
}
.son{
  width: 90%;
  background-color: darkorange;
  position: absolute;
  bottom: 0;
  left: 0;
  color:#fff;
}

效果是什么呢毅该?

inherited.jpg

分析:

是不是很不明顯?用F12審查元素一下看看最里面的p元素潦牛,其中:

color屬性繼承自父親.son

font-size\font-weight\text-align\line-height\white-space繼承自.son的父親.father

可以看到下面繼承的元素顯示的顏色比較深鹃骂,沒(méi)有繼承的元素灰掉:

inherited1.jpg

優(yōu)先級(jí)

定義css樣式時(shí),經(jīng)常出現(xiàn)兩個(gè)或更多規(guī)則應(yīng)用在同一元素上罢绽,這時(shí)就會(huì)出現(xiàn)優(yōu)先級(jí)的問(wèn)題。

css特殊性(權(quán)重Specificity)

關(guān)于css權(quán)重静盅,我們需要一套計(jì)算公式去計(jì)算良价,這就是css特性。

元素 貢獻(xiàn)值
繼承蒿叠、* 0明垢,0,0市咽,0
每個(gè)標(biāo)簽 0痊银,0,0施绎,1
類溯革、偽類 0,0谷醉,1致稀,0
ID 1,0俱尼,0抖单,0
行內(nèi)樣式 1,0遇八,0矛绘,0
!important 無(wú)窮大
max-height、max-width覆蓋width刃永、height 大于無(wú)窮大
min-height货矮、min-width 大于max-height、max-width

計(jì)算規(guī)則

  1. 遇到有貢獻(xiàn)值的就進(jìn)行累加揽碘,例如:
    div ul li ---> 0,0,0,3
    .nav ul li ---> 0,0,1,2
    a:hover ---> 0,0,1,1
    .nav a ---> 0,0,1,1
    #nav p ---> 0,1,0,1
  2. 數(shù)位沒(méi)有進(jìn)位:
    0,0,0,5+0,0,0,5 = 0,0,0,10而不是0,0,1,0次屠,所以不會(huì)存在10個(gè)div能趕上一個(gè)類選擇器的情況 园匹。
  3. 權(quán)重不會(huì)繼承,所以父元素的權(quán)重再高也和子元素沒(méi)有關(guān)系
  4. 如果有!important那么相加的那些無(wú)論多高就不管用劫灶,如果有max-height/max-width那么!important不管用裸违,如果同時(shí)有min-height/min-widthmax-height/max-width,那么max-height/max-width的不管用本昏。

總結(jié)

min-height/min-width > max-height/max-width > !important > 行內(nèi)樣式 > ID選擇器 > 類選擇器供汛、屬性選擇器、偽元素和偽類選擇器 > 元素選擇器 > 通用選擇器

  1. 使用了涌穆!important聲明的規(guī)則怔昨;

  2. 內(nèi)嵌在HTML元素的style屬性里面的聲明;

  3. 使用了ID選擇器的規(guī)則

  4. 使用了類選擇器宿稀、屬性選擇器趁舀、偽元素和偽類選擇器的規(guī)則

  5. 使用過(guò)了元素選擇器的規(guī)則

  6. 只包含一個(gè)通用選擇器的規(guī)則

DEMO

  1. 給body指定樣式,a標(biāo)簽和h標(biāo)簽都不會(huì)改變
<!--css代碼-->
<style>
  body{
    font-size: 20px;
  }
</style>

<!--html代碼-->
<body>
  <div>正常文本</div>
  <div>正常文本</div>
  <div>正常文本</div>
  <p>正常文本</p>
  <p>正常文本</p>
  <p>正常文本</p>
  <p>正常文本</p>
  <a href="#">連接文本</a>
  <a href="#">連接文本</a>
  <a href="#">連接文本</a>
  <h1>標(biāo)題名稱</h1>
  <h1>標(biāo)題名稱</h1>
  <h1>標(biāo)題名稱</h1>
</body>

效果:

demo1.jpg

因?yàn)閍標(biāo)簽和h標(biāo)簽都是特殊的標(biāo)簽祝沸,都有自己的樣式矮烹,要想改變,就應(yīng)該在其元素中定義將元素的樣式層疊掉罩锐。

body{
  font-size: 20px;
}
a{
  color: #000;
  text-decoration: none;
  font-size: 20px;
}
h1{
  font-size: 20px;
  font-weight: 400;
}

效果:

demo2.jpg
  1. 面試題一:

    面試寶典

    1. 先找到影響文字的最里面的盒子
    2. 然后計(jì)算權(quán)重
    3. 如果權(quán)重一樣奉狈,看層疊性
<div id="father" class="c1">
  <p id="son" class="c2">
    試問(wèn)這行文字是什么顏色?
  </p>
</div>

<style type="text/css">
  #father #son{  /*0,2,0,0*/
    color:blue;
  }
  
  #father p.c2{  /*0,1,1,1*/
    color:black;
  }
  
  div.c1 p.c2{  /*0,0,2,2*/
    color:red;
  } 
  
  #father{  /*0,0,0,0*/
    color:green!important;
  }
</style>

<!--字體顏色是藍(lán)色-->
  1. 面試題二:
<style type="text/css">
  #father{  /*0,1,0,0*/
    color:red;
  }
  
  p{  /*0,0,0,0*/
    color:blue;
  }
</style>

<div id="father">
  <p>
    字體顏色是什么涩惑?
  </p>
</div>

<!--字體顏色是藍(lán)色-->
  1. 面試題三:(權(quán)重一樣仁期,層疊性就有用了)
<div id="box1" class="c1">
  <div id="box2" class="c2">
    <div id="box3" class="c3">
      文字
    </div>
  </div>
</div>

<style type="text/css">
  .c1 .c2 div{  /*0,0,2,1*/
    color:blue;
  }
  
  div #box3{  /*0,1,0,1*/
    color:green;
  }
  
  #box1 div{  /*0,1,0,1*/
    color:yellow;
  }
</style>

<!--字體顏色是黃色-->
  1. max-width覆蓋width
div{
  width: 480px!important;
  height: 300px;
  background-color: blueviolet;
  max-width: 200px;
}

<div></div>
demo3.jpg
  1. min-width覆蓋max-width,如果這兩個(gè)發(fā)生沖突竭恬,最大的比最小的還要小跛蛋,那么以哪個(gè)為準(zhǔn)?
div{
  max-width: 300px!important;
  height: 300px;
  background-color: blueviolet;
  min-width: 500px;
}

<div></div>
demo4.jpg

version1.0 —— 2018/5/15痊硕,首次創(chuàng)建CSS的三大特性總結(jié)
?burning_韻七七

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末问芬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子寿桨,更是在濱河造成了極大的恐慌此衅,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亭螟,死亡現(xiàn)場(chǎng)離奇詭異挡鞍,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)预烙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)墨微,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人扁掸,你說(shuō)我怎么就攤上這事翘县∽钣颍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵锈麸,是天一觀的道長(zhǎng)镀脂。 經(jīng)常有香客問(wèn)我,道長(zhǎng)忘伞,這世上最難降的妖魔是什么薄翅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮氓奈,結(jié)果婚禮上翘魄,老公的妹妹穿的比我還像新娘。我一直安慰自己舀奶,他們只是感情好暑竟,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著育勺,像睡著了一般光羞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怀大,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音呀闻,去河邊找鬼化借。 笑死,一個(gè)胖子當(dāng)著我的面吹牛捡多,可吹牛的內(nèi)容都是我干的蓖康。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼垒手,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蒜焊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起科贬,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤泳梆,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后榜掌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體优妙,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年憎账,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了套硼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胞皱,死狀恐怖邪意,靈堂內(nèi)的尸體忽然破棺而出九妈,到底是詐尸還是另有隱情,我是刑警寧澤雾鬼,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布萌朱,位于F島的核電站,受9級(jí)特大地震影響呆贿,放射性物質(zhì)發(fā)生泄漏嚷兔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一做入、第九天 我趴在偏房一處隱蔽的房頂上張望冒晰。 院中可真熱鬧,春花似錦竟块、人聲如沸壶运。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蒋情。三九已至,卻和暖如春耸携,著一層夾襖步出監(jiān)牢的瞬間棵癣,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工夺衍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狈谊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓沟沙,卻偏偏與公主長(zhǎng)得像河劝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矛紫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案赎瞎? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,759評(píng)論 1 92
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font颊咬,text-align务甥,li...
    wzhiq896閱讀 1,760評(píng)論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font喳篇,text-align缓呛,li...
    love2013閱讀 2,316評(píng)論 0 11
  • 問(wèn):“落枕”怎么說(shuō)? 答:【寢違える】 相信大家都有睡落枕的經(jīng)歷杭隙,那種美妙的感覺(jué)僅次于“半夜腿抽筋”哟绊。而且如有可能...
    bravo1988閱讀 957評(píng)論 0 1
  • 看到這個(gè)標(biāo)題突然感覺(jué)好壓抑捌彼琛攀涵!剛剛看到小有的訂閱里沒(méi)有問(wèn)了,突然心好像變沉了洽沟。以故。。剛剛才記住你的名字的裆操,現(xiàn)在就離我...
    YJ小哥閱讀 168評(píng)論 0 0