1. 程式人生 > >CSS使用方式及選擇器

CSS使用方式及選擇器

CSS概述

  • 1.CSS,全稱“Cascading Style Sheets”,用於設定HTML標籤的樣式,它的基本結構如下:
基本結構

div{width: 480px; height: 320px; }

包含:選擇符div;樣式屬性:width和height;樣式屬性值
  • 2.Css使用方式

樣式表主要有4種方式,即,

  1. “內嵌樣式”:寫在style標籤對裡面。
舉例
<style>
div{
    color: red;
}
</style>
  1. “行內樣式”:直接寫在標籤行上面。
舉例
<div style="color: red;">hello</div>
  1. “外鏈樣式”:單獨寫一個css檔案,通過link標籤引入。
    舉例
“匯入式”:單獨寫一個css檔案,通過@import匯入。
舉例
<style>
@import url("./index.css");
</style>

匯入式可以同時匯入多個樣式,但匯入每個檔案時要如同寫內嵌樣式時,在每個屬性值的末尾加上一個分號結尾。

四種方式的選擇:

1.在開發中關於css樣式一般或多或少都會使用一些行內樣式與內嵌樣式,但是主體還是通過引入單獨的css檔案進行使用的。

2.Link與@import兩種方式都可以引入單獨的css檔案,我們一般選擇link標籤,即外鏈式。

3.Link與@import一些區別

(1)<link>除了載入CSS檔案以外,它還能載入其它型別檔案,如“icon”,而“@import”只能載入CSS檔案

給網頁加上圖示:<link rel="shortcut icon" href="oa.jpg">

(2)<link>在現代的瀏覽器中是多執行緒載入的,也就是說在通過該標籤載入一個檔案的時候<body>標籤內的DOM也在執行同步的載入。載入效率高於@import

(3)<link>

作為一個標籤,也就是一個DOM元素,是可以通過JavaScript進行操作的(如增加、刪除<link>標籤,修改<link>的屬性值等)。而“@import”寫在<style>標籤內部或CSS檔案內(寫在<style>標籤內和CSS檔案內的寫法一致),是無法通過JavaScript進行操作的。

  • 3.常用css選擇器

    Css選擇器常用型別
  1. CSS的基礎選擇器主要有三個:“標籤選擇器”、“類選擇器”和“ID選擇器”。
標籤選擇器
<style>
        div {
            font-size: 32px;
            color: brown;
            width: 300px;
            height: 100px;
            background-color: antiquewhite;
            border: 1px solid red;
            text-align: center;
            line-height: 100px;
        }
    </style>
類選擇器
.sle{
        font-size: 32px;
        color: brown;
        width: 300px;
        height: 100px;
        background-color: antiquewhite;
        border: 1px solid red;
        text-align: center;
        line-height: 100px;
    }
    </style>
 <style>
        #sle {
            font-size: 32px;
            color: brown;
            width: 300px;
            height: 100px;
            background-color: antiquewhite;
            border: 1px solid red;
            text-align: center;
            line-height: 100px;
        }
    </style>
  1. 一個完整的HTML頁面是有很多不同的標籤組成,而標籤選擇器,則是決定哪些標籤採用相應的CSS樣式。
  • 後代選擇器

後代選擇器是對某元素所巢狀的指定元素進行選擇,每個選擇符之間用空格進行分割,多個巢狀層次應該以多個空格進行分割

後代選擇器
 <style>
        div p {
            font-size: 32px;
            color: brown;
            width: 300px;
            height: 100px;
            background-color: antiquewhite;
            border: 1px solid red;
            text-align: center;
            line-height: 100px;
        }
        div .son{
            color: blue;
        }
    </style>
  • 子選擇器

子選擇器區別與後代選擇器的地方就是,後代選擇器可以選擇巢狀在標籤內部任意層級的標籤元素,而自選擇器只能選擇當前標籤往內一層的元素。每個選擇符之間用“>”進行分割。

 <style>
        div>p {
            font-size: 32px;
            color: brown;
            width: 300px;
            height: 100px;
            background-color: antiquewhite;
            border: 1px solid red;
            text-align: center;
            line-height: 100px;
        }

        div>span {
            display: inline-block;
            width: 400px;
            height: 100px;
            border: 1px solid red;
            border-radius: 10px;
            text-align: center;
            line-height: 100px;
        }
    </style>
  • 偽類選擇器

