背景
html是一種超文字標記語言,用來定義文件的結構和內容,例如標題、段落和列表等等,而文件內容如何渲染、如何展示,這就需要樣式來修飾了。css正是可以與html很好地結合。如果將html比作水,那麼css就是水杯,用怎樣形狀的水杯來裝水,水就顯示不一樣的形狀。
什麼是css?
css 指層疊樣式表 (cascading style sheets),定義如何顯示 html 元素,是為了解決文件內容與表現分離的問題,通常是統一儲存在樣式表中,使用外部樣式表可以方便管理,提高工作的效率,具有繼承性和層疊性的特點。
css繼承性
它是依賴於祖先-後代的關係的。繼承是一種機制,它允許樣式不僅可以應用於某個特定的元素,還可以應用於它的後代。但是,並不是所有的屬性都會自動傳給它的後代,例如邊框border,邊距margin,補白padding等等。
例如定義了body的樣式
doctype html
>
<
html
>
<
head
>
<
title
>開篇一 | css繼承
title
>
head
>
<
style
type
="text/css"
>
body
style
>
<
body
>
<
p>
字型顏色顯示為紅色,但是沒有邊框
p>
body
>
html
>
可以得到的效果是body有1px的灰色實線邊框,p標籤裡面的字型為紅色,但是沒有邊框,所以border屬性沒有被繼承。
css層疊性
css樣式在針對同一元素配置同一屬性時,依據層疊規則(權重)來處理衝突,選擇應用權重高的css選擇器所指定的屬性,一般也被描述為權重高的覆蓋權重低的,因此也稱作層疊。
例如定義了樣式
doctype html
>
<
html
>
<
head
>
<
title
>開篇一 | css層疊
title
>
head
>
<
style
type
="text/css"
>
body
.main
.main p
style
>
<
body
>
<
div
class
="main"
>
<
p>
字型顏色顯示為黑色,字型大小為加粗18px
p>
div>
body
>
html
>
可以得到的效果是p標籤裡面的字型為黑色,字型大小為加粗18px,.main選擇器中的color屬性被.main p中的color屬性覆蓋。
實際上由css的繼承性和層疊性,是可以得到p標籤組合的css樣式為
p
更多關於權重高低請參考
css**規範
1.使用reset但並非全域性reset
全域性reset不僅僅因為它是緩慢和低效率的方法,而且還會導致一些不必要的元素也重置了外邊距和內邊距。
*
2.良好的命名規範
id和class的命名盡可能短,並符合語義。多個單詞的拼接用 '-' 符號鏈結,盡量使用小寫字母。
3.**縮寫
css**縮寫可以提高你寫**的速度,精簡你的**量。
li
可以縮寫成
li
4.利用css繼承
如果頁面中父元素的多個子元素使用相同的樣式,那最好把他們相同的樣式定義在其父元素上,讓它們繼承這些css樣式。這樣你可以很好的維護你的**,並且還可以減少**量。那麼本來這樣的**:
#container li#container p#container h1
就可以簡寫成:
#container
5.使用多重選擇器
你可以合併多個css選擇器為乙個,如果他們有共同的樣式的話。這樣做不但**簡潔且可為你節省時間和空間。如:
h1h2h3
可以合併為
h1, h2, h3
6.適當的**注釋
**注釋可以讓別人更容易讀懂你的**,且合理的組織**注釋,可使得結構更加清晰。
7.給你的css**排序
如果**中的屬性都能按照字母排序,那查詢修改的時候就能更加快速。
/*** 樣式屬性按字母排序 **
*/div
8.保持css的可讀性
書寫可讀的css將會使得更容易查詢和修改樣式。
/*** 每個樣式屬性寫一行 **
*/div /*
** 所有的樣式屬性寫在同一行 **
*/div
9.選擇更優的樣式屬性值
css中有些屬性採用不同的屬性值,雖然達到的效果差不多,當效能上卻存在著差異,如:
區別在於border:0把border設為0px,雖然在頁面上看不見,但按border預設值理解,瀏覽器依然對border-width/border-color進行了渲染,即已經占用了記憶體值。
而border:none把border設為「none」即沒有,瀏覽器解析「none」時將不作出渲染動作,即不會消耗記憶體值。所以建議使用border:none;
同樣的,display:none隱藏物件瀏覽器不作渲染,不占用記憶體。而visibility:hidden則會。
10.代替@import
@import不屬於xhtml標籤,也不是web標準的一部分,它對於較早期的瀏覽器相容也不高,並且對於**的效能有某些負面的影響。所以,請避免使用@import
11.使用外部樣式表使用
12.**壓縮
當你決定把**專案部署到網路上,那你就要考慮對css進行壓縮,出去注釋和空格,以使得網頁載入得更快。壓縮您的**,可以採用一些工具,如yui compressor 利用它可精簡css**,減少檔案大小,以獲得更高的載入速度。
13.避免使用css hack
14.**格式
(1)每個css屬性宣告後都要使用乙個分號,即使是最後的那個。
(2)在緊跟屬性名的冒號後使用乙個空格。
(3)每乙個css選擇器或是屬性宣告都要新起一行。
(4)在每乙個css規則之間應該空一行。
15.如果css屬性的值為0,則後面不要帶上單位。除非真的是需要。
規範參考
css3.0新特性
目前css已經發展到3.0的版本,但是3.0的屬性大多不支援低版本的瀏覽器。
新特性如css圓角邊框、陰影、動畫等,後面將會另有系列課程專門學習介紹。
出處:
C 底層機制(一) 開篇
很少有人質疑c語言生成 的高效和精悍,然而c 究竟能多麼接近c語言的水平呢?相信長期以來存在這樣的共識,核心演算法為了效率常常拋棄c 而使用c,他們認為c 龐大又遲緩,比如他們拒絕使用c 編寫資料庫引擎,他們說 繼承和過載降低效率,並且c 揹著你做很多事情 我相信通過之後的一系列文章,會幫助您破除圍...
linux驅動實踐 一 開篇
gnu arm彙編 系列寫了不少,收穫亦不小.依然還有很多可以繼續往下寫 一直想利用arm9的mmu寫個小的os 包含簡單裝置模型,任務排程和記憶體管理的os,網路和檔案系統就不要了.這個想法先放一下.另外對於uboot這樣乙個優秀的開源 也想做個深入的分析,但考慮到自己的bootloader也能引...
Emacs之魂(一) 開篇
emacs之魂 一 開篇 emacs之魂 二 一分鐘學會人界用法 emacs之魂 三 列表,引用和求值策略 emacs之魂 四 識別符號,符號和變數 emacs之魂 五 變數的 指標 語義 emacs之魂 六 巨集與元程式設計 emacs之魂 七 變數捕獲與衛生巨集 emacs之魂 八 反引用與巢狀...