CSS基礎(一) 開篇

2022-02-11 13:18:01 字數 3726 閱讀 4850

背景

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之魂 八 反引用與巢狀...