偽類選擇器和其它選擇器有所不同,它是通過觸發一定的“事件”來實現效果,也就是說如果不進行任何操作是看不到該選擇器的CSS樣式設定的。
通用偽類選擇器如下(如果要同時生效,順序不能變):

作用於a標籤上的偽類選擇器如下:
a:link {color: #FF0000}     /* 未訪問的連結 */
a:visited {color: #00FF00}  /* 已訪問的連結 */
a:hover {color: #FF00FF}    /* 滑鼠移動到連結上 */
a:active {color: #0000FF}   /* 選定的連結 */
  • 群組選擇器

群組選擇器的使用範疇是,多個選擇器使用同一個樣式或者同一組樣式。這在做CSS樣式初始化,CSS框架設計以及後期CSS程式碼優化時會經常使用。

群組選擇器
p,div,h1,.mydiv,#par{
    color:red;
}

作用於“,”分隔的所有標籤,類選擇器,ID選擇器。

  • 同級元素選擇器

選定當前標籤同級的其它指定標籤。
同級元素有兩種,即“+”和“~”,
“+”只能選擇該標籤相鄰的下一個標籤

“~”能選擇該標籤後的所有同級標籤。

  p ~ div{
            color: brown;

        }
 <body>
   <a href="https://www.baidu.com/">點選一下</a>
   <div>hello style!</div>
   <p>hello</p>
   <div>hello stye!</div>
   <h1>hello hello</h1>
   <h1>hello hello</h1>
   <div>hello</div>
</body>
  • 屬性選擇器

    1. [屬性名]{...樣式設定內容...}
    
    舉例:[title]{
               color;red;
        
    }
    
    2.[屬性名="屬性值"]{...樣式設定內容...}
    
    
    3.[type^="datetime"]{...樣式設定內容...}
    
    舉例:[title^="iam"]{
             color;red;
    }
    4.[title$="picture"]{...樣式設定內容...}
    
     舉例:[title$="h1"]{
             color;red;
    }
    5.[title*="is"]{...樣式設定內容...}
    
    將標籤中的一個屬性名名為“title”,屬性值含有“is”的屬性名值對作為一個選擇器
    
    舉例:[title*="h1"]{
             color;red;
    }
    
    6.[title~="a"]{...樣式設定內容...}
    
    將標籤中的一個屬性名名為“title”,屬性值含有空格分隔的詞為“a”的屬性名值對作為一個選擇器
    這個規則會選擇 title 文字包含 "a" 的所有影象
    
     舉例:[title~="a"]{
             color;red;
    }
    
    7.[title|="this"]{...樣式設定內容...}
    
    將標籤中的一個屬性名名為“title”,屬性值等於“this”或以“this”開頭的屬性名值對作為一個選擇器。以連字元(-)連線的如lang ="this-us",也算以this開頭
    
    上面這個規則會選擇  title 屬性等於 this 或以 this- 開頭的所有元素
    
    舉例:[title|="this"]{
             color;red;
    }
    
  • 4.權重

當樣式衝突時,將根據【權重+就近原則】來判斷以誰的樣式為準。

  • 基本型別選擇器權重
行列樣式:1000

Id選擇器: 100

Class選擇器:10【屬性選擇器】

標籤選擇器:1

*任意符選擇器:0 (大於預設樣式與繼承驗樣式)
  • 組合選擇器權重

群組選擇器: 單獨計算
後代,子代,兄弟等選擇器:權重相加

  • 就近原則

當權重值相同時,誰和要設定的html標籤隔得近,誰的權重就高。

  • 先比較權重,權重相同依據就近原則
  • 繼承比預設的大,但是比賦予的權重小;
  • 後代,子代,兄弟等選擇器,權重相加(.name>p,權重為10+1=11)
  • 群組選擇器: 單獨計算(div,p,h1,.name ,#pra 權重分別為:1,1,1,10,100)