1. 程式人生 > >學習總結:CSS(一)定義方式、選擇器、選擇器權重

學習總結:CSS(一)定義方式、選擇器、選擇器權重

一、CSS的定義方式

1.內部樣式:<style></style>

2.行間樣式:<div style="width:100px;height:100px;">

3.外部樣式:<link rel="stylesheet" type="text/css" href="地址" >

注:瀏覽器非同步載入html、css、js檔案

二、CSS選擇器

1.常用選擇器:類選擇器、id選擇器、標籤選擇器、萬用字元選擇器

/*類選擇器*/
/*
假設頁面有一個或多個同類名元素,且該類元素有一些共同的樣式特性。當然通常我們的設計邏輯是有這樣一些共同特性元素的需求,預先設計編寫一組樣式表,用來描述具備特定需求的元素。*/ /*假設有需求是有一些元素的寬高為100px,內邊距和外邊距為0,文字內容,文字溢位部分被剪下*/ .exa{ width: 100px; height: 100px; margin:0 auto; padding: 0 auto; text-align
: center; line-height: 100px; overflow: hidden; }

標籤選擇器與類選擇器的使用邏輯非常相似,就是用來描述頁面同一類標籤的元素的樣式。類選擇器使用程式設計師自己在元素屬性上定義的class屬性值來選定(.類名),點加類名的方式來設定。而標籤選擇器直接使用標籤名即可。

id選擇器就是使用元素上定義的id屬性值來設定,在di屬性值前面加上井號“#”就可以實現,設定的特定的一個元素的樣式。實際開發中並不建議使用id選擇器來設定樣式表,根據專案和開發手冊要求來定。

萬用字元使用的應該是最少的一種,出現在常用名單裡的原因是我們每個樣式表的第一行都是用星號“*”,即萬用字元來去除元素原本的預設樣式,如元素的預設邊距、列表標籤的預設序列號、超連結元素的預設字型顏色和下劃線、統一全域性字型大小和字型及顏色等一系列應用。

2.父子選擇器/派生選擇器

基於標籤選擇器、類選擇器、id選擇器的父子關係進行篩選需要匹配的元素,每級條件用空格間隔。

/*比如有需求是:找到頁面中id為“showcase”的div下,所有有序列表的列表項內的img元素中,設定樣式為寬300px,高200px,內外邊距為0畫素,超出部分隱藏*/
div #showcase ul li img{
    margin: 0 auto;
    padding: 0 auto;
    width: 100px;
    height: 100px;
    overflow: hidden;
}

3並列選擇器

這個選擇器也是基於標籤選擇器、類選擇器、id選擇器來實現的,通過基礎選擇器組合,有別於父子選擇器的是並列選擇器的每個基礎選擇器之間不加空格。

/*例如有需求是:有一類元素是div並且都有類名是showcase和primary的樣式是,寬高249px;內外邊距為0,邊框1畫素藍色*/
div.showcase.primary{
    width: 249px;
    height: 249px;
    padding: 0 auto;
    margin: 0 auto;
    border: 1px solid blue;
}

4.直接子元素選擇器

是在父子選擇器的基礎上演變而來的一個選擇器,比如要找到一個div元素下的子元素em,但是在其他子元素下面還有em,所以就不能使用div em的父子選擇器來實現了,這時候就可以採用直接子元素選擇器div > em,在父子選擇器的基礎上新增一個大於號,中間可以加空格也可以不加空格。這樣就是可以實現匹配一個元素下的子元素,而不會影響到其他後代元素。

5屬性選擇器

 在通常的情況下我們使用類名作為選擇器或者id選擇器其本質都是屬性選擇器,所謂的屬性選擇器就是使用元素的屬性和屬性值作為匹配條件。

語法:[屬性值=屬性值]

屬性值的型別與元素上的一致,不需要發生改變。

/*比如有需求是找到img元素的圖片名稱是figure的元素,並設定寬300px,高250px,超出部分隱藏*/
img[src*="figure"]{
    width: 300px;
    height: 250px;
    overflow: hidden;
}

注意留意中間出現的一個符號“*”,在屬性選擇器中還存在^、$、~、|四個特殊的符號。

星號(*)表示在屬性值中出現了指定的字串。

(^)表示在屬性值內有以指定字串開頭的屬性值。

($)表示在屬性值內有以指定字串結尾的屬性值。

(~)表示在屬性值內有指定的屬性值。

(|)表示在屬性值整個以指定的字串開頭。

[class="aaa bbb ccc"]{...}
/*(^)匹配屬性值內有指定的字元開頭的屬性*/
[class^="a"]{...}
[class^="b"]{...}
[class^="c"]{...}
/*(|)匹配屬性值以指定的字串開頭*/
[class|="a"]{...}
[class|="aa"]{...}
[class|="aaa b"]{...}
...

6.分組選擇器

分組選擇器就是同時有多個選擇器同時匹配一個樣式列表,使用逗號間隔。

.exa,div #showcase ul li img,div.showcase.primary,img[src*="figure"]{...}

7.偽類選擇器

通過指定偽類設定元素樣式,偽類即為不需設定就存在的類,css語法自有的類。在一定程度上解決了行為特性的需求。

 :active 向被啟用的元素新增樣式
 :focus 向擁有鍵盤輸入焦點的元素新增樣式
 :hover 當滑鼠懸浮元素上方時,向該元素新增樣式
 :link 向未被訪問的連結新增樣式
 :visited 向已被訪問的連結新增樣式
 :first-child 向元素的第一個子元素新增樣式
 :lang 向帶有指定lang屬性的元素新增樣式

 三、偽元素

1.在一個標籤內,內容前後隱式的存在邏輯上的兩個元素,內容的邏輯前是:before,內容的邏輯後是:after

2.在css中選取偽元素的語法:標籤名::before/after

3.偽元素中的content樣式屬性可以設定偽元素的內容,這個樣式只存在偽元素中,必須寫content才能生效(content:"";)

4.偽元素是行級元素

 :first-letter 向文字的第一個字母新增特殊樣式
 :first-line 向文字的首行新增特殊樣式
 :before 在元素之前新增內容
 :after 在元素之後新增內容

偽元素是由HTML語法給每一個標籤內建的虛擬但真實存在的元素,這裡的屬性其實質是虛擬標籤的class值

四、css樣式權重

!important        infinity     正無窮     寫在樣式後面

行間樣式          1000

id                      100

class|屬性|偽類  10

標籤 | 偽元素      1

萬用字元                0

注:計算機的:正無窮+1 > 正無窮

權重數值採用的256進位制計算。

css複合樣式的權重採用權重值相加,誰的權重值的和大使用誰。