html之css選擇器學習

 


相關內容:

 

  1. 什麼是css選擇器
  2. 標籤選擇器
  3. 類選擇器
  4. id選擇器
  5. 並集選擇器(分組選擇器)
  6. 交集選擇器
  7. 後代選擇器
  8. 子標籤選擇器
  9. 屬性選擇器
  10. 相鄰兄弟選擇器
  11. 僞類選擇器
  12. 僞元素選擇器(僞對象選擇器)

 

 

首發時間:2018-03-02 css

修改:html

  1. 2018-04-30:修改了排版,增長了僞類選擇器,僞元素選擇器,在本來簡略的介紹的基礎上增長了描述並修改了某些術語描述。
  2. 2018-05-05:修改了部分僞類選擇器的註解,因爲以前發生了小迷糊,因此致使代碼結果正確,但註解不是那個意思。雖然認識並無錯,但因爲是後面才進行正確解釋,因此前面可能形成誤解,因此修改了部分僞類選擇器的註解。

 


什麼是css選擇器:

 

介紹:

css能夠設置標籤的樣式,爲了更好的設置樣式以及爲了方便給某些標籤指定樣式(批量的給某些標籤增長樣式),因此有了css選擇器,css選擇器能夠篩選出指定的標籤。篩選出來以後就能夠給對應的標籤設置樣式。瀏覽器

 

css選擇器的語法:

css選擇器的定義由兩部分組成:一個是選擇器,一個是樣式定義,好比: image 字體

 

 


標籤選擇器

介紹:

標籤選擇器直接根據標籤名來選擇標籤,好比想篩選出全部div標籤,可使用imagespa

 

 

示例:

/* 選擇出全部標籤 */
*{
    margin:0;
    padding:0;
}
 /* 選擇出h1標籤 */
h1 {color:red; font-size:14px;}
/* 選擇出p標籤 */
p { color: #ff0000; }
/* 選擇出body標籤 */
body {
  margin: 0;
  padding: 0;
}

 

補充:

  • *表明全部標籤,可使用*{}來選擇出全部標籤。

類選擇器:

介紹:

  • 類class是標籤的一個屬性image,類選擇器選擇全部標籤中class的屬性值等於類選擇器指定的屬性的全部標籤(注意,類的屬性值能夠在多個標籤中相同)。好比image

 

語法:

  • 類選擇器以一個點號表明 。點號後面跟對應的class中含有的屬性值,便可選擇出含有指定class屬性值的標籤。image

 

 

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
    .center{
        /* 樣式定義*/
        text-align: center;
    }
    .normal{
        font-weight:normal;
    }
</style>
</head>
<body>
      <h1 class='center normal'>類選擇器</h1>
      <div class="center"></div>
</body>
</html>

補充:

  • class中的屬性值能夠有多個,使用空格分隔,類選擇器能夠只針對其中一個屬性值。image

 

 


id選擇器

介紹:

  • 與類選擇器功能相似,不過選擇的屬性是id,選擇出id的屬性值與id選擇器相同的標籤(理論上id的屬性是惟一的,不一樣標籤的id屬性值應該不一樣)image

 

語法:

  • 使用#來進行id選擇,#後面跟着id屬性值,好比:image

 

 

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
    #header{
        /* 樣式定義*/
        background-color: orange;
        width: 960px;
        height: 100px;
        margin:0 auto;
    }
</style>
</head>
<body>
      <div id="header"></div>
</body>
</html>

 

補充:

  • 注意,id的屬性值應該是惟一,因此id選擇器只用來選擇出某個標籤。

並集選擇器(分組選擇器)

 

介紹:

並集選擇器(分組選擇器)由多個選擇器組成,是將指定的多個選擇器都定義一樣的樣式。多個選擇器的關係是並立的,至關於在本來單獨定義的基礎上合併定義3d

 

語法:

