<p>萬維網聯盟(<a href="http://www.php.cn/wiki/1550.html" target="_blank">W3C</a>) 使用了一套特別的語法來定義 CSS 的<a href="http://www.php.cn/wiki/169.html" target="_blank">屬性</a>值,能讓所有的 CSS 屬性都用。如果你曾經看過 CSS 規範,你可能已經看過這套文法了。就像 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">border-image-slice</pre><div class="contentsignin">登入後複製</div></div><p> 的語法 ,讓我們來看看:<br/><br/><'border-image-slice'> = [<number> | <percentage>]{1,4 } && fill?<br/>如果你不知道這些符號以及它們如何運作的話,這套文法可能非常難理解。然而,這值得花時間學習。如果你理解 W3C 是如何定義這些屬性值的,你就可以理解 W3C CSS 規範 中任一個了。 <br/><br/><img src="https://img.php.cn/upload/article/000/000/007/4677425410cd1e76461f7bcdcbdbfb20-0.jpg"/ alt="詳解CSS屬性值用法" ><br/><br/></p><h2>巴科斯範式</h2><p>#首先,我們來看看巴科斯範式(Backus-Naur <a href="http://www.php.cn/wiki/125.html" target="_blank">For</a>m ),因為這能幫我們理解W3C 的屬性值語法。 <br/><br/>Backus–Naur Form (BNF) 是用來描述電腦語言語法的正式符號集合。它被設計得很清晰,所以在語言如何表達方面不會造成二義或模糊。 <br/><br/>最初Backus-Naur 符號集有很多的擴展與變種在今天都在使用,包括 擴展巴科斯範式(EBNF)和擴充巴克斯範式(ABNF).<br/><br/>#一個BNF 規範是按下面的形式寫的一套規則:<br/><br/><symbol> ::= expression<br/>式子左邊通常是一個非終止符,跟著一個 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">::=</pre><div class="contentsignin">登入後複製</div></div><p> 符號,代表著「可被換為」。式子右邊 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">expression</pre><div class="contentsignin">登入後複製</div></div><p>由一或多個符號序列組成,這些符號序列被用來推導左邊符號的意義。 </p><p>BNF 規範從根本上說,「無論左側式子是什麼,也無論右側式子是什麼,左側的式子都能被右側的式子取代」。 <br/></p><h2>非終止符與終止符</h2><p>非終止符是指能在之後被替換或被分解的符號。在 BNF 中,非終止符通常都在尖角括號中,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><</pre><div class="contentsignin">登入後複製</div></div><p> 與 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">></pre><div class="contentsignin">登入後複製</div></div><p>。在下面的範例中,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><integet></pre><div class="contentsignin">登入後複製</div></div><p> 和 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><digit></pre><div class="contentsignin">登入後複製</div></div><p> 是非終止符。 <br/><<a href="http://www.php.cn/wiki/54.html" target="_blank">integer</a>> ::= <digit> | <digit><integer><br/>終止符表示這個值不能被取代或分解。在下面的例子中,所有的數值都是終止符。 <br/><digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9<br/></p><h2>CSS 屬性值語法</h2><h2><span style="max-width:90%"> #儘管W3C CSS 屬性值語法是基於BNF 的概念,它們也有一些不同。像 BNF 的是,它起始於一個非終止符。不像 BNF 的是,它也描述了用在</span><a href="http://www.php.cn/wiki/81.html" target="_blank" style="font-size: 14px; line-height: 1.76em;">表達式</a><span style="font-size: 14px; line-height: 1.76em;">中作為「成分值(component values)」的符號。 </span></h2><p>在下面的範例中,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><line-width></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 是非終止符,而 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><length></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">thin</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">medium</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>和 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">thick</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 是成分值。 <br/><br/><line-width> = <length> | thin | medium | thick<br/></p><h2>成分值</h2><p>有四種成分值:關鍵字、基本<a href="http://www.php.cn/code/5808.html" target="_blank">資料型別</a>、屬性資料型別與非資料資料型別。 <br/></p><h3>1. 關鍵字值</h3><p>關鍵字值不會被引號或尖角括號包圍。它們可直接作為屬性值。因為它們不能再被代替或分解,所以它們是終止符。在下面的範例中,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">thin</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>、</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">medium</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 和 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">thick</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 都是關鍵字值。這意味著它們在 CSS 中直接使用。 <br/><br/><line-width> = <length> | thin | medium | thick<br/></p><h3>2. 基本資料型別</h3><p>#基本資料型態定義了一些核心值,如 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><length></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 與 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><color></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>。它們是非終止符,因為它們可以被替換成真實的長度或顏色值。在下面的範例中 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><color></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 是基本資料型別。 <br/><'<a href="http://www.php.cn/wiki/894.html" target="_blank">background-color</a>'> = <color><br/></p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><color></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 可在我們的CSS 中,透過關鍵字,擴充關鍵字,RGB、 RGBA、HSL、HSLA,或 </p>#<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">transparent</pre><div class="contentsignin">登入後複製</div></div><p> 关键字,被替换为实际的颜色值。<br/>.example { background-color: red; }<br/>.example { background-color: honeydew; }<br/>.example { background-color: rgb(50%,50%,50%); }<br/>.example { background-color: rgba(100%,100%,100%,.5); }<br/>.example { background-color: hsl(280,100%,50%); }<br/>.example { background-color: hsla(280,100%,50%,0.5); }<br/>.example { background-color: transparent; }<br/></p><h3>3. 属性数据类型</h3><p>属性数据类型定义了属性实际的名字,是非终止符。它由包含在尖角括号中的属性名(包含引号)定义。在下面的例子中,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><'border-width'></pre><div class="contentsignin">登入後複製</div></div><p> 是属性数据类型。<br/><br/><'border-width'> = <line-width>{1,4}<br/>属性数据类型可作为属性直接出现在我们的 CSS 文件中。在下面的例子中,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">border-width</pre><div class="contentsignin">登入後複製</div></div><p> 属性给 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">.exmplate</pre><div class="contentsignin">登入後複製</div></div><p> 类定义了 2px 的边框。<br/>.example { border-width: 2px; }<br/></p><h3>4. 非属性数据类型</h3><p>非属性数据类型并不与属性分享同一个名字,是非终止符。然而,它定义了某个(些)属性的一些层面。例如,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><line-width></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 不是个属性,但它是一个定义了各种 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><border></pre><div class="contentsignin">登入後複製</div></div><p> 的数据类型。<br/><br/><line-width> = <length> | thin | medium | thick<br/><'border-width'> = <line-width>{1,4}<br/></p><h2>成分值组合器(Combinator)</h2><p>使用下面的五个方法,成分值能被分配至属性值组合器:<br/></p><h3>1. 相邻值</h3><p>成分值接连而写意味着所有这些值都必须按给定的顺序出现。在下面的例子中,语法列出了三个不同的值:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value1</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>, </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value2</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 与 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value3</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>。在 CSS 规则中,这三个值必须按照正确的顺序出现才算合法。<br/><br/>/* Component ar<a href="http://www.php.cn/wiki/1078.html" target="_blank">range</a>ment: <a href="http://www.php.cn/wiki/1483.html" target="_blank">all</a> in given order */<br/><'property'> = value1 value2 value3<br/>/* Example */<br/>.example { property: value1 value2 value3; }<br/></p><h3>2. 双与符号(&)</h3><p>分开两个或更多成分值的双与符号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">&&</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>)意味着,这些值必须出现,顺序任意。在下面的例子中,语法列出了两个值,由双与符号分开。下面的 CSS 规则说明了这两个值都得出现但可能是不同的顺序。<br/><br/>/* Component arrangement: all, in any order */<br/><'property'> = value1 && value2<br/><br/>/* Examples */<br/>.example { property: value1 value2; }<br/>.example { property: value2 value1; }<br/></p><h3>3. 单管道符号</h3><p>分开两个或更多成分值的单管道符号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">|</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>)意味着,这些值中只需一个值出现。在下面的例子中,语法列出了三个值,由单管道符号分开。在下面的 CSS 规则中展示了三个可能选项:<br/><br/>/* Component arrangement: one of them must occur */<br/><'property'> = value1 | value2 | value3<br/>/* Examples */<br/>.example { property: value1; }<br/>.example { property: value2; }<br/>.example { property: value3; }<br/></p><h3>4. 双管道符号</h3><p>分开两个或更多选择的双管道符号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">||</pre><div class="contentsignin">登入後複製</div></div><p>)意味着,这些值中一个或多个值必须出现,顺序任意。在下面的例子中,语法列出了三个值,由双管道符号分开。在你写 CSS 规则来匹配这个语法时,有大量可选的选择 —— 你可以使用一个,两个或三个值,以任意顺序。<br/><br/>/* Component arrangement: one or more in any order */<br/><'property'> = value1 || value2 || value3<br/><br/>/* Examples */<br/>.example { property: value1; }<br/>.example { property: value2; }<br/>.example { property: value3; }<br/>.example { property: value1 value2; }<br/>.example { property: value1 value2 value3; }<br/>...etc<br/></p><h3>5. 中括号</h3><p>包住了两个或更多选择的中括号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">[ ]</pre><div class="contentsignin">登入後複製</div></div><p>)意味着其中的成分值属于一个单独的组。在下面的例子中,语法列出了三个值,但其中两个在中括号中,所以它们属于一个组。所以在 CSS 规则中有两种选择:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value1</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 与 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value3</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 或 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value2</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 与 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value3</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>。<br/><br/>/* Component arrangement: a single grouping */<br/><'property'> = [ value1 | value2 ] value3<br/><br/>/* Examples */<br/>.example { property: value1 value3; }<br/>.example { property: value2 value3; }<br/></p><h2>成分值累乘器(Multipliers)</h2><p>使用下列 8 个方法之一,成分值也可被重用:<br/></p><h3>1. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">?</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div></h3><p>问号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">?</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>)表明其之前的类型,关键字或者组,是可选的且出现零次或一次。在下面的例子中,第二个成分值与一个逗号一起放在了中括号里。放置其后的问号意味着,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value1</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 必须出现,但我们也可使用 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value1</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 和 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value2</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>,以逗号分隔。<br/><br/>/* Component multiplier: zero or one <a href="http://www.php.cn/wiki/1268.html" target="_blank">time</a> */<br/><'property'> = value1 [, value2 ]?<br/><br/>/* Examples */<br/>.example { property: value1; }<br/>.example { property: value1, value2; }<br/></p><h3>2. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">*</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div></h3><p>星号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">*</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>)表明其之前的类型,关键字或者组出现零次或更多次。在下面的例子中,第二个成分值与一个逗号一起放在了中括号里。放置其后的星号意味着,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value1</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 必须出现,但我们也能随我们想地使用 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value2</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 任意次,每个成分值以逗号分隔。<br/><br/>/* Component multiplier: zero or more times */<br/><'property'> = value1 [, <value2> ]*<br/><br/>/* Examples */<br/>.example { property: value1; }<br/>.example { property: value1, <value2>; }<br/>.example { property: value1, <value2>, <value2>; }<br/>.example { property: value1, <value2>, <value2>, <value2>; }<br/>...etc<br/></p><h3>3. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">+</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div></h3><p>加号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">+</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>)表明其之前的类型,关键字或者组出现一次或更多次。在下面的例子中,放置于成分值之后的加号意味着该值必须被使用超过一次 —— 无需逗号。<br/><br/>/* Component multiplier: one or more times */<br/><'property'> = <value>+<br/><br/>/* Examples */<br/>.example { property: <value>; }<br/>.example { property: <value> <value>; }<br/>.example { property: <value> <value> <value>; }<br/>...etc<br/></p><h3>4. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">{A}</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div></h3><p>大括号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">{A}</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>)中包含一个数字表明其之前的类型,关键字或者组出现 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">A</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 次。在下面的例子中,value 的两个实例都必须根据出现才合法。<br/><br/>/* Component multiplier: occurs A times */<br/><'property'> = <value>{2}<br/><br/>/* Examples */<br/>.example { property: <value> <value> ; }<br/></p><h3>5. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">{A,B}</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div></h3><p>大括号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">{A,B}</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>)中包含由逗号分开的两个数字表明其之前的类型,关键字或者组出现至少 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">A</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 次,至少 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">B</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 次。在下面的例子中,最少一个、最多三个值肯能被用来定义该属性。这些成分值不以逗号分离。<br/><br/>/* Component multiplier: at least A and at most B */<br/><'property'> = <value>{1,3}<br/><br/>/* Examples */<br/>.example { property: <value>; }<br/>.example { property: <value> <value>; }<br/>.example { property: <value> <value> <value>; }<br/></p><h3>6. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">{A,}</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div></h3><p>在 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">{A,}</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 中 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">B</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 被省去了,这意味着至少有 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">A</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 次重复,而没有上限。在下面的例子中,至少需要使用一个成分值,但也可以额外使用任意数量的成分值值。这些成分值不以逗号分离。<br/><br/>/* Component multiplier: at least A, with no upper limit */<br/><'property'> = <value>{1,}<br/><br/>/* Examples */<br/>.example { property: <value>; }<br/>.example { property: <value> <value>; }<br/>.example { property: <value> <value> <value> ; }<br/>...etc<br/></p><h3>7. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">#</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div></h3><p>井号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">#</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>)表明其之前的类型,关键字或者组出现一次或多次。在下面的例子中,一个或多个成分值可能被使用,这些成分值以逗号分离。<br/><br/>/* Component multiplier: one or more, separated by commas */<br/><'property'> = <value>#<br/><br/>/* Examples */<br/>.example { property: <value>; }<br/>.example { property: <value>, <value>; }<br/>.example { property: <value>, <value>, <value>; }<br/>...etc<br/></p><h3>8. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">!</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div></h3><p>一个组后的感叹号(</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">!</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>)意味着该组是必须的且产生至少一个值。在下面的例子中,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value1</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 是必须的,以及一个来自与由 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value2</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 与 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value3</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 组成的组的值。该属性只有两个属性值;它们是,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value1</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>与 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value2</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 或 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value1</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 与 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">value3</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>。<br/><br/>/* Component multiplier: <a href="http://www.php.cn/wiki/136.html" target="_blank">require</a>d group, at least one value */<br/><'property'> = value1 [ value2 | value3 ]!<br/><br/>/* Examples */<br/>.example { property: value1 value2; }<br/>.example { property: value1 value3; }<br/></p><h2>一个例子:<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><'text-shadow'></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div> 语法</h2><p>让我们把 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><'text-shadow'></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 当作例子观察一番。这是它在规范里的定义:<br/><br/><'text-shadow'> = none | [ <length>{2,3} && <color>? ]#<br/>我们可以拆分这些符号:<br/></p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">|</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 表明我们可以使用关键字 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">none</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 或者一个组<br/></p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">#</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 表明我们可以使用这个组一次或多次,以逗号分割<br/><br/>在组中,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">{2,3}</pre><div class="contentsignin">登入後複製</div></div><p> 表明我们可以使用 2 或 3 个长度值<br/></p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">&&</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 意味着我们必须包括所有值,但顺序可以任意<br/><br/>有点棘手的是,</p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;"><color></pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> 后有一个 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">?</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p> ,这意味着其可能出现零次或一次。<br/><br/>用简单的话讲,这也可以被写成:<br/><br/></p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">指明了 none 或 一个或多个由逗号分离的组,其中包含了二到三个长度值与一个可选的颜色值。长度值与可选的颜色值可以以任意顺序编写。</pre><div class="contentsignin">登入後複製</div></div><p>这意味着我们能够以很多不同的方式来写 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">text-shadow</pre><div class="contentsignin">登入後複製</div></div><p> 属性的值。例如,可以设置其为 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">none</pre><div class="contentsignin">登入後複製</div></div><div class="contentsignin">登入後複製</div></div><p>:<br/><br/>.example { text-shadow: none; }<br/>我们也可以只写两个长度值,这意味着我们将设置阴影水平与竖直方向的便宜,但不会有模糊半径或者颜色值。<br/><br/>因为没有定义模糊半径,将会使用初始值 </p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">0</pre><div class="contentsignin">登入後複製</div></div><p>;所以,该阴影的边缘会很锋利。由于没有定义颜色,所以阴影将使用文本的颜色。<br><br>.example { text-shadow: 10px 10px; }<br>如果我们使用了三个长度值,我们将会同时定义阴影的水平与竖直方向的偏移和模糊半径。<br><br>.example { text-shadow: 10px 10px 10px; }<br>我们也可以加入颜色,且颜色可以出现在 2 或 3 个长度值的前面或后面。在下面的例子中,red 值可以放在任一长度值的后面。<br><br>.example { text-shadow: 10px 10px 10px red; }<br>.example { text-shadow: red 10px 10px 10px; }<br>最后,我们也能包含多个<a href="http://www.php.cn/code/6103.html" target="_blank">文本阴影</a>,写作以逗号分隔的组。阴影效果将从前至后分层应用:第一个阴影在最顶层,<a href="http://www.php.cn/java/java-alibaba-qita.html" target="_blank">其它</a>的层在其后。阴影不能覆盖在文本上。在下面的例子中,红色阴影将在绿黄色阴影的顶上。<br><br>.example {<br> text-shadow:<br> 10px 10px red,<br> -20px -20px 5px lime;<br>}<br></p>
<h2>结论</h2>
<p>如果你以写 CSS 为生,了解如何正确地写合法的 CSS 属性值很重要。一旦你了解了不同的值是如何被组合或累乘的,CSS 属性值语法就变得非常容易理解了。然后看 CSS 的规范与写合法的 CSS 都会变得更容易了。<br><br>如果像拓展阅读,看看下列的网站吧:<br><br>“Value Definition Syntax” in “CSS Values and Units <a href="http://www.php.cn/code/8212.html" target="_blank">Module</a> Level 3”, W3C<br><br>“CSS Reference,” Mozilla Developer Network<br><br>“How to Read W3C Specs,” J. David Eisenberg, A <a href="http://www.php.cn/wiki/1059.html" target="_blank">List</a> Apart</p>
<!--<p class='doc-content-pic doc-pic'><img src="https://img.php.cn/upload/article/000/000/007/4677425410cd1e76461f7bcdcbdbfb20-1.jpg" / alt="詳解CSS屬性值用法" ></p>-->
以上是詳解CSS屬性值用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!