1.背景介紹
了解css樣式表的繼承御滩,我們先從文檔樹(HTML DOM)開始,文檔樹由HTML元素組成,文檔樹和家族樹類似悲伶,也有祖先艾恼、后代住涉、父親麸锉、孩子、兄弟
css樣式表繼承指的是舆声,特定的css屬性向下傳遞到后代元素
2.知識(shí)剖析
對(duì)于一些可以繼承的屬性花沉,可以只設(shè)置上級(jí)的CSS樣式表樹形柳爽,子級(jí)(下級(jí))不用設(shè)置,會(huì)自動(dòng)繼承此CSS屬性碱屁,可以減少CSS代碼磷脯,便于維護(hù)。
那么有哪些屬性可以自動(dòng)繼承呢
有繼承性的屬性:
1娩脾、字體系列屬性
font:組合字體
font-family:規(guī)定元素的字體系列
font-weight:設(shè)置字體的粗細(xì)
font-size:設(shè)置字體的尺寸
font-style:定義字體的風(fēng)格
font-variant:設(shè)置小型大寫字母的字體顯示文本赵誓,這意味著所有的小寫字母
均會(huì)被轉(zhuǎn)換為大寫,但是所有使用小型大寫字體的字母與其余文本
相比柿赊,其字體尺寸更小俩功。
font-stretch:允許你使文字變寬或變窄。所有主流瀏覽器都不支持碰声。
font-size-adjust:為某個(gè)元素規(guī)定一個(gè) aspect 值诡蜓,字體的小寫字母 "x"
的高度與"font-size" 高度之間的比率被稱為一個(gè)字體的 aspect 值。
這樣就可以保持首選字體的 x-height胰挑。
有繼承性的屬性:
2蔓罚、文本系列屬性
text-indent:文本縮進(jìn)
text-align:文本水平對(duì)齊
text-shadow:設(shè)置文本陰影
line-height:行高
word-spacing:增加或減少單詞間的空白(即字間隔)
letter-spacing:增加或減少字符間的空白(字符間距)
text-transform:控制文本大小寫
direction:規(guī)定文本的書寫方向
color:文本顏色
有繼承性的屬性:
3、元素可見性:visibility
4瞻颂、表格布局屬性:caption-side
5豺谈、列表屬性:list-style-type
list-style-position、list-style
6蘸朋、設(shè)置嵌套引用的引號(hào)類型:quotes
7核无、光標(biāo)屬性:cursor
8、還有一些不常用的藕坯;speak团南,page等屬性,暫不講解炼彪;
所有元素可以繼承的屬性:
1吐根、元素可見性:visibility
2、光標(biāo)屬性:cursor
內(nèi)聯(lián)元素可以繼承的屬性:
1辐马、字體系列屬性
2拷橘、除text-indent、text-align之外的文本系列屬性
塊級(jí)元素可以繼承的屬性:
text-indent喜爷、text-align
無繼承的屬性
1冗疮、display
2、文本屬性:vertical-align
3檩帐、盒子模型的屬性:寬度术幔、高度、內(nèi)外邊距湃密、邊框等
4诅挑、背景屬性:背景圖片四敞、顏色、位置等
5拔妥、定位屬性:浮動(dòng)忿危、清除浮動(dòng)、定位position等
6没龙、生成內(nèi)容屬性:content铺厨、counter-reset、counter-increment
7硬纤、輪廓樣式屬性:outline-style努释、outline-width、outline-color咬摇、outline
8伐蒂、頁(yè)面樣式屬性:size、page-break-before肛鹏、page-break-after
繼承中比較特殊的幾點(diǎn)
1逸邦、a 標(biāo)簽的字體顏色不能被繼承
1、<h1>-<h6>標(biāo)簽字體的大下也是不能被繼承的
因?yàn)樗鼈兌加幸粋€(gè)默認(rèn)值
3.常見問題
問題1:多種樣式混合應(yīng)用的優(yōu)先級(jí)問題
問題2:font-size的繼承問題
4.解決方案
當(dāng)有多個(gè)規(guī)則都能應(yīng)用于同一個(gè)元素時(shí)在扰,權(quán)重越高的樣式將被優(yōu)先采用缕减。
”important>內(nèi)聯(lián) >ID>類 >標(biāo)簽 |偽類|屬性選擇 >偽對(duì)象 >繼承 >通配符”
font-size是可以被繼承的。但是它的方式有一些特別芒珠。Font-size的子類繼承的不是實(shí)際值桥狡,而是計(jì)算后的值。
下面是一個(gè)例子
<p>字體大小屬性<em>繼承特性</em>的演示代碼</p>
p { font-size:14px;}
由于瀏覽器默認(rèn)字體大小是16px皱卓,而p定義了字體14px裹芝,所以em繼承了p的字體大小屬性,也是14px娜汁;
p { font-size:85%;}
瀏覽器默認(rèn)字體大小16px,而p定義了字體大小(16px X 85% = 13.6px). 13.6px這個(gè)值將被子元素em繼承嫂易。
p { font-size:0.85em;}
瀏覽器默認(rèn)字體大小16px,而p定義了字體大小(16px X 0.85 = 13.6px). 13.6px這個(gè)值將被子元素em繼承。
body { font-size: 85%; }
h1 { font-size: 200%; }
h2 { font-size: 150%; }
瀏覽器默認(rèn)字體大小16px,而body定義了字體大小(16px X 85% = 13.6px). 如果子元素沒有指定字體大小13.6px這個(gè)值將被子元素繼承掐禁。
5.編碼實(shí)戰(zhàn)
6.擴(kuò)展思考
inherit關(guān)鍵字
inherit 關(guān)鍵字指定一個(gè)屬性應(yīng)從父元素繼承它的值怜械。
inherit 關(guān)鍵字可用于任何 HTML 元素上的任何 CSS 屬性。
除了inherit關(guān)鍵字外傅事,還有什么其他的關(guān)鍵字繼承特性
在css3中新增加了幾個(gè)繼承特性
initial:用來設(shè)置css屬性值為它的默認(rèn)值缕允,也就是瀏覽器默認(rèn)設(shè)置的css屬性值。
unset:一個(gè)屬性定義了unset值蹭越,如果該屬性是默認(rèn)繼承屬性障本,該值等同于inherit,如果該屬性是非繼承屬性般又,該值等同于initial
all: [ inherit | initial | unset ]:? 最后彼绷,all是一個(gè)屬性而不是一個(gè)值。你可以指定inherit茴迁、initial或者unset來影響所有的屬性寄悯,例如重置所有CSS屬性為瀏覽器默認(rèn):
7.參考文獻(xiàn)
參考二:繼承的技巧
8.更多討論
1.關(guān)鍵字是否能通用:
關(guān)鍵字可以強(qiáng)制更改是否繼承屬性,不管該屬性能不能繼承堕义,設(shè)置inherit和強(qiáng)制繼承父元素的某些屬性猜旬;
鳴謝
感謝大家觀看!