使用,來分隔多個選擇器,好比image至關於image,因此明顯的並集選擇器能夠節省很多代碼。code

 

 

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
    #header,#footer{
        width: 960px;
        margin:0 auto;
    }
    #header{
        background-color: orange;
        height: 100px;
    }
    #footer{
        background-color: skyblue;
        height: 500px;
    }
    h1,h2,h3{
        color: green;
        margin:0;
    }
</style>
</head>
<body>
      <div id="header"></div>
      <div id="footer">
          <h1>百度</h1>
      </div>
</body>
</html>

 

 


交集選擇器:

介紹:

交集選擇器由多個選擇器組成,只有同時符合多個選擇器的標籤纔會被選擇出來。orm

 

語法:

多個選擇器直接沒有間隔,直接拼接起來。好比imagehtm

 

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style >
        div.a{ /* 選擇div標籤中class='a'的 */
            background-color: blue;
        }
    </style>
</head>
<body>
    <div class='a'>1</div> <!-- 選中這個 -->
    <div >2</div>
    <div>
        <p class='a'>123</p> <!-- 與後代選擇器不一樣,這個不會被選中 -->
    </div>
</body>
</html>

 

補充:

  • 要注意與下面的後代選擇器的區別

後代選擇器:

 

介紹:

  • 後代選擇器由多個選擇器組成,後面的選擇器選擇範圍基於前面的選擇器。好比image
  • 後代選擇器能夠選擇出子標籤,也能夠選擇出孫子標籤,孫孫子標籤。總之,它能夠選擇出它的後代。只要符合條件的後代就能被選擇出來。

 

 

語法:

後代選擇器中多個選擇器用空格隔開。image對象

 

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
    #header h1{ /* 選擇id爲header的標籤的後代中的h1標籤 */
        color: green;
    }
    div .blue{/* 選擇div標籤的後代中class爲blue的標籤 */
        color:blue;
    }
    </style>
</head>
<body>
      <div id="header">
        <h1>header的標籤下的h1標籤</h1>
      </div>
      <div class="blue">
          這是一個class=blue的div標籤  <!-- 這個不會被div .blue選擇到 -->
      </div>
      <div >
          <h1 class="blue">div下面的class=blue的標籤</h1>
      </div>


</body>
</html>

 

補充:

  • 後代選擇器顧名思義,它只會在後代中查找image

 


子標籤選擇器:

 

介紹:

一樣由多個選擇器組成,與後代選擇器不一樣的是它只會選擇直接子代,不會選擇出孫子標籤之類的非子標籤。

 

語法:

子標籤選擇器比後代選擇器多出一個>來標註只選擇子標籤。好比image

 

 

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #footer > .blue{
            color:blue;
        }
    </style>
</head>
<body>

    <div id="footer" >
        <h1 class="blue">id="footer"下面的子標籤</h1>
        <div>
            <span class="blue">id="footer"下面的非子標籤</span><!-- 這一個不會被選擇出來 -->
        </div>
    </div>

</body>
</html>

 

 


屬性選擇器:

 

介紹:

屬性選擇器是根據屬性選擇出指定標籤image

 

語法:

屬性選擇器使用[]來包裹屬性

  • 僅針對屬性時:[屬性名]{}  好比image
  • 針對屬性跟屬性值時:
    • 對應屬性等於指定值:[屬性名=屬性值]{}image
    • 對應屬性包含指定值(有些屬性能夠包含多個屬性值,這個包含是指能夠等於其中一個屬性值):[屬性名~=屬性值]image
    • 以指定值開頭的屬性值(CSS3支持):[屬性值^=指定值]{}image
    • 以指定值結尾的屬性值(CSS3支持):[屬性值$=指定值]{}
    • 屬性值字符串包含指定值的(CSS3支持):[屬性值*=指定值]{}

 

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        [type]{ /* 選中包含type 屬性的標籤 */
            border:1px solid red;
        }
        [type="text"]{ /* 選中type屬性="text"的標籤 */
            color:green;
        }
        [class~="t1"]{ /* 選中class屬性包含t1的標籤 */
             color:blue;
        }
        [name^="user"]{ /* 選中name屬性以user開頭的標籤 */
             background-color: pink;
        }
        [name*="amy"]{ /* 選中name屬性字符串包含amy的標籤 */
            background-color: purple;
        }
    </style>
