主頁 > 知識(shí)庫 > CSS規(guī)則層疊的應(yīng)用 css必須要注意的幾點(diǎn)

CSS規(guī)則層疊的應(yīng)用 css必須要注意的幾點(diǎn)

熱門標(biāo)簽:南昌電話機(jī)器人系統(tǒng) 地圖標(biāo)注樓盤 隨州外呼系統(tǒng)廠家 南山電話機(jī)器人 ai電話機(jī)器人效果差 蘇州做電話機(jī)器人 快速更改地圖標(biāo)注點(diǎn)標(biāo) 地圖標(biāo)注微信好友 沈陽400電話辦理多少錢
理論基礎(chǔ)是必要的,實(shí)踐是提升和理解理論的方法,兩者同樣重要,任何設(shè)計(jì)和開發(fā)人員離開這兩者的平衡,不論偏向哪一方,都會(huì)范或左或右的錯(cuò)誤。不過我所講的這個(gè)方法在實(shí)際應(yīng)用中到底有什么用呢。顯然,它不能夠給我們創(chuàng)造出圓角矩形,也不能夠給我們創(chuàng)造出分列布局,更加不可能給我們一個(gè)固定在文檔頭部的導(dǎo)航欄。這個(gè)算法的實(shí)踐應(yīng)用在于: 良好的CSS編程規(guī)范 。這是一個(gè)宏觀的實(shí)踐,與我剛才提到的微觀實(shí)踐同樣重要,但卻更加難以掌握。

本文并不想包含所有的良好的CSS編程規(guī)范,也不可能,我所能夠提供的也只是我個(gè)人編寫CSS的規(guī)范小結(jié),我想這些規(guī)范是盡可能靠近CSS的運(yùn)作本質(zhì)的。

不要使用inline CSS 
user style不在你的掌控之內(nèi) 
不要使用important規(guī)則 
按照特殊性從低到高編寫CSS 
前三條不是我說的重點(diǎn),我將一筆帶過。

inline CSS的特殊性是最高的,如果你CSS文件中的屬性與inline CSS沖突,那么你CSS文件中的屬性無效,這和我們僅在CSS文件中對(duì)樣式進(jìn)行debug的習(xí)慣不符。inline CSS也是丑陋的,它將樣式插入HTML文檔,所以應(yīng)當(dāng)放棄使用inline CSS。

如果用戶將user style設(shè)置為important,那么不論怎么寫CSS規(guī)則,總是不能覆蓋用戶的important語句,所以試圖覆蓋所有的user style是徒勞的。高興的是我們不需要考慮這些了。

important規(guī)則是個(gè)異類,它不符合我們慣有的思維方式,不論我們?nèi)绾卧黾覥SS規(guī)則的特殊性和先后順序,important規(guī)則都將覆蓋與它競爭的規(guī)則,這也會(huì)打亂CSS規(guī)則的習(xí)慣規(guī)律,給debug帶來麻煩。如果你要 使用important規(guī)則來hack瀏覽器 ,那么你應(yīng)當(dāng)在一個(gè)指向唯一元素的selector中應(yīng)用該規(guī)則。(PS. hack應(yīng)當(dāng)是解決方法中最后考慮的一項(xiàng),因?yàn)樗L得太丑陋了。)

最后一點(diǎn),如何做到按照特殊性從低到高編寫CSS?

關(guān)鍵在于 模塊化CSS 。

添加全局CSS 
添加當(dāng)前頁面統(tǒng)一CSS 
將頁面分成幾個(gè)模塊 
在每個(gè)不同模塊上使用id掛鉤,相同模塊上使用class掛鉤 
添加每個(gè)模塊的統(tǒng)一CSS 
將每個(gè)模塊分成幾個(gè)子模塊,并且回到第4步開始循環(huán)直至樣式添加完成。 
編寫良好的CSS是一個(gè)設(shè)計(jì)問題,而不是一個(gè)實(shí)現(xiàn)問題。我們首先應(yīng)當(dāng)將編寫特殊性非常低的全局CSS內(nèi)容,也就是我們 常用的reset.css 。它是我們整個(gè)網(wǎng)站中所有頁面的默認(rèn)樣式。

如果有哪個(gè)頁面具有獨(dú)特的統(tǒng)一樣式,如某一頁的背景與其他頁面不同,那么我們可以給某一頁面添加ID,然后在ID下編寫當(dāng)前頁面的統(tǒng)一CSS。

body#special{
    background-color:black;
}
統(tǒng)一樣式編寫好后,我們將頁面分成幾個(gè)模塊,如果這些模塊具有基本相同的樣式,那么使用class掛鉤,如果樣式并非相同,那么使用id掛鉤,以后每次分模塊時(shí)都應(yīng)當(dāng)遵循這一原則,因?yàn)閏lass的特殊性不高,所以如果不是看起來顯然類似的模塊,就不應(yīng)當(dāng)使用class。id的名字通??梢阅K的用途作為名字。如 head 、 bottom 等。id selector在層疊中起了關(guān)鍵作用,因?yàn)閕d具有排他性,還具有較高的特殊性,能夠防止CSS規(guī)則被不經(jīng)意的覆蓋。

在某個(gè)模塊中我們可能有一些統(tǒng)一CSS,那么我們就需要在使用id selector來編寫當(dāng)前模塊下的統(tǒng)一樣式。

#head p{
    color:red;
}
添加class掛鉤時(shí),我建議使用父模塊(或者頁面本身)的id在作為class名的第一部分。如果我添加一個(gè)獨(dú)立的頁面(body#special),那么為該頁面分好模塊后,我應(yīng)當(dāng)將該頁的模塊命名為 special_head 、 special_bottom 等。

或者在某些頁面模塊中使用class掛鉤時(shí)應(yīng)當(dāng)使用 head_col 等。這樣做的好處是我們不用使用

#head .col{
    /* 頭部中每一列的樣式 */
}
而可以直接使用

.head_col{
    /* 頭部中每一列的樣式 */
}
從而不用擔(dān)心命名沖突。

而對(duì)于模塊下直接添加了id selector的元素,我們可以直接使用該selector,并且也在其名字前添加父模塊的id。

#head_navigator{
    /* 頭部中導(dǎo)航欄的樣式 */
}
要做到模塊化CSS我們應(yīng)當(dāng)盡量防止跨模塊的CSS出現(xiàn),我想一條好的原則是:如果某一樣式的跨模塊特性不是你一目了然的,那么就不要使用跨模塊的CSS。一個(gè)例外是全局CSS或者模塊內(nèi)的統(tǒng)一CSS。而對(duì)于那些并非一目了然的,并非具有統(tǒng)一樣式的,建議在每個(gè)子模塊下分別定義。這就像是編寫Java程序中的面向?qū)ο蟮脑O(shè)計(jì)一樣,我們要降低模塊之間的互相依賴,使得相同模塊的CSS規(guī)則在一起,略有不同的就完全分開,這樣不但易于維護(hù),還能夠保證特殊性從低到高地編寫CSS,從而防止CSS規(guī)則被意外的覆蓋

標(biāo)簽:濰坊 商洛 濰坊 深圳 石家莊 玉樹 大同 昭通

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《CSS規(guī)則層疊的應(yīng)用 css必須要注意的幾點(diǎn)》,本文關(guān)鍵詞  CSS,規(guī)則,層疊,的,應(yīng)用,css,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《CSS規(guī)則層疊的應(yīng)用 css必須要注意的幾點(diǎn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于CSS規(guī)則層疊的應(yīng)用 css必須要注意的幾點(diǎn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章