首頁 頭條 簡單介紹30個CSS3選擇器用法總結

簡單介紹30個CSS3選擇器用法總結

Dec 19, 2017 am 11:49 AM
css3 選擇器

我們比較熟悉的幾個選擇器是:#id  .class  以及標籤選擇器。但這些還遠遠不夠,為了在開發中更加得心應手,本文總結了30個CSS3選擇器,希望對大家有幫助。

1 *:通用選擇器

* {   margin:0;   padding:0;  }
登入後複製

*選擇器是選擇頁面上的全部元素,上面的程式碼作用是把全部元素的margin和padding設為0,最基本的清除瀏覽器預設樣式的方法。

*選擇器也可以應用到子選擇器中,例如下面的程式碼:


#
#container * {   border:1px solid black;  }
登入後複製

這樣ID為container 的所有子標籤元素都被選中了,並且設定了border。

2 #id:id選擇器


#container {
   width: 960px;
   margin: auto;
}
登入後複製

id選擇器是很嚴格的並且你沒辦法去復用它。使用的時候大家還是得相當小心的。需要問自己一下:我是不是必須要給這個元素來賦值個id來定位它呢?

3 .class:類別選擇器


.error {
  color: red;
}
登入後複製

這是個class選擇器。它跟id選擇器不同的是,它可以定位多個元素。當你想對多個元素進行樣式修飾的時候就可以使用class。當你要對某個特定的元素進行修飾那就是用id來定位它。

4 selector1 selector2:後代選擇器


#
li a {
  text-decoration: none;
}
登入後複製

後位選擇器是比較常用的選擇器。如果你想更具體的去定位元素,你可以使用它。例如,假如,你不需要定位所有的a元素,而只需要定位li標籤下的a標籤?這時候你就需要使用後代選擇器了。  

提示:如果你的選擇器像X Y Z A B.error這樣,那你就錯了。時時刻刻提醒自己,是否真的需要對那麼多元素進行修飾。

5 tagName:標籤選擇器


a { color: red; }
ul { margin-left: 0; }
登入後複製

如果你想定位頁面上所有的某個標籤,不是透過id或是'class',這簡單,直接使用類型選擇器。

6 selector:link  selector:visited  selector:hover  selector:active  偽類選擇器

##一般情況下selector都為a標籤,以上四種偽類選擇器代表的意思如下:

link:連接平常的狀態。  

visited:連線被存取之後。  

hover:滑鼠放到連線上的時候。  

active:連接被按下的時候。

未移入a標籤連結時:link  

移入a標籤連結時:link、hover  

點選a標籤連結時:link、hover、active  

點選後未移入a標籤連線時:link、visited  

點擊後移入a標籤連線時:link、visited、hover  

點擊後再點選a標籤連線時:link、 visited、hover、active  

這個就是所有組合的樣式了。

如果有多個同樣的樣式,後面的樣式會覆蓋前面的樣式,所以這四個偽類的定義就有順序的要求了,而大家所說的'lvha'也是因為這個原因。

7 selector1 + selector2 :相鄰選擇器


#

ul + p {
   color: red;
}
登入後複製

它只會選取指定元素的直接後繼元素。上面那個例子就是選取了所有ul標籤後面的第一段,並將它們的顏色都設為紅色。

8 selector1 > selector2 : 子選擇器


p#container > ul {
  border: 1px solid black;
}
登入後複製

它與差異就是後面這個指揮選擇它的直接子元素。看下面的範例


<p id="container">
   <ul>
      <li> List Item
        <ul>
           <li> Child </li>
        </ul>
      </li>
      <li> List Item </li>
      <li> List Item </li>
      <li> List Item </li>
   </ul>
</p>
登入後複製

#container > ul只會選取id為’container’的p下的所有直接ul元素。它不會定位到如第一個li下的ul元素。由於某些原因,使用子節點組合選擇器會在效能上有許多的優勢。事實上,當在javascript中使用css選擇器時候是強烈建議這麼做的。

9 selector1 ~ selector2 : 兄弟選擇器


#

ul ~ p {
  color: red;
}
登入後複製

兄弟節點組合選擇器跟相鄰選擇器很相似,然後它又不是那麼的嚴格。 ul + p選擇器只會選擇緊接著指定元素的那些元素。而這個選擇器,會選擇跟在目標元素後面的所有相符的元素。

10 selector[title] : 屬性選擇器


a[title] {
  color: green;
}
登入後複製

上面的這個例子中,只會選擇有title屬性的元素。那些沒有此屬性的錨點標籤將不會被這個程式碼修飾。

11 selector[href="foo"] : 屬性選擇器


a[href="http://strongme.cn"] {
  color: #1f6053; /* nettuts green */
}
登入後複製