</head>
<body>
    <div>
        <input type="text" >
        <input type="password" class="t1">
        <input type="text" name="username">
        <input type="text" name="AamyB">
    </div>

</body>
</html>

 

 


相鄰兄弟選擇器:

 

介紹:

若是須要選擇緊接在某個標籤後的一個標籤,並且兩者有相同的父標籤,可使用相鄰兄弟選擇器

 

語法:

標籤之間使用+來分隔。image

 

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title></title>
    <style>
        h3+p{ /* 選擇h3後面的第一個p兄弟標籤 */
            color:red;
        }
    </style>
</head>
<body>
    <h3>h3標籤</h3>
    <p>h3後的第1個標籤</p>
    <p>h3後的第2個標籤</p>
    <p>h3後的第3個標籤</p>
    <p>h3後的第4個標籤</p>

</body>
</html>

 

補充:

  • 還有一種兄弟標籤選擇器使用~來分隔,這樣的是選擇後面的全部兄弟標籤。image

 

 


 

 

 

 

 

 

 

 

 

 

 

 

僞類選擇器:

介紹:

僞類選擇器原本是給某些標籤添加某些特殊效果的(好比設置當鼠標移到的時候的樣式)【後來增長了很多結構方面的選擇器】

 

語法:

  • 僞類選擇器使用:來定義,好比image
  • 通常使用其餘選擇器來與僞類選擇器來配合使用:好比image

 

常見僞類選擇器:

  • 事件相關:
    • link:設置超連接a在未被訪問前的樣式
    • visited:設置超連接a在其連接地址已被訪問過期的樣式。
    • hover:設置鼠標在標籤上停留時的樣式。
    • active:設置元素被點擊時的樣式(鼠標點擊到鼠標釋放前的樣式)
    • focus:設置元素得到焦點時的樣式
    • 注意:link,visited,hover,active能夠是a標籤的四個狀態,他們在定義的時候應該按照  l v h a 順序來寫,否則會失效。
  • 結構僞類選擇器:
    • first-child:設置第一個孩子的樣式【這類標籤的意思是,符合選擇條件的基礎上,又是父標籤的第一個標籤纔會被選中,好比body中有6個div,那麼div:first-child,會選中第一個div,由於它是div標籤,而且它是body標籤的第一個孩子
    • last-child:設置最後一個孩子的樣式 【CSS3開始】
    • nth-child(n):設置第n個孩子的樣式【CSS3開始】
      • 注意,n的值能夠有如下取值
      • X,X爲天然數,好比2;它會選擇出位置爲X的標籤
      • Xn,X爲一個天然數,好比2n;它會選擇出位置爲X的倍數的標籤,2n會選擇出2,4,6,8….
      • odd,選擇出位置數爲奇數的標籤;even,選擇出位置數爲偶數的標籤
      • 也能夠是一個計算式子:好比2n+1會取出奇數,
    • nth-last-child(n):設置第n個孩子的樣式(從末尾開始數)【CSS3開始】
    • 注意:雖然帶有child,但並非選擇子標籤div:first-child是選擇第一個div標籤
    • 這類標籤的選擇是多個的,若是符合條件,那麼會選擇出多個。【好比div:first-child能夠選擇出body標籤下的第一個孩子而且標籤名爲div的標籤,也能夠選擇出div標籤下的第一個孩子而且標籤名爲div的標籤。】

 

目標僞類選擇器:

  • target:選取當前活動的標籤【與a標籤結合使用,當a標籤點擊到本頁中某個標籤時,認爲該標籤是活動的】
    • image

 

 

示例:

