CSS3 繼承的技巧

oschina發表於2013-10-29

  稍不留意便會忽略掉級聯樣式表的特點。大多數開發者都知道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域。

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

  原文地址:http://www.sitepoint.com/css3-inheritance-tips-tricks/

相關文章