CSS3 繼承的技巧

類別: IT
標籤: css

稍不留意便會忽略掉級聯樣式表的特點。大多數開發者都知道inherit關鍵字,但有幾個新的CSS3繼承特性你可能不知道…

property: inherit;

inherit關鍵字代表“使用指定給父元素的所有值”。如果父元素中沒有明確的值定義,瀏覽器搜尋DOM樹直到找到相應的屬性。最終無法找到的話,它會使用瀏覽器的預設值,例如:

#myparent
{
	margin: 10px;
	border: 1px solid #000;
}

/* use the same border as the parent */
#myparent p
{
	border: inherit;
}

在實踐中是很少有必要使用inherit的。許多有用的屬性自動繼承,例如字型,字型大小,顏色,等等。

inheritis可以放心地使用。儘管IE6和IE7不支援,但你的設計不會因為這個而被破壞。

property: initial;

哦,一個新的CSS3關鍵詞!initial設定一個屬性為它的初始值——瀏覽器的預設定義值,例如:

body
{
	font-size: 0.5em;
}

/* reset paragraphs to 1em */
p
{
	font-size: initial;
}

它有用麼?可能吧,畢竟你不能確保所有瀏覽器有相同的預設值。

支援合理——Chrome,Firefox,Safari和Opera 15 +。IE下它不生效,而且我正在努力思考什麼情況下這將是一個災難性問題。

property: unset;

這是稍微不尋常的一個。unset使用時,它表現地就像有可繼承值存在時繼承了一樣。如果它找不到可繼承的值——比如,它是像box-shadow等不可繼承的屬性——它表現地好像繼承了瀏覽器的預設值。

話又說回來,我想不出太多使用unset的場景,目前對支援它的很少。

all: [ inherit | initial | unset ];

最後,all是一個屬性而不是一個值。你可以指定inherit、initial或者unset來影響所有的屬性,例如重置所有CSS屬性為瀏覽器預設:

#mywidget
{
	all: initial;
}

如果你新增了第三方控制元件且要避免頁面樣式衝突的話,這可能是一個可選的全域性CSS域。

不幸的是,目前為止你不能依靠跨瀏覽器的嚴格的一致性,然而,它依然是一個有用的特性。

CSS3 繼承的技巧原文請看這裡

推薦文章