目錄
通配选择器
元素选择器
类选择器和ID选择器
属性选择器
Hello!
Jrooana!
后代选择器
子元素选择器
相邻兄弟选择器
伪类和伪元素选择器
This is an h2 element
首頁 web前端 html教學 [读书笔记] CSS权威指南1: 选择器_html/css_WEB-ITnose

[读书笔记] CSS权威指南1: 选择器_html/css_WEB-ITnose

Jun 24, 2016 am 11:20 AM

通配选择器

可以与任何元素匹配,就像是一个通配符

/*每一个元素的字体都设置为红色*/* {    color: red;}
登入後複製

元素选择器

指示文档元素的选择器。

/*为body的字体设置为红色*/body {    color: red;}
登入後複製

分组

  • 选择器分组
  • h1, h2, h3 {    color: red;}
    登入後複製

  • 声明分组
  • h1 {    font: 18px Helvetica;    color: purple;    background: aqua;}
    登入後複製

  • 结合选择器和声明分组
  • h1, h2, h3 {    font: 18px Helvetica;    color: purple;    background: aqua;}
    登入後複製

    类选择器和ID选择器

    独立于文档元素的方式来指定样式

  • 类选择器
  • .warning {    font-weight: bold}/*包含warning元素的p标签会apply下面的style*/p.warning {    font-weight: bold}/*同时包含urgent和warning类名的元素会apply下面的style,类名顺序不限*/.urgent.warning {    font-weight: bold}/*同时包含urgent和warning类名的元素P会apply下面的style*/p.urgent.warning {    font-weight: bold}
    登入後複製

  • ID选择器
  • #content {    margin: 0;}
    登入後複製

    ID选择器和类选择器的不同之处:

    1. 在一个HTML文档中,ID选择器会使用一次,而且仅一次。因此,如果有一个元素的id值为lead-para,那么该文档中所有其他元素的id值都不能是lead-para。(注: 浏览器通常并不检查HTML中ID的唯一性,这意味着如果你在HTML文档中设罝了多个有相同ID属性值的元素,就可能为这些元素应用相同的样式。)
    2. ID选择器不能结合使用,因为ID属性不允许有以空格分隔的词列表。

    类选择器和ID选择器可能是区分大小写的,这取决于文档语言。HTML和 XHTML将类和ID值定义为区分大小写,所以类和ID值的大小写必须与文档中的相应值匹配。

    属性选择器

  • 简单属性选择器
  • 如果希望选择有某个属性的元素,而不论该属性的值是什么,可以使用一个简单属性选择器。

    /*选择有class属性(值不限)的所有h1元素,设置其字体颜色为红色 */h1[class] {    color: red;}/*将同时有href和title属性的HTML超链接的文本置为粗体*/a[href][title] {    font-weight: bold;}
    登入後複製

  • 根据具体属性值选择
  • /*设置具有href属性,并且属性值为http://www.w3.org/的a标签的font-size为200%*/a[href="http://www.w3.org/"] {    font-size: 200%;}/*同时满足*/a[href="http://www.w3.org/"][title="W3C Home"]{    font-size: 200%;}
    登入後複製

    这种格式要求必须与属性值完全匹配

  • 根据部分属性值选择
  • 如果属性能接受词列表(词之间用空格分隔),可以根据其中的任意一个词进行选择。

    <span class="barren rocky">Mercury</planet><span class="cloudy barren">Venus</planet><span class="life-bearing cloudy">Earth</planet>/*为了把class属性中有barren的所有元素变为斜体,可以写作:*/span[class~="barren"] { font-style: italic;}
    登入後複製

    p.warning和p[class~="warning"]应用到HTML文档时是等价的

    类型 描述
    [foo^="bar"] 选择foo属性值以"bar"开头的所有元素
    [foo$="bar"] 选择foo属性值以"bar"结尾的所有元素
    [foo~="bar"] 选择foo属性值包含"bar"的所有元素(属性的值根据空格分隔,其中任意一个词能完全匹配bar)
    [foo*="bar"] 选择foo属性值包含"bar"的所有元素(只要包含就可以了,任意位置都可以,不必是一个完整的单词)
  • 特定属性选择类型
  • 用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。

    <h1 id="Hello">Hello!</h1><p lang="en-us">Greetings!</p><div lang="en-au">G’day!</div><p lang="fr">Bonjour!</p><h4 id="Jrooana">Jrooana!</h4>/*上述标签前三个会变成红色,后两个还是黑色*/*[lang|="en"] { color: red;}
    登入後複製

    后代选择器

    h1 em {    color: gray;}/*blockquote中包含的所有b(粗体)元素的文本颜色为灰色,另外正常段落中的所有粗体文本也为灰色*/blockquote b, p b {    color: gray;}
    登入後複製

    后代选择器中,元素之间的层次间隔可以是无限的。

    子元素选择器

    h1>strong {    color: red;}
    登入後複製

    子元素选择器限制为只匹配树种直接相连的元素。

    可以在同一个选择器中结合使用后代选择器和子选择器。

    /*选择作为一个td元素子元素的所有p元素,这个td元素本身从table元素继承,该table元素有一个包含summary的class属性*/table.suitimary td > p {    color: red;}
    登入後複製

    相邻兄弟选择器

    和子结合符一样,相邻兄弟结合符旁边可以有空白符。

    /*去除紧接在一个h1元素后出现的段落的上边距*/h1+p {    margin-top: 0;}
    登入後複製

    需要注意的是:

  • 用一个结合符只能选择两个相邻兄弟中的第二个元素。因此,如果写作li+li {font-weight: bold;},只会把各列表中的第二个及以后的列表项变成粗体。
  • 两个元素之间的文本内容不会影响相邻兄弟结合符起作用。
  • <div><ol><li>List item 1</li><li>List item 1</li><li>List item 1</li></ol> This is some text that is part of the 'div'.<ul><li>A list item</li><li>Another list item</li><li>Yet another list item</li></ul></div>/*尽管两个列表间多了一行文本,不过还是可以用选择器ol+ul来匹配第二个列表。*/ol+ul {    color: red;}
    登入後複製

    伪类和伪元素选择器

    利用伪类和伪元素选择器,可以为文档中不一定具有存在的结构指定样式,或者为某些元素(甚至是文档本身)的状态所指示的幻像类指定样式。会根据另外某种条件而非文档结构向文档中的某些部分应用样式,而且无法通过研究文档的标记准确地推断出采用何种方式应用样式。

  • 伪类选择器
  • 伪类名 描述
    :link

    指示作为超链接(即有一个href属性)并指向一个未访问地址的所有锚。

    注意,有些浏览器可能会不正确地将:link解释为指向任何超链接,包括已访问和未访问的超链接

    :visited

    指示作为已访问地址超链接的所有锚

    :focus 指示当前拥有输入焦点的元素,也就是说,可以接受键盘输入或者能以某种方式激活的元素
    :hover

    指示鼠标指针停留在哪个元素上。

    例如,鼠标指针可能停留在一个超链接上,:hover就会指示这个超链接

    :active

    指示被用户输入激活的元素。

    例如,鼠标指针停留在一个超链接上时,如果用户点击鼠标,就会激活这个超链接,将指示这个超链接

    a {    color: red;}a:link {    color: red;}/*两者是不同的,a:link指示的是一个有href属性的,并且未访问过的所有a节点a会应用到所有a标签*/
    登入後複製

    a:link {    color: blue;}a:visited {    color: red;}a.external:link, a.external:visited {    color: maroon;}
    登入後複製

    伪类的顺序很重要,通常建议为link-visited-focus-hover-active。

    :link和:visited是静态的——第一次显示之后,它们一般不会在改变文档的样式。

    :focus, :hover, :active是动态伪类。动态伪类可以应用到任何元素。

    input:focus {  background-color: silver;  font-weight: bold;}
    登入後複製

  • 选择第一个子元素——:first-child,这也是一个静态伪类。
  • /*作为某元素(可以是任意元素)的第一个子元素的所有P元素设置为粗体。最常见的错误是认为p:first-child之类的选择器会选择p元素的第一个子元素。*/p:first-child {    font-weight: bold;}
    登入後複製

  • 根据语言选择—— :lang()伪类。
  • 从对应的模式来讲,:lang()伪类就像是|=属性选择器。

    *:lang(fr) {   font-style: italic;}
    登入後複製

    伪选择器和属性选择器之间的主要差别在于语言信息可以从很多来源得到,而且其中一些可能在元素之外。CSS2.1指出:

    在HTML中,语言由lang属性和META元素的组合来确定,还可能包括协议提供的信息,如HTTP首部。XML使用一个xml:lang属性,另外可能还有其他文档语言特定的方法来确定语言。

    因此,伪类比属性选择器稍微健壮一些。

    结合伪类:

    /*鼠标指针停留在未访问链接上时,可以让这些链接变成红色,而鼠标指针停留在已访问链接上时,链接变成紫红色。*/a:link:hover {    color: red;}a:visited:hover {    color: maroon;}
    登入後複製

    用哪种顺序指定并不重要,写成a:hover:link会得到与a:link:hover一样的效果。

  • 伪元素选择器
  • 就像伪类为锚指定幻象类一样,伪元素能够在文档中插入假想的元素,从而得到某种效果。CSS2.1中定义了4个伪元素:设置首字母样式、设置第一行样式、设置之前和之后的样式。

  • 设置首字母样式
  • 用于设置一个块级元素首字母的样式,而且仅对该首字母设置样式。

    /*让每个h2中第一个字母的大小是标题中其余字母大小的2倍*/h2:first-letter {    font-size: 200%;}
    登入後複製

    这个规则会导致用户代理(浏览器)对一个假想的元素作出响应,这个假想元素包含每个h2中的第一个字母。可能如下所示:

    This is an h2 element


    :first-letter样式只应用到上例所示假想元素的内容。这个元素并不出现在文档源代码中。相反,它是由用户代理动态构造的,用于向相应文本块应用:first-letter样式。换句话说,是一个伪元素。

  • 设置第一行样式
  • :first-line可以用来影响元素中第一个文本行。(第一行是指显示区域的第一行,所以浏览器窗口大小不同,第一行所代表的字符数量也是不同的。)

    /*应用于每一段所显示的第一行文本。*/p:first-line {    color: red;}
    登入後複製

    :first-letter, :first-line允许设置的CSS属性:

    :first-letter :first-line
    所有的font属性 所有的font属性
    color color
    所有background属性 所有background属性
    所有margin属性
    所有padding属性
    所有border属性
    text-decoration text-decoration
    vertical-align vertical-align
    text-transform text-transform
    line-height line-height
    float
    letter-spacing letter-spacing
    word-spacing
  • 设置之前和之后的样式
  • h2:before {  content: "before";  color: red;}h2:after {  content: "after";  color: red;}
    登入後複製

    所有伪元素都必须放在出现该伪元素的选择器的最后面,如果写成p: first-line em就是不合法的,因为伪元素在选择器主体前面出现。

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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.能量晶體解釋及其做什麼(黃色晶體)
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25:如何解鎖Myrise中的所有內容
    4 週前 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)

    &gt; gt;的目的是什麼 元素? &gt; gt;的目的是什麼 元素? Mar 21, 2025 pm 12:34 PM

    本文討論了HTML&lt; Progress&gt;元素,其目的,樣式和與&lt; meter&gt;元素。主要重點是使用&lt; progress&gt;為了完成任務和LT;儀表&gt;對於stati

    &lt; datalist&gt;的目的是什麼。 元素? &lt; datalist&gt;的目的是什麼。 元素? Mar 21, 2025 pm 12:33 PM

    本文討論了html&lt; datalist&gt;元素,通過提供自動完整建議,改善用戶體驗並減少錯誤來增強表格。Character計數:159

    HTML5中跨瀏覽器兼容性的最佳實踐是什麼? HTML5中跨瀏覽器兼容性的最佳實踐是什麼? Mar 17, 2025 pm 12:20 PM

    文章討論了確保HTML5跨瀏覽器兼容性的最佳實踐,重點是特徵檢測,進行性增強和測試方法。

    &lt; meter&gt;的目的是什麼。 元素? &lt; meter&gt;的目的是什麼。 元素? Mar 21, 2025 pm 12:35 PM

    本文討論了HTML&lt; meter&gt;元素,用於在一個範圍內顯示標量或分數值及其在Web開發中的常見應用。它區分了&lt; meter&gt;從&lt; progress&gt;和前

    我如何使用html5&lt; time&gt; 元素以語義表示日期和時間? 我如何使用html5&lt; time&gt; 元素以語義表示日期和時間? Mar 12, 2025 pm 04:05 PM

    本文解釋了HTML5&lt; time&gt;語義日期/時間表示的元素。 它強調了DateTime屬性對機器可讀性(ISO 8601格式)的重要性,並在人類可讀文本旁邊,增強Accessibilit

    如何使用HTML5表單驗證屬性來驗證用戶輸入? 如何使用HTML5表單驗證屬性來驗證用戶輸入? Mar 17, 2025 pm 12:27 PM

    本文討論了使用HTML5表單驗證屬性,例如必需的,圖案,最小,最大和長度限制,以直接在瀏覽器中驗證用戶輸入。

    視口元標籤是什麼?為什麼對響應式設計很重要? 視口元標籤是什麼?為什麼對響應式設計很重要? Mar 20, 2025 pm 05:56 PM

    本文討論了視口元標籤,這對於移動設備上的響應式Web設計至關重要。它解釋瞭如何正確使用確保最佳的內容縮放和用戶交互,而濫用可能會導致設計和可訪問性問題。

    &lt; iframe&gt;的目的是什麼。 標籤?使用時的安全考慮是什麼? &lt; iframe&gt;的目的是什麼。 標籤?使用時的安全考慮是什麼? Mar 20, 2025 pm 06:05 PM

    本文討論了&lt; iframe&gt;將外部內容嵌入網頁,其常見用途,安全風險以及諸如對象標籤和API等替代方案的目的。

    See all articles