原來命名可以這樣的
前一段時間,在某一站點(diǎn)看到了這樣的內(nèi)容:
"這也可以?"是我對此的第一印象。不過,稍作調(diào)查知道了,這樣寫確實(shí)是有效的。此外,這個?_?的符號表情,看起來是不是相當(dāng)有存在感?再看看搭配的css屬性,display: none !important;即定義元素一定不顯示,是不是也非常符合這個表情想要表達(dá)的意思?
只要遵循css語法,就可以很好地應(yīng)用這種不常見的命名。
命名字符的規(guī)定
英文單詞的組合你一定很熟悉,例如.top_nav用來表示頂部導(dǎo)航,不僅用了合法的選擇符,而且也很符合語義化的要求。
另外,你應(yīng)該也知道,選擇符命名的開頭字符,不可以是數(shù)字,例如.3-column不是合法的選擇符。使用不合法的選擇符的后果是,對應(yīng)的css樣式規(guī)則會因?yàn)檫x擇符無法正確解析,而變?yōu)闊o效。
事實(shí)上,css語法對于命名字符有更多的規(guī)定。以下是W3C關(guān)于命名標(biāo)識符的說明中的內(nèi)容:
In CSS, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [a-zA-Z0-9] and ISO 10646 characters U+00A0 and higher, plus the hyphen (-) and the underscore (_); they cannot start with a digit, two hyphens, or a hyphen followed by a digit. Identifiers can also contain escaped characters and any ISO 10646 character as a numeric code.
意思是說,css中允許使用的命名字符,包括大小寫英文字母、數(shù)字、連字符-、下劃線_及其他ISO 10646字符集(等同于Unicode)中的字符。同時,起始字符部分不能是數(shù)字,或連續(xù)2個-,或1個-后接1個數(shù)字。此外,允許使用轉(zhuǎn)義字符和任意ISO 10646字符的數(shù)字代碼。
經(jīng)過測試,IE6對起始字符是下劃線_和單個連字符-的情況,也會認(rèn)定樣式規(guī)則無效。
字符轉(zhuǎn)義
可以看出,命名允許使用的字符其實(shí)是非常多的。但是,有一個地方需要注意,就是特殊字符。特殊字符是指在css語法中,被認(rèn)定用來表示特定含義的字符(相當(dāng)于編程語言中的關(guān)鍵字)。例如,...這樣的class命名是不合法的,因?yàn)?是css選擇符中表示class的字符,因此不允許直接用在命名中(...這位沉默著的class名你感覺如何?)。
css中的特殊字符包含:!, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, /, ], ^,`, {, |, }, 和~。
這個時候,想要在命名中也加入這些特殊字符,就要使用字符轉(zhuǎn)義(character escape)。字符轉(zhuǎn)義通過反斜杠/實(shí)現(xiàn),在css選擇符中,你可以通過在特殊字符前加/的方法,取消特殊字符的特定含義,使其可以正確地被用于命名。例如,特殊字符#就可以用/#來表示。
反斜杠/的作用還不只如此。前面說到,任意ISO 10646字符都可以使用。按照ISO 10646的定義,所有的字符都可以用十六進(jìn)制的代碼來表示(尤其是一些不易直接輸入的字符需要這樣表示)。css語法中,以反斜杠/開頭,后接最多6位十六進(jìn)制數(shù)字,即構(gòu)成一個ISO 10646字符的代碼。這和直接輸入ISO 10646字符是一樣的,但由于形式上是代碼,因此是最可靠的。
取消特殊字符的特定含義,除了前邊的直接在前邊加/的寫法外,還可以用ISO 10646代碼。比如#也可以用/23或者/000023表示。請注意,如果代碼不滿6位(前面幾位是0),一定要在末尾留一個空格,這才能組成一個正確的ISO 10646代碼(這個空格是分隔標(biāo)識用,算作代碼的一部分,不會引發(fā)選擇符中的特殊含義)。如果不想有這個空格,請使用完整的6位十六進(jìn)制代碼。
比如,下面是一個合法的命名示例。html:
新聞熱點(diǎn)
疑難解答
圖片精選