上面這片程式碼將會將href屬性值為http://strongme.cn的錨點標籤設定為綠色,而其他標籤則不受影響。  

注意:我們將數值用雙引號括起來了。那麼在使用Javascript的時候也要用雙引號括起來。可以的話,盡量使用標準的CSS3選擇器。

12 selector[href*=”strongme”]   : 屬性選擇器#


a[href*="strongme"] {
  color: #1f6053;
}
登入後複製

指定了strongme这个值必须出现在锚点标签的href属性中,不管是strongme.cn还是strongme.com还是www.strongme.cn都可以被选中。

但是记得这是个很宽泛的表达方式。如果锚点标签指向的不是strongme相关的站点,如果要更加具体的限制的话,那就使用^和$,分别表示字符串的开始和结束。

13 selector[href^=”href”] : 属性选择器


a[href^="http"] {
   background: url(path/to/external/icon.png) no-repeat;
   padding-left: 10px;
}
登入後複製

大家肯定好奇过,有些站点的锚点标签旁边会有一个外链图标,我也相信大家肯定见过这种情况。这样的设计会很明确的告诉你会跳转到别的网站。

用克拉符号就可以轻易做到。它通常使用在正则表达式中标识开头。如果我们想定位锚点属性href中以http开头的标签,那我们就可以用与上面相似的代码。

注意我们没有搜索http://,那是没必要的,因为它都不包含https://。

14 selector[href$=”.jpg”] : 属性选择器


a[href$=".jpg"] {
  color: red;
}
登入後複製

这次我们又使用了正则表达式$,表示字符串的结尾处。这段代码的意思就是去搜索所有的图片链接,或者其它链接是以.jpg结尾的。但是记住这种写法是不会对gifs和pngs起作用的。

15 selector[data-*=”foo”] : 属性选择器


a[data-filetype="image"] {
   color: red;
}
登入後複製
登入後複製

回到上一条,我们如何把所有的图片类型都选中呢png,jpeg,’jpg’,’gif’?我们可以使用多选择器。看下面:


a[href$=".jpg"],
a[href$=".jpeg"],
a[href$=".png"],
a[href$=".gif"] {
   color: red;
}
登入後複製

但是这样写着很蛋疼啊,而且效率会很低。另外一个办法就是使用自定义属性。我们可以给每个锚点加个属性data-filetype指定这个链接指向的图片类型。


a[data-filetype="image"] {
   color: red;
}
登入後複製
登入後複製

16 selector[foo~=”bar”] : 属性选择器


a[data-info~="external"] {
   color: red;
}
 
a[data-info~="image"] {
   border: 1px solid black;
}
登入後複製

这个我想会让你的小伙伴惊呼妙极了。很少有人知道这个技巧。这个~符号可以定位那些某属性值是空格分隔多值的标签。

继续使用第15条那个例子,我们可以设置一个data-info属性,它可以用来设置任何我们需要的空格分隔的值。这个例子我们将指示它们为外部连接和图片链接。


<a href="path/to/image.jpg" data-info="external image"> Click Me, Fool </a>
登入後複製

给这些元素设置了这个标志之后,我们就可以使用~来定位这些标签了。


/* Target data-info attr that contains the value "external" */
a[data-info~="external"] {
   color: red;
}
 
/* And which contain the value "image" */
a[data-info~="image"] {
  border: 1px solid black;
}
登入後複製

17 selector:checked : 伪类选择器


input[type=radio]:checked {
   border: 1px solid black;
}
登入後複製

上面这个伪类写法可以定位那些被选中的单选框和多选框,就是这么简单。

18 selector:after : 伪类选择器

before和after这俩伪类。好像每天大家都能找到使用它们的创造性方法。它们会在被选中的标签周围生成一些内容。

当使用.clear-fix技巧时许多属性都是第一次被使用到里面的。


.clearfix:after {
    content: "";
    display: block;
    clear: both;
    visibility: hidden;
    font-size: 0;
    height: 0;
  }
 
.clearfix { 
   *display: inline-block; 
   _height: 1%;
}
登入後複製

上面这段代码会在目标标签后面补上一段空白,然后将它清除。这个方法你一定得放你的聚宝盆里面。特别是当overflow:hidden方法不顶用的时候,这招就特别管用了。

根据CSS3标准规定,可以使用两个冒号::。然后为了兼容性,浏览器也会接受一个冒号的写法。其实在这个情况下,用一个冒号还是比较明智的。

19 selector:hover : 伪类选择器


p:hover {
  background: #e3e3e3;
}
登入後複製

不用说,大家肯定知道它。官方的说法是user action pseudo class.听起来有点儿迷糊,其实还好。如果想在用户鼠标飘过的地方涂点儿彩,那这个伪类写法可以办到。

注意:旧版本的IE只会对加在锚点a标签上的:hover伪类起作用。

