CSS定義:
CSS 指層疊樣式表 (Cascading Style Sheets)
CSS通常稱為CSS樣式表或層疊樣式表(級聯樣式表),主要用于設置HTML頁面中的文本內容(字體、大小、對齊方式等)、圖片的外形(寬高、邊框樣式、邊距等)以及版面的布局等外觀顯示樣式。
CSS以HTML為基礎,提供了豐富的功能,如字體、顏色、背景的控制及整體排版等,而且還可以針對不同的瀏覽器設置不同的樣式。
CSS就是控制頁面布局和樣式。
CSS的版本:到了3.0版本。(目前還是用2.1版本)
HTML和CSS的關系:
HTML結構層負責從語義的角度搭建頁面結構。(HTML:頁面結構)
CSS樣式層負責從審美的角度美化頁面。(CSS:頁面樣式表現)
JavaScript行為層負責從交互的角度提升用戶體驗。(JavaScript:交互行為)
引入CSS的方式:
所有的標簽都有一個默認樣式,我們稱為瀏覽器樣式,或者默認樣式。
缺省樣式(瀏覽器樣式):
可以通過設置修改瀏覽器的樣式 ;?所有的標簽都有默認的樣式:h1,h2,p,div,span,ul等。
缺省樣式(瀏覽器樣式)的優先級是最低的。
補充快捷鍵:看上圖。
行內樣式:
行內樣式,是通過在標簽中設置style屬性來達到實現控制標簽的樣式的效果。(下圖){red后面少了個;}
Style屬性中,可以設置多條的CSS樣式。(下圖)
嵌入樣式:
嵌入樣式又叫:內嵌樣式、內部樣式。
在head標簽中,嵌套一個style標簽,在style標簽中可以書寫CSS的樣式內容。
Style標簽有一個屬性type屬性,默認值就是text/css,可以省略。
外部樣式(外聯樣式):
通過link標簽引入css樣式文件。
type屬性:只有一個選項,“text/css",指定當前為css文本文件。()
rel:指定當前HTML文件與CSS文件的關系是樣式表。href:指定外聯樣式表的路徑。
導入樣式:@import,導入樣式會導致,css文件不能并行下載。不推薦使用。
導入樣式的書寫必須在所有的css規則書寫之前。
導入樣式:
@import,導入樣式會導致,css文件不能并行下載。不推薦使用。
導入樣式的書寫必須在所有的css規則書寫之前。
CSS語法:
選擇符、屬性聲明、括號。
換行不敏感、空格不敏感
CSS簡單屬性:
width:設置寬度,單位px像素。
height:高度。
color:前景色,也就是文字的顏色。
background-color:背景色。
font-size:字體的大小。
CSS案例:
CSS注釋:
CSS的注釋語法: ? /*注釋的內容*/
注釋不能嵌套,比如:? /*注釋的*/內容*/? (中間多了*/,是錯誤的)
多行注釋:
/*
放多行的注釋內容1
放多行的注釋內容2
*/
一般用于模塊的 注釋:
文件頭的注釋:
例如:
CSS選擇器:
標簽選擇器:
標簽選擇器就是選擇當前頁面中相同名字的標簽
通配符選擇器
通配符選擇器用“*”號表示,他是所有選擇器中作用范圍最廣的,能匹配頁面中所有的元素。
基本語法格式: ?*{屬性1:屬性值1;屬性2:屬性值2; 屬性3:屬性值3;}
使用通配符選擇器定義CSS樣式,清除所有HTML標記的默認邊距。
通配符的穿透力很強,優先級高于繼承的樣式,會覆蓋繼承的樣式。一般不用。
ID選擇器
HTML標簽中ID的屬性值在一個頁面中必須是唯一的。
id一般用于css的選擇器和js的鉤子。
ID選擇器是可以幫助我們選擇當前頁面中唯一id值的標簽,也就是根據標簽的id屬性值進行選取設置樣式。
id選擇器使用“#”進行標識,后面緊跟id名。
語法: ?#id名{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
類選擇器:
類選擇器就是選取頁面中所有標簽的class屬性值相同的一類標簽。
類選擇器的符號是: ?.? (點)
標簽可以包含多個類選擇器,在class標簽中用空格隔開。
ID選擇器和class選擇器的區別
相同的Class屬性值,可以在HTML中出現多次。ID屬性值在頁面中只能出現一次。
一個class的屬性可以有多個值,也就是說一個標簽可以有多個類。
盡量使用類選擇器。使用ID時候情況:當確實能唯一確定當前頁面中標簽只會出現一次,這時候可以使用ID選擇器。
如果不能保證相同的作用的標簽在頁面中只出現一次,那么這時候就選擇使用類選擇器。
選擇器綜合案例
CSS復合選擇器
復合選擇器是由兩個或多個基礎選擇器,通過不同的方式組合而成的。
標簽指定式選擇器(即....又....)
標簽指定式選擇器又稱交集選擇器,由兩個選擇器構成,其中第一個為標記選擇器,第二個為class選擇器或id選擇器,兩個選擇器之間不能有空格,如h3.special或p#one。
比如:h3.demo {} ,需要同時滿足既是標簽h3又擁有demo類才能被選擇到。
注意:使用非常少,一般不用。要么直接用id選擇器,要么直接用類選擇器。
后代選擇器:
后代選擇器用來選擇元素或元素組的后代,其寫法就是把外層標記寫在前面,內層標記寫在后面,中間用空格分隔。當標記發生嵌套時,內層標記就成為外層標記的后代。
并集選擇器:
并集選擇器是各個選擇器通過逗號連接而成的,任何形式的選擇器(包括標記選擇器、class類選擇器id選擇器等),都可以作為并集選擇器的一部分。如果某些選擇器定義的樣式完全相同,或部分相同,就可以利用并集選擇器為它們定義相同的CSS樣式。
子元素選擇器:
子代選擇器,是讓CSS選擇器智能選擇兒子輩的元素。
尖括號和選擇器之間可以有空格也可以沒有,沒有限制。
建議:選擇器和尖括號間有空格。
屬性選擇器:
屬性選擇器就是根據html標簽的屬性進行過濾選擇。
CSS偽類 偽元素:
狀態是動態變化的,當一個元素達到一個特定狀態時,它可能得到一個樣式,當狀態改變時,又失去這個樣式。
它的功能和class有些類似,但它是基于文檔之外的抽象,所以叫偽類。
CSS偽類:
:link ? ? ? ?偽類將應用于未被訪問過的鏈接。IE6不兼容,解決此問題,直接使用a標簽。
:hover ? ? ? ?偽類將應用于有鼠標指針懸停于其上的元素。在IE6只能應用于a連接,IE7+所有元素都兼容。
:active ? ? ? ?偽類將應用于被激活的元素,如被點擊的鏈接、被按下的按鈕等。
:visited ? ? ? ?偽類將應用于已經被訪問過的鏈接
:focus ? ? ? ?偽類將應用于擁有鍵盤輸入焦點的元素。
順序問題:LoVeHAte原則。看下圖(順序不要亂了)
偽元素選擇器
偽元素?是控制內容。
:first-line偽元素。
:first-letter偽元素。
注釋:以上兩個偽元素只能用于塊級元素。
:first-child偽元素,選擇屬于第一個子元素的元素。
例如:span:first-child{ } ?(選擇屬于第一個子元素的所有span標簽。)
:before與:after偽元素,可以設置元素之前后之后的內容,并且配合content設置相關內容。比如:#demo:after,#demo:before{content:"--";display:block;}
重點,圈起來,會考
下面兩圖有不同效果:
CSS的層疊性:
CSS的層疊性,也就是說后來設置的樣式會層疊(覆蓋)之前的樣式,層疊性的前提是CSS的選擇器的優先級相同。
例如,當使用內嵌式CSS樣式表定義標記字號大小為12像素,鏈入式定義標記顏色為紅色,那么段落文本將顯示為12像素紅色,即這兩種樣式產生了疊加。
?CSS繼承性:
所謂繼承性是指書寫CSS樣式表時,子標記會繼承父標記的某些樣式(子容器的樣式會繼承父容器的樣式),如文本顏色和字號。想要設置一個可繼承的屬性,只需將它應用于父元素即可。
恰當地使用繼承可以簡化代碼,降低CSS樣式的復雜性。但是,如果在網頁中所有的元素都大量繼承樣式,那么判斷樣式的來源就會很困難,所以對于字體、文本屬性等網頁中通用的樣式可以使用繼承。例如,字體、字號、顏色、行距等可以在body元素中統一設置,然后通過繼承影響文檔中所有文本。
所有字相關的都可以繼承,比如:color、text-系列、font-系列、line-系列、cursor
并不是所有的CSS屬性都可以繼承,例如,下面的屬性就不具有繼承性:邊框、外邊距、內邊距、背景、定位、元素寬高屬性。
所有盒子相關的屬性都不能繼承。
CSS的特殊性(優先級):
CSS的特殊性,定義CSS樣式時,經常出現兩個或更多規則應用在同一元素上,那么誰的優先級更高呢,這就是CSS的特殊性。
內聯樣式最大,內聯樣式的優先級最高。> ? ? ID選擇器的優先級,僅次于內聯樣式。> ? ?類選擇器優先級低于ID選擇器。> ? ?標簽選擇器低于類選擇器。
256個標簽選擇器相加大于 一個類選擇器 , ?256個類選擇器相加大于 一個ID選擇器。
在考慮權重時,還需要注意一些特殊的情況,具體如下:
繼承樣式的權重為0。即在嵌套結構中,不管父元素樣式的權重多大,被子元素繼承時,他的權重都為0,也就是說子元素定義的樣式會覆蓋繼承來的樣式。
行內樣式優先。應用style屬性的元素,其行內樣式的權重非常高,可以理解為遠大于100。總之,他擁有比上面提高的選擇器都大的優先級。
權重相同時,CSS遵循就近原則。也就是說靠近元素的樣式具有最大的優先級,或者說排在最后的樣式優先級最大。
所有都相同時,聲明靠后的優先級大。
CSS定義了一個!important命令,該命令被賦予最大的優先級。也就是說不管權重如何以及樣式位置的遠近,!important都具有最大優先級。
綜述:行內樣式 > 頁內樣式 > 外部引用樣式 >瀏覽器默認樣式。
?important > 內聯 >ID > 偽類|類 | 屬性選擇> 標簽> 偽對象 >通配符 > 繼承。
復合選擇器的樣式優先級核算: