生成內(nèi)容有一種特殊形式,即引號(hào),網(wǎng)站建設(shè)提供了一種有效的方式來管理引號(hào)及其嵌套行為。由于提供了open-quote等成對(duì)的content值以及屬性quotes,使得生成引號(hào)的管理成為可能。
quotes
值:[<string><string>]+ | none | inherit
初始值:取決于具體的用戶代理
應(yīng)用于:所有元素
繼承性:有
計(jì)算值:根據(jù)指定確定
研究值的語法時(shí)可以發(fā)現(xiàn),除了關(guān)鍵字none和inherit外,唯一合法的值是一對(duì)或多對(duì)串。在一對(duì)串中,前一個(gè)串定義了開始引號(hào)(open-quote),第二個(gè)串定義了結(jié)束引號(hào)(close-quote)。因此,以下兩個(gè)聲明中僅第一個(gè)合法:
quotes:'"'"'"./* valid */
quotes:'"';/* NOT VALID */
串本身是引號(hào)時(shí),也可以用引號(hào)將其包圍,第一個(gè)規(guī)則就展示了這樣一種方法。雙引號(hào)可以由單引號(hào)包圍,反之亦然。
下面來看一個(gè)簡單的例子。假設(shè)創(chuàng)建了一個(gè)XML格式,存儲(chǔ)最常用的引用列表。以下是列表中的一項(xiàng):
<quotatidn>
<quote>I hate quotations.</quote>
<quotee>Ralph Waldo Eraerson</quotee>
</quotation>
要用一種有意義的方法表示數(shù)據(jù),網(wǎng)頁設(shè)計(jì)人員可以采用以下規(guī)則,其結(jié)果見圖12-20所示:
值open-quote和close-quote用于插入合適的引號(hào)符號(hào)(因?yàn)椴煌Z言有不同的引號(hào))。它們使用quotes值來確定如何工作。因此,quotation以一個(gè)雙引號(hào)開始,并以一個(gè)雙引號(hào)結(jié)束。
如果想使用“彎引號(hào)”而不是普通的直引號(hào)(這在大多數(shù)打印媒體中很常見),quote 規(guī)則要寫作:
quote {quotes:'\201C''\201D';}
這里使用了“彎引號(hào)”的十六進(jìn)制Unicode值,如果應(yīng)用到前面的quotation, Emerson 的引用會(huì)包圍在彎引號(hào)中,而不像圖12-20中所示那樣包圍在直引號(hào)中。
利用quotes,只要網(wǎng)頁設(shè)計(jì)人員愿意,可以定義任意多層嵌套引用模式。例如,在英語中,一種常用的做法是先以雙引號(hào)開頭,在其中嵌套的引用使用單引號(hào)。通過以下規(guī)則,就可以利用“彎引號(hào)”做到這一點(diǎn):
quotation: display: block;}
quote {quotes:'\201C''\201D''\2018''\2019';}
quote:before, q:before{content: open-quote;}
quote:after, q:after {content: close-quote;}
應(yīng)用到以下標(biāo)記時(shí),這些規(guī)則的效果如圖12-21所示:
<quotation>
<quote> In the beginning, there was nothing. And God said:<q>Let there be light!</q> And there was still nothing, but-you could see it.</quote>
</quotation>
如果引號(hào)的嵌套層次大于已定義的引號(hào)對(duì)數(shù),最后一對(duì)引號(hào)將重用于更深層次的嵌套。因此,如果向圖丨2-21所示的標(biāo)記應(yīng)用以下規(guī)則,內(nèi)層引用將與外層引用一樣使用雙引號(hào):
quote {quotes:'\201C''\201D';}
利用生成引號(hào),還能實(shí)現(xiàn)另外一種常見的排版效果。如果有多段引用文本,通常會(huì)忽略毎一段的結(jié)束引號(hào)(close-quote),而只顯示開始引號(hào),只是最后一段例外,可以使用no-close-quote值達(dá)到這個(gè)效果:
blockquote (quotes:'"' '"' "'" '"' '"' '"';}
blockquote p:before {content: open-guote;}
blockquote p:after {content: no-close-quote;}
利用這個(gè)規(guī)則,每一段的開始處會(huì)有一個(gè)雙引號(hào),不過沒有結(jié)束引號(hào)。最后一段也是如此,所以如果想為最后一段增加一個(gè)結(jié)束引號(hào),需要為最后一段指定類(class),并為其:after內(nèi)容聲明一個(gè)close-quote。
這個(gè)值很重要,因?yàn)檫@樣可以使引用嵌套層次遞而不必真正生成一個(gè)符號(hào)。正因如此,在第三段之前,每個(gè)段落都以一個(gè)雙引號(hào)開始,而不是交替使用雙引號(hào)和單引號(hào)。no-close-quote在各段的最后結(jié)束了引用嵌套,因此每一段都從相同的嵌套層次開始。
這很重要,正如網(wǎng)站建設(shè)規(guī)范所指出的,"引用深度不依賴于源文檔或格式化結(jié)構(gòu)的嵌套”。換句話說,開始一個(gè)引用層次時(shí),所有元素都有相同的嵌套層次,直到遇到一個(gè)close-quote,此時(shí)引用嵌套層次減1。
為保證完備,還有一個(gè)no-open-quote關(guān)鍵字,其效果與no-close-quote對(duì)稱。這個(gè)關(guān)鍵字會(huì)讓引用嵌套層次增1,但不生成符號(hào)。