通常大家在鼠标飘过锚点链接时候加下边框的时候用到它。


a:hover {
 border-bottom: 1px solid black;
}
登入後複製

专家提示:border-bottom:1px solid black;比text-decoration:underline;要好看很多。

20 selector1:not(selector2) : 伪类选择器


p:not(#container) {
   color: blue;
}
登入後複製

取反伪类是相当有用的,假设我们要把除id为container之外的所有p标签都选中。那上面那么代码就可以做到。

或者说我想选中所有出段落标签之外的所有标签


:not(p) {
  color: green;
}
登入後複製

21 selector::pseudoElement : 伪类选择器


p::first-line {
  font-weight: bold;
  font-size:1.2em;
}
登入後複製

我们可以使用::来选中某标签的部分内容,如第一段,或者是第一个字。但是记得必须使用在块式标签上才起作用。

伪标签是由两个冒号 :: 组成的

定位第一个字:


p::first-letter {
   float: left;
   font-size: 2em;
   font-weight: bold;
   font-family: cursive;
   padding-right: 2px;
}
登入後複製

上面这段代码会找到页面上所有段落,并且指定为每一段的第一个字。

它通常在一些新闻报刊内容的重点突出会使用到。

定位某段的第一行


p::first-line {
   font-weight: bold;
   font-size: 1.2em;
}
登入後複製

跟::first-line相似,会选中段落的第一行

为了兼容性,之前旧版浏览器也会兼容单冒号的写法,例如:first-line,:first-letter,:before,:after.但是这个兼容对新介绍的特性不起作用。

22 selector:nth-child(n) : 伪类选择器


li:nth-child(3) {
   color: red;
}
登入後複製

还记得我们面对如何取到堆叠式标签的第几个元素时无处下手的时光么,有了nth-child那日子就一去不复返了。

请注意nth-child接受一个整形参数,然后它不是从0开始的。如果你想获取第二个元素那么你传的值就是li:nth-child(2).

我们甚至可以获取到由变量名定义的个数个子标签。例如我们可以用li:nth-child(4n)去每隔3个元素获取一次标签。

23 selector:nth-last-child(n) : 伪类选择器


li:nth-last-child(2) {
   color: red;
}
登入後複製

假设你在一个ul标签中有N多的元素,而你只想获取最后三个元素,甚至是这样li:nth-child(397),你可以用nth-last-child伪类去代替它。

24 selectorX:nth-of-type(n) : 伪类选择器


ul:nth-of-type(3) {
   border: 1px solid black;
}
登入後複製

曾几何时,我们不想去选择子节点,而是想根据元素的类型来进行选择。

想象一下有5个ul标签。如果你只想对其中的第三个进行修饰,而且你也不想使用id属性,那你就可以使用nth-of-type(n)伪类来实现了,上面的那个代码,只有第三个ul标签会被设置边框。

25 selector:nth-last-of-type(n) : 伪类选择器


ul:nth-last-of-type(3) {
   border: 1px solid black;
}
登入後複製

同样,也可以类似的使用nth-last-of-type来倒序的获取标签。

26 selector:first-child : 伪类选择器


ul li:first-child {
   border-top: none;
}
登入後複製

这个结构性的伪类可以选择到第一个子标签,你会经常使用它来取出第一个和最后一个的边框。

假设有个列表,每个标签都有上下边框,那么效果就是第一个和最后一个就会看起来有点奇怪。这时候就可以使用这个伪类来处理这种情况了。

27 selector:last-child : 伪类选择器


ul > li:last-child {
   color: green;
}
登入後複製

跟first-child相反,last-child取的是父标签的最后一个标签。

例如

标签


<ul>
   <li> List Item </li>
   <li> List Item </li>
   <li> List Item </li>
</ul>
登入後複製

这里没啥内容,就是一个了 List。


ul {
 width: 200px;
 background: #292929;
 color: white;
 list-style: none;
 padding-left: 0;
}
 
li {
 padding: 10px;
 border-bottom: 1px solid black;
 border-top: 1px solid #3c3c3c;
}
登入後複製

上面的代码将设置背景色,移除浏览器默认的内边距,为每个li设置边框以凸显一定的深度。

28 selector:only-child : 伪类选择器


p p:only-child {
   color: red;
}
登入後複製

说实话,你会发现你几乎都不会用到这个伪类。然而,它是相当有用的,说不准哪天你就会用到它。

它允许你获取到那些只有一个子标签的父标签下的那个子标签。就像上面那段代码,只有一个段落标签的p才被着色。


<p><p> My paragraph here. </p></p>
<p>
   <p> Two paragraphs total. </p>
   <p> Two paragraphs total. </p>
</p>
登入後複製

上面例子中,第二个p不会被选中。一旦第一个p有了多个子段落,那这个就不再起作用了。

