手寫樣式表 CSS語法全攻略(上)

2021-04-28 22:03:52 字數 3593 閱讀 3065

為什麼不能用視覺化編輯器寫css呢?理由很簡單,手寫css可以寫很多視覺化編輯器寫不出的樣式,剛開始手寫可能會不大習慣,可是配合智慧型提示,寫熟了是不會比視覺化編輯器點的慢。

各種型別的選擇符

為什麼要出現不同的選擇符呢?個人認為是主是模組化跟重用性。

下面的element表示元素。

通配選擇符

*像很多語言一樣 * 代表所有,一般開始我會在乙個css的開始時做下面這樣的定義:這樣定義是把所有的元素的margin跟padding定義為0。例子

* * 也是可以像下面這樣用的:把div元素下的所有元素定義。

div *

這樣定義時要小心應用,像下面這樣的定義是用乘的。例子

ul *

所以大家在用通配選擇符出現百分比的定義時要小心。

型別選擇符

element

這個是大家最最常用的吧,說element可能大家不會知道,看下面的。例子

p 當然有時 html 也搞搞特別的,自定義元素是其中的一種,例子

rotui/:aoao

包含選擇符 也有人叫派生選擇符

element1 element2

像剛才的顯著 div * 就是,當然還可以像下面這樣。例子

p strong

子物件選擇符

element > element

這個跟包含選擇符有什麼不同呢?他只對他的子一級元素有效(ie6還不支援)。例子

p > span

相鄰選擇器

element + element

只對相鄰的元素,也就是下乙個元素的定義(ie6還不支援)。例子

p + p

id選擇符

#idname

element#idname

直接定義html的id名。例子

#csser

類選擇符

.classname

element.classname

這兩個有什麼不同呢,前乙個是定義所有class="classname"。例子

.rotui

屬性選擇符

element[attr]

element[attr=value]

element[attr~=value]

element[attr|=value]

element[attr] 選擇具有attr屬性的e1 例子

input[value]

element[attr=value]選擇具有attr屬性且屬性值等於value的元素 例子

input[type=password]

element[attr~=value]選擇具有attr屬性且屬性值為一用空格分隔的字詞列表,其中乙個等於value的element。這裡的value不能包含空格 例子

input[value~="aoao"]

element[attr|=value] 選擇具有attr屬性且屬性值為一用連字元(-)分隔的字詞列表,必須是以value開始的元素。 例子

input[value|="rotui"]

ps:以上的ie瀏覽器看不到.

選擇符分組

element1,element2

將同樣的定義應用於多個選擇符,可以將選擇符以逗號分隔的方式並為組。不只只是元素,上面所說的八類選擇符跟下面的都可以應用 。例子

th,td

偽類選擇符

element:link

element:visited

element:hover

element:active

element:focus

element:first-child

element:lang

當然還有定義列印的:first :left :right,這裡只介紹螢幕上的。例子:link,:visited,:hover,:active 這四類是常見到的,因為ie的 a 元素支援他。 例子:focus 物件在成為輸入焦點(該物件的onfocus事件發生)時出現(ie不支援)。例子

input:focus

:first-child 包含選擇符裡面的第乙個元素的定義。例子div p:first-child

:lang() 對已指明語言的元素進行定義。例子p:lang(en)

偽物件

element:first-letter

element:first-line

element:before

element:after

:first-letter 首字定義,很好理解,就是第乙個字。例子

.letter:first-letter

:first-line 首行定義,第一行會有效果,換行符(

)也可以分割第一行。例子 .letter:first-line

:before和:after 在元素之前(before)跟之後(after)配合 content屬性新增內容。例子

em:before

em:after

每個id選擇符(#someid),加 0,1,0,0。 每個class選擇符(.someclass)、每個屬性選擇符(形如[attr=」"]等)、每個偽類(形如:hover等)加0,0,1,0

每個元素或偽元素(:firstchild)等,加0,0,0,1 其他選擇符包括全域性選擇符*,加0,0,0,0。相當於沒加,不過這也是一種specificity,後面會解釋。 舉一些例子吧:

h1 /* 只有乙個普通元素加成,結果是 0,0,0,1 */

body h1

/* 兩個普通元素加成,結果是 0,0,0,2 */

——後者勝出

h2.grape

/* 乙個普通元素、乙個class選擇符加成,結果是 0,0,1,1*/

h2 /*乙個普通元素,結果是 0,0,0,1 */

——前者勝出

html > body table tr[id=」totals」] td ul > li

/* 7個普通元素、乙個屬性選擇符、兩個其他選擇符,結果是0,0,1,7 */

li#answer

/* 乙個id選擇符,乙個普通選擇符,結果是0,1,0,1 */

——後者勝出

除了specificity還有一些其他規則

文內的樣式優先順序為1,0,0,0,所以始終高於外部定義。這裡文內樣式指形如blah

的樣式,而外部定義指經由或標籤定義的規則。

有!important宣告的規則高於一切。

如果!important宣告衝突,則比較優先權。

如果優先權一樣,則按照在原始碼中出現的順序決定,後來者居上。

由繼承而得到的樣式沒有specificity的計算,它低於一切其他規則(比如全域性選擇符*定義的規則)。

關於經由@import載入的外部樣式,由於@import必須出現在所有其他規則定義之前(如不是,則瀏覽器應該忽略之),所以按照後來居上原則,一般優先權衝突時是佔下風的。

這裡需要提一下ie,ie是可以識別位置錯誤的@import的,但無論@import在什麼地方,它都認為是位於所有其他規則定義之前的,這可能會引發一些誤會。

看來一篇寫不完了,屬性留在下篇再說吧(這年頭多混個頁的流量也不容易) !

樣式表CSS的高階語法

2007 09 17 選擇器的分組 你可以對選擇器進行分組,這樣,被分組的選擇器就可以分享相同的宣告。用逗號將需要分組的選擇器分開。在下面的例子中,我們對所有的標題元素進行了分組。所有的標題元素都是綠色的。以下是引用片段 h1,h2,h3,h4,h5,h6 繼承及其問題 根據css,子元素從父元素繼...

三 css系列之語法 樣式表

一 css簡介及基本語法 1.什麼是css cascading style sheet層疊樣式表,用於修飾和美化html標籤的一種計算機語言,能夠實現結構表現的分離。2.css基本語法選擇器3.選擇器 選擇器也叫作選擇符,作用是告訴瀏覽器,樣式的應用物件 4.選擇器的種類 標籤選擇器 元素選擇器 類...

如何只在IE上載入CSS樣式表

前言 ie一直是特殊的乙個瀏覽器,我們可以使用一些方法來指定樣式表只在ie瀏覽器下被載入。ie9以及低於ie9版本 可以使用條件注釋語句來載入特定於ie的樣式表。如下所示,使用外部樣式表。但是如果是ie10以上時,這個辦法就不是很適用了。ie10或ie11 使用 查詢 ms high contras...