2013-08-30 78 views
23

我認爲initial值會恢復最初渲染的樣式(如的內部樣式表應用)。什麼是在CSS中使用「初始」值?

實施例:

div.inline { 
    display: inline; 
} 

div.initial { 
    display: initial; 
} 

我期望的div.inline規則將在串聯模式下顯示<div class="inline">,並且div.initial規則將使用的一個blockdiv的原始顯示值顯示<div class="initial">

但是,當我探索這個,<div class="initial">顯示內聯。我錯了嗎?任何人都可以詳細說明這一點嗎?

+0

下面是初始值一個很好的解釋:http://stackoverflow.com/q/35689456/3597276 –

回答

42

initial value(未屬性)表示屬性的初始值,如在CSS規範定義:「在‘初始’關鍵字表示被指定爲屬性的初始值的指定值」因此,其含義取決於財產,但不取決於其他任何方面,例如而不是在瀏覽器或屬性所應用的元素上。所以它確實不是意味着瀏覽器默認。

例如,對於display屬性,initial總是裝置inline,因爲這是該屬性的指定初始值。在示例情況下,瀏覽器默認block,因爲元素爲div

因此,initial值的用處有限。由於誤解,其主要效果似乎是混淆了人們。一個可能的用例是color屬性,因爲它的初始值是依賴於瀏覽器的(大部分是黑色的,正如我們所知,但不一定)。對於它,initial意味着瀏覽器默認,因爲這是如何定義屬性。類似的用例是font-family:通過聲明font-family: initial,您得到瀏覽器的默認字體(可能取決於瀏覽器設置)。

由於缺乏對IE(甚至IE 10)的支持,有用性進一步受到限制。

+3

有一個非常常見的煩人用例,其中'initial'非常有用:當你以編程方式隱藏和取消隱藏某個元素時,即給它顯示:none,然後再次顯示它。這是因爲'display'有很多值,沒有'initial'沒有默認值。 jQuery已經這麼做了很多年了,像LESS,Stylus和SCSS這樣的預處理器使它更容易,但它在CSS中是正確的。但IE沒有限制它,特別是因爲其他人確實允許它。 – trysis

+0

對不起,被帶到那裏。當我感覺效率更高時,也許我會回答一個答案。 – trysis

+4

@trysis:'display:initial'是「disply:inline」的同義詞,甚至可以在所有的情況下工作,這樣就不會給你多少錢。 – recursive

7

Source

初始CSS關鍵詞的屬性的初始值適用於一個元件。它在每個CSS屬性上都是允許的,並使得它指定的元素使用該屬性的初始值。

/* give headers a green border */ 
h2 { border: medium solid green } 

/* but make those in the sidebar use the value of the "color" property */ 
#sidebar h2 { border-color: initial; } 
<p style="color:red"> 
    this text is red 
     <em style="color:initial"> 
      this text is in the initial color (e.g. black) 
     </em> 
    this is red again 
</p> 
+0

謝謝回覆。那麼什麼是差異繼承和初始? – NkS

+1

'inherit'從父元素中獲取它的值。 –

相關問題