29 selector:only-of-type: 伪类选择器


li:only-of-type {
   font-weight: bold;
}
登入後複製

结构性伪类可以用的很聪明。它会定位某标签下相同子标签的只有一个的目标。设想你想获取到只有一个子标签的ul标签下的li标签呢?

使用ul li会选中所有li标签。这时候就要使用only-of-type了。


ul > li:only-of-type {
   font-weight: bold;
登入後複製

最后记住:使用像jQuery等工具的时候,尽量使用原生的CSS3选择器。可能会让你的代码跑的很快。这样选择器引擎就可以使用浏览器原生解析器,而不是选择器自己的。

相关推荐:

详解CSS选择器 Selector

如何用CSS3属性选择器替代JS的作用

css中关于选择器的使用总结

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

css3怎麼實現花邊邊框 css3怎麼實現花邊邊框 Sep 16, 2022 pm 07:11 PM

在css中,可以利用border-image屬性來實作花邊邊框。 border-image屬性可以使用圖片來建立邊框,即給邊框加上背景圖片,只需要將背景圖片指定為花邊樣式即可;語法「border-image: url(圖片路徑) 向內偏移值圖像邊界寬度outset 是否重複;」。

css中id選擇符的標識是什麼 css中id選擇符的標識是什麼 Sep 22, 2022 pm 03:57 PM

在css中,id選擇符的識別是“#”,可以為標有特定id屬性值的HTML元素指定特定的樣式,語法結構“#ID值 {屬性 : 屬性值;}”。 ID屬性在整個頁面中是唯一不可重複的;ID屬性值不要以數字開頭,數字開頭的ID在Mozilla/Firefox瀏覽器中不起作用。

使用:nth-child(n+3)偽類選擇器選擇位置大於等於3的子元素的樣式 使用:nth-child(n+3)偽類選擇器選擇位置大於等於3的子元素的樣式 Nov 20, 2023 am 11:20 AM

使用:nth-child(n+3)偽類選擇器選擇位置大於等於3的子元素的樣式,具體程式碼範例如下:HTML程式碼:&lt;divid="container"&gt;&lt;divclass="item"&gt ;第一個子元素&lt;/div&gt;&lt;divclass="item"&

javascript選擇器失效怎麼辦 javascript選擇器失效怎麼辦 Feb 10, 2023 am 10:15 AM

javascript選擇器失效是因為程式碼不規範導致的,其解決方法:1、把引入的JS程式碼去掉,ID選擇器方法即可有效;2、在引入「jquery.js」之前引入指定JS程式碼即可。

CSS新特性學習:方向裁切overflow:clip CSS新特性學習:方向裁切overflow:clip Oct 11, 2022 pm 07:12 PM

這篇文章將介紹一個新特性,從 Chrome 90 開始,overflow 新增的新特性 -- overflow: clip,使用它,輕鬆的對溢出方向進行控制。

css中的選擇器包含超文本標記選擇器嗎 css中的選擇器包含超文本標記選擇器嗎 Sep 01, 2022 pm 05:25 PM

不包括。 css選擇器有:1、標籤選擇器,是透過HTML頁面的元素名稱定位具體HTML元素;2、類別選擇器,是透過HTML元素的class屬性的值定位具體HTML元素;3、ID選擇器,是透過HTML元素的id屬性的值定位具體HTML元素;4、通配符選擇器“*”,可以指所有類型的標籤元素,包括自訂元素;5、屬性選擇器,是透過HTML元素已經存在屬性名或屬性值來定位具體HTML元素。

深度解析is與where選擇器:提升CSS編程水平 深度解析is與where選擇器:提升CSS編程水平 Sep 08, 2023 pm 08:22 PM

深度解析is與where選擇器:提升CSS程式水平引言:在CSS程式設計過程中,選擇器是不可或缺的元素。它們允許我們根據特定的條件選擇HTML文件中的元素並對其進行樣式化。在這篇文章中,我們將深入探討兩個常用的選擇器,分別是:is選擇器和where選擇器。透過了解它們的工作原理和使用場景,我們可以大大提升CSS編程的水平。一、is選擇器is選擇器是一個非常強大的選擇

從入門到精通:掌握is與where選擇器的使用技巧 從入門到精通:掌握is與where選擇器的使用技巧 Sep 08, 2023 am 09:15 AM

從入門到精通:掌握is與where選擇器的使用技巧引言:在進行資料處理與分析的過程中,選擇器(selector)是一項非常重要的工具。透過選擇器,我們可以按照特定的條件從資料集中提取所需的資料。本文將介紹is和where選擇器的使用技巧,幫助讀者快速掌握這兩個選擇器的強大功能。一、is選擇器的使用is選擇器是一種基本的選擇器,它允許我們根據給定條件對資料集進