讓隊友死于最基礎(chǔ)的知識點确买,是我們畢生的向往斤讥。
——魯迅沒說過
一本正經(jīng)的胡寫代碼,不至于用來陷害隊友湾趾,更重要的是防止隊友滑自己芭商。
發(fā)出一聲屬于反派的爽朗笑聲(破音)
先來看一段HTML代碼
<div class="1-d" ></div>
有部分 HTML 和 CSS 的書或者網(wǎng)上有些文章會說,元素上的 id 和 class 是不能以數(shù)字開頭的搀缠。
有部分文章也會說铛楣,HTML 可以支持 id 和 class 以數(shù)字開頭,但 css 不支持艺普。
我呸~
請看下面的 CSS 代碼(要結(jié)合上面的 HTML 代碼使用)
/* 注意:.\31 后面有一個空格 */
.\31 -d {
width: 100px;
height: 100px;
background: steelblue;
}
然后再打開瀏覽器看看效果簸州。
一個寬高都為 100px、藍色的 div 出現(xiàn)了歧譬。不信可以自己復(fù)制代碼試試看岸浑。
劃重點!
CSS 類名選擇器 和 ID選擇器 并不是不能以數(shù)字開頭瑰步,而是不能直接寫數(shù)字矢洲,需要將數(shù)字轉(zhuǎn)義一下才能使用。
之所以出現(xiàn)這么奇怪的表示方式(1 = \31 + 空格)缩焦,是因為 \31 外加空格是 CSS 字符 “1” 的十六進制轉(zhuǎn)碼读虏。而 31 就是字符串 1 的Unicode 值责静。
可以用 JS 代碼輸出這個值
console.log('1'.charCodeAt().toString(16)); // 輸出 31
對應(yīng)的,0是30掘譬,9是39泰演,以此類推(沒有10、11葱轩、12...)睦焕。
當(dāng)然,\31 外加空格 屬于簡寫靴拱,這種寫法會有一點弊端垃喊,稍后說到。
更加專業(yè)的寫法(瞎寫也要有個態(tài)度)
/* 注意:.\000031 后面不需要加空格 */
.\000031-d {
width: 100px;
height: 100px;
background: steelblue;
}
在31前用4個0補全袜炕,這樣 \31 后面就不用加空格了本谜。
簡寫的弊端
如果選擇器出現(xiàn)了父子關(guān)系,則需要敲2個空格偎窘。
<style>
/* 注意:.\31 后面有2個空格 */
.\31 span {
display: block;
width: 100px;
height: 100px;
background: steelblue;
}
</style>
<div class="1">
<span></span>
</div>
這時乌助,如果使用了CSS壓縮工具,或者是像一些框架提供的腳手架打包項目陌知,很有可能會把工具認(rèn)為多余的空格去掉他托,變成一個空格。這就坑自己了仆葡。
所以還是建議用專業(yè)的寫法去書寫赏参。
當(dāng)然,能不寫這種代碼就盡量不要寫啦沿盅,畢竟自己也不好受把篓。
同理,不止數(shù)字腰涧,字母使用轉(zhuǎn)義后的代碼來表示也是沒問題的韧掩。
比如
/* 注意:.\61 后面有一個空格 */
.\61 {
display: block;
width: 100px;
height: 100px;
background: steelblue;
}
<div class="a"></div>