事件相關的僞類選擇器:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style>
        a{
            font-size:100px;
        }
        a:link{   /* 給全部未點擊過的a標籤增長上樣式*/
            color: red;
            text-decoration:none;
        }
        a:visited{ /* 給點擊過的a標籤增長上樣式 */
            color:purple;
        }
        a:hover{ /*  當鼠標移到a標籤上時,增長上樣式*/
            color:green;
        }
        a:active{ /* 鼠標點擊過程當中顯示的樣式*/
            background-color: pink;
        }
        #header:hover{
        /*  當鼠標移到#header選擇出的標籤時,增長上樣式*/
            background-color: blue;
        }

    </style>
</head>
<body>
    <a href="#1">1</a>
    <a href="#2">2</a>
    <a href="#3">3</a>
    <a href="#4">4</a>
    <div id="header">
        div的內容
    </div>
</body>
</html>

 

結構僞類選擇器:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style>
        p{
            font-size:20px;
        }
        p:first-child{/* 選擇第1個*/
            color:red;
        }
        p:last-child{ /* 選擇最後一個*/
            color:green;
        }
        p:nth-child(2){ /* 選擇第二個*/
            color:pink;
        }
        p:nth-child(2n){ /* 選擇2,4,6,8.。。 */
            background-color: gray;
        }
        p:nth-last-child(2n){/* 從後面開始數 選擇2,4,6,8.。。 */
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
    <p>5</p>
    <p>6</p>
</body>
</html>

目標僞類選擇器:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style>
        div:target{ /* 當元素活動是增長樣式 */ 
            background-color: blue;
        }

    </style>
</head>
<body>
    <a href="#id1">123</a>
    <div id="id1">   
        123456
    </div>
</body>
</html>

 

 

補充:

  • 上面的僞類選擇器是經常使用的,但還有一些不經常使用的,若是想要了解更多,請查看官方文檔。

 


僞元素選擇器(僞對象選擇器)

 

介紹:

僞元素選擇器能夠選擇非整個標籤的內容好比第一個字符(first-letter)、第一行(first-line);也能夠像插入一個標籤同樣在某個位置插入內容(before,after)

 

語法:

僞元素選擇器使用::來定義,好比image

 

常見僞元素選擇器

  • first-letter:給第一個字符設置樣式image 【要求使用的標籤爲塊級標籤】
  • first-line:給第一行設置樣式image【要求使用的標籤爲塊級標籤】
  • selection:給選擇的文本設置樣式 【有些瀏覽器沒法顯示所設置的樣式,好比火狐】image
    • selection只能定義被選擇時的background-color,color及text-shadow
  • before:在標籤以前插入一個內容image
    • 【與content屬性配合使用,content的內容爲插入的內容】
    • 要注意的是,這個插入的內容有點相似標籤,它可以設置背景顏色,字體顏色等等屬性。【這個相似的標籤是一個行內標籤】
  • after:在標籤以後插入一個內容image

 

 

示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style>
    p:first-child::first-letter{ /* 給第一個字符設置樣式 */
        font-size:30px;
    }
    p:nth-child(2)::first-line{ /* 給第一行設置樣式*/
        background-color: skyblue;
    }
    p:nth-child(3)::selection{
        background-color: orange;
    }
    p::before{ /* 在全部p標籤以前加上《論語》 */
        content:"《論語》";
        font-size:30px;
    }
    p::after{ /* 在全部p標籤以前加上 魯迅表示很無辜 */
        content:" 魯迅表示說的對";
        font-size:30px;
    }
    </style>
</head>
<body>
    <p>學而時習之,不亦說乎</p>
    <p>子曰:「學而時習之,不亦說乎?有朋自遠方來,不亦樂乎?人不知而不慍,不亦君子乎?」</p>
    <p>曾子曰:「吾日三省吾身:爲人謀而不忠乎?與朋友交而不信乎?傳不習乎?」</p>

</body>
</html>

 

 

補充:

  • 在舊版CSS中使用:帶定義僞元素選擇器,在CSS3中使用::
相關文章
相關標籤/搜索