CSS第一節:認識CSS

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="color: red" ?是設置字體變紅色 ?(color為屬性名,red為屬性值)

Style屬性中,可以設置多條的CSS樣式。(下圖)

此處是兩個CSS樣式

嵌入樣式:

嵌入樣式又叫:內嵌樣式、內部樣式。

head標簽中,嵌套一個style標簽,在style標簽中可以書寫CSS的樣式內容。

Style標簽有一個屬性type屬性,默認值就是text/css,可以省略。

外部樣式(外聯樣式):

通過link標簽引入css樣式文件。

type屬性:只有一個選項,“text/css",指定當前為css文本文件。()

rel:指定當前HTML文件與CSS文件的關系是樣式表。href:指定外聯樣式表的路徑。

導入樣式:@import,導入樣式會導致,css文件不能并行下載。不推薦使用。

導入樣式的書寫必須在所有的css規則書寫之前。

接著看下圖變化
這里的main.css文件我理解成標準件,可重復使用

導入樣式:

@import,導入樣式會導致,css文件不能并行下載。不推薦使用。

導入樣式的書寫必須在所有的css規則書寫之前。

main.css文件用上圖的

CSS語法:

選擇符、屬性聲明、括號。

換行不敏感、空格不敏感

這個是常見的CSS案例


CSS簡單屬性:

width:設置寬度,單位px像素。

height:高度。

color:前景色,也就是文字的顏色。

background-color:背景色。

font-size:字體的大小。

CSS案例:


CSS注釋:

CSS的注釋語法: ? /*注釋的內容*/

注釋不能嵌套,比如:? /*注釋的*/內容*/? (中間多了*/,是錯誤的)

多行注釋:

/*

放多行的注釋內容1

放多行的注釋內容2

*/

一般用于模塊的 注釋:

文件頭的注釋:

例如:


CSS選擇器:

標簽選擇器:

標簽選擇器就是選擇當前頁面中相同名字的標簽

可以單獨設置頁面上所有P標簽、h1標簽、span標簽,沒個設置度可以不一樣

通配符選擇器

通配符選擇器用“*”號表示,他是所有選擇器中作用范圍最廣的,能匹配頁面中所有的元素。

基本語法格式: ?*{屬性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標簽中用空格隔開。

P標簽中加多一個demo

ID選擇器和class選擇器的區別

相同的Class屬性值,可以在HTML中出現多次。ID屬性值在頁面中只能出現一次。

一個class的屬性可以有多個值,也就是說一個標簽可以有多個類。

盡量使用類選擇器。使用ID時候情況:當確實能唯一確定當前頁面中標簽只會出現一次,這時候可以使用ID選擇器。

如果不能保證相同的作用的標簽在頁面中只出現一次,那么這時候就選擇使用類選擇器。


選擇器綜合案例


CSS復合選擇器

復合選擇器是由兩個或多個基礎選擇器,通過不同的方式組合而成的。

標簽指定式選擇器(即....又....)

標簽指定式選擇器又稱交集選擇器,由兩個選擇器構成,其中第一個為標記選擇器,第二個為class選擇器或id選擇器,兩個選擇器之間不能有空格,如h3.special或p#one。

比如:h3.demo {} ,需要同時滿足既是標簽h3又擁有demo類才能被選擇到。

注意:使用非常少,一般不用。要么直接用id選擇器,要么直接用類選擇器。

指定h3

后代選擇器:

后代選擇器用來選擇元素或元素組的后代,其寫法就是把外層標記寫在前面,內層標記寫在后面,中間用空格分隔。當標記發生嵌套時,內層標記就成為外層標記的后代。

注意:后代選擇器可以從左向右理解。但是真正瀏覽器在執行的時候是從右向左進行執行過濾的。(工作原理的注釋)

并集選擇器:

并集選擇器是各個選擇器通過逗號連接而成的,任何形式的選擇器(包括標記選擇器、class類選擇器id選擇器等),都可以作為并集選擇器的一部分。如果某些選擇器定義的樣式完全相同,或部分相同,就可以利用并集選擇器為它們定義相同的CSS樣式。

h1, h2, ?p 標簽可以并在一起設置

子元素選擇器:

子代選擇器,是讓CSS選擇器智能選擇兒子輩的元素。

尖括號和選擇器之間可以有空格也可以沒有,沒有限制。

建議:選擇器和尖括號間有空格。

紅圈中的兩個 p 標簽可以理解成是 div 兒子(div > p)

屬性選擇器:

屬性選擇器就是根據html標簽的屬性進行過濾選擇。


CSS偽類 偽元素:

狀態是動態變化的,當一個元素達到一個特定狀態時,它可能得到一個樣式,當狀態改變時,又失去這個樣式。

它的功能和class有些類似,但它是基于文檔之外的抽象,所以叫偽類。

CSS偽類:

:link ? ? ? ?偽類將應用于未被訪問過的鏈接。IE6不兼容,解決此問題,直接使用a標簽。

:hover ? ? ? ?偽類將應用于有鼠標指針懸停于其上的元素。在IE6只能應用于a連接,IE7+所有元素都兼容。

:active ? ? ? ?偽類將應用于被激活的元素,如被點擊的鏈接、被按下的按鈕等。

:visited ? ? ? ?偽類將應用于已經被訪問過的鏈接

:focus ? ? ? ?偽類將應用于擁有鍵盤輸入焦點的元素。

順序問題:LoVeHAte原則。看下圖(順序不要亂了)

頁面效果需要查看電腦文件: 11 Pseudo class case.html

偽元素選擇器

偽元素?是控制內容。

: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像素紅色,即這兩種樣式產生了疊加。

效果找文件:? 14 Lamination.html ?(可以留下要的顏色層,把其他層顏色設置注釋掉,進行查看)

?CSS繼承性:

所謂繼承性是指書寫CSS樣式表時,子標記會繼承父標記的某些樣式(子容器的樣式會繼承父容器的樣式),如文本顏色和字號。想要設置一個可繼承的屬性,只需將它應用于父元素即可。

恰當地使用繼承可以簡化代碼,降低CSS樣式的復雜性。但是,如果在網頁中所有的元素都大量繼承樣式,那么判斷樣式的來源就會很困難,所以對于字體、文本屬性等網頁中通用的樣式可以使用繼承。例如,字體、字號、顏色、行距等可以在body元素中統一設置,然后通過繼承影響文檔中所有文本。

所有字相關的都可以繼承,比如:color、text-系列、font-系列、line-系列、cursor

并不是所有的CSS屬性都可以繼承,例如,下面的屬性就不具有繼承性:邊框、外邊距、內邊距、背景、定位、元素寬高屬性。

所有盒子相關的屬性都不能繼承。

當我給div標簽設置樣式的時候,作為孩子的P標簽中的字體也受父容器中設置的字體樣式影響。

CSS的特殊性(優先級):

CSS的特殊性,定義CSS樣式時,經常出現兩個或更多規則應用在同一元素上,那么誰的優先級更高呢,這就是CSS的特殊性。

內聯樣式最大,內聯樣式的優先級最高。> ? ? ID選擇器的優先級,僅次于內聯樣式。> ? ?類選擇器優先級低于ID選擇器。> ? ?標簽選擇器低于類選擇器。

256個標簽選擇器相加大于 一個類選擇器 , ?256個類選擇器相加大于 一個ID選擇器。

id選擇器比類選擇器優先級高,

在考慮權重時,還需要注意一些特殊的情況,具體如下:

繼承樣式的權重為0。即在嵌套結構中,不管父元素樣式的權重多大,被子元素繼承時,他的權重都為0,也就是說子元素定義的樣式會覆蓋繼承來的樣式。

行內樣式優先。應用style屬性的元素,其行內樣式的權重非常高,可以理解為遠大于100。總之,他擁有比上面提高的選擇器都大的優先級。

權重相同時,CSS遵循就近原則。也就是說靠近元素的樣式具有最大的優先級,或者說排在最后的樣式優先級最大。

所有都相同時,聲明靠后的優先級大。

CSS定義了一個!important命令,該命令被賦予最大的優先級。也就是說不管權重如何以及樣式位置的遠近,!important都具有最大優先級。

綜述:行內樣式 > 頁內樣式 > 外部引用樣式 >瀏覽器默認樣式。

?important > 內聯 >ID > 偽類|類 | 屬性選擇> 標簽> 偽對象 >通配符 > 繼承。

結論一:繼承的樣式要大于默認的樣式
結論2: 通配符選擇器的樣式的優先級比繼承樣式的優先級要高
結論三:標簽的選擇器的優先級要高于通配符選擇器的優先級
結論四:類選擇器的樣式的優先級要大于標簽選擇器的樣式的優先級
結論五:id選擇器的優先級高于類選擇器的優先級
結論六: 行內樣式的選擇器的優先級大于id選擇器的優先級


復合選擇器的樣式優先級核算:

代碼文件找回:17 CSS Priority case.html
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,796評論 1 92
  • CSS基礎 本文包括CSS基礎知識選擇器(重要!!!)繼承、特殊性、層疊、重要性CSS格式化排版單位和值盒模型浮動...
    廖少少閱讀 3,181評論 0 40
  • 本文主要是起筆記的作用,內容來自慕課網. 認識CSS樣式 CSS全稱為“層疊樣式表 (Cascading Styl...
    0o凍僵的企鵝o0閱讀 2,663評論 0 30
  • 楚山清曉聽寒意, 池水微揚寫冬心。 硯邊若無寫經筆, 但看殘紙無俗情。
    風無意聽濤畫苑閱讀 278評論 2 5
  • 【姓名】吳思遠 【派別】玉印派 【導師】袁文魁 王玉印 【分舵】集思廣益隊 【舵主】余祖江 中心圖是瘋狂動物城的主...
    伍拾圓閱讀 1,825評論 0 0