508335848vf

CSS选择器

class与id选择器

​ 通过class选择器,一种样式可以在多个元素上使用,达到可以复用的效果。一般在<style>.className{}</style>中定义内部样式,或者在外部css文件内.className{}定义外联样式,然后在文档中元素中设置class="className"来引用样式。

​ 文档中所有元素id都是唯一的 ,id选择器一般专门用于单个元素的样式。#idName{}定义样式,元素中设置id属性来引用样式。

简单实例

<style>
    #p1{
        font-weight: bolder;
        color:red;
    }
    .center{
        text-align: center;
        background-color: darkslateblue;
        color:darkgreen;
        width:40%;
    }
</style> 
<body>
    <p1 id="p1">希望你惊艳,希望你震撼!</p1>
    <div class="center">
        <p1>你酒窝没有夏日的啤酒,去让我醉成狗</p1>
    </div>
</body>

其它基本选择器

选择器 描述
element 给定元素名匹配元素
* 所有元素

分组与嵌套

分组:在样式表中有多个相同样式的元素,可以通过逗号将他们分隔开来。

<style>
    h1,h2,p{
        color:palevioletred;
    }
</style>
<body>
    <h1>选择器</h1>
    <h2>分组与嵌套</h2>
    <p>分组可以减少代码量</p>
</body>

嵌套:元素与class名嵌套选择/设置样式

样式 作用
element.className 为所有class=className的element元素指定样式
.className element class=className内部的element元素指定样式
<style>
    .mark{
        background-color: cadetblue;
    }
    .mark p{
        color:lawngreen;
    }
    p.mark{
        color:white;
    }

</style>
<body>
    <p class="mark">p.mark的样式</p>
    <div class="mark">
        <p>.mark p的样式</p>
    </div>
</body>

层次选择器

如果想通过DOM元素之间的层次关系来获取特定的元素,层次选择器是一个很好的选择。

后代选择器

ancestor descendant{}为祖先(ancestor)元素的所有后代元素(descendant)指定一个样式。

<style>
    .mark{
        background-color: cadetblue;
    }
    .mark p{
        color:red;
    } 
</style>

<body>
    <div class="mark">
        <p>有字体颜色的段落</p>
        <div>
            <p>同样也有字体颜色的段落</p>
        </div>
    </div>
</body>

子元素选择器

.parent>child,父元素通过>选择子元素,并为其指定样式。

<style>
    .mark{
        background-color: cadetblue;
    }
    .mark>p{
        color:red;
    } 
</style>
<body>
    <div class="mark">
        <p>有字体颜色的段落</p>
        <div>
            <p>无有字体颜色的段落</p>
        </div>
    </div>
</body>

相邻选择器

pre+next 指定紧接着pre元素后的next元素样式。

<style>
    .mark{
        background-color: cadetblue;
    }
    .mark div{
        color:lightblue;
    }
    .mark div+p{
        color:palevioletred;
    }
</style>
<body>
    <div class="mark">
        <div>
            <p>lightblue字体颜色的段落</p>
        </div>
        <p>palevioletred字体颜色的段落</p>
    </div>
</body>

后续兄弟选择器

pre~siblings指定pre元素后的所有siblings元素的样式。

<style>
    .mark{
        background-color: cadetblue;
    }
    .mark div{
        color:lightblue;
    }
    .mark div~p{
        color:palevioletred;
    }
</style>
<body>
    <div class="mark">
        <div>
            <p>lightblue字体颜色的段落</p>
        </div>
        <a>12</a>
        <p>palevioletred字体颜色的段落</p>
        <p>palevioletred字体颜色的段落</p>
    </div>
</body>

伪类(Pseudo-classes)

CSS伪类通过增加样式class选择器的方式,用于向某些选择器添加特殊的效果。

语法:selector:pseudo-class{}

锚状伪类

链接在不同状态显示方式不同。

a:link
a:visited
a:hover
a:actve
<style>
    .mark{
        background-color: cadetblue;
    }
    .mark:link{
        color:white;
    }
    .mark:visited{
        color:palevioletred;
    }
    .mark:hover{
        color:black;
    }
    .mark:active{
        color:palevioletred;
    }
</style>
<body>
    <a class="mark" href="baidu.com">链接颜色随着状态改变而改变</a>
</body>

伪类与CSS类

className:Pseudo-class的方式配合和使用

<style>
    .mark{
        background-color: cadetblue;
    }
    .mark:hover{
        color:palevioletred;
    }
</style>
<body>
    <p class="mark" >链接颜色随着状态改变而改变</p>
</body>

在这个例子中,所有class=mark的元素,当鼠标覆盖时,样式就会改变。

first-child类

通过first-child来选择父类的第一个子元素,如果第一个子元素为指定的元素,那么就会改变第一个子元素的样式。

<style>
    .mark{
        background-color: cadetblue;
    }
    .mark:first-child{
        color:palevioletred;
    }
</style>
<body>
    <p class="mark" >body的第一个子元素的类名为mark,所以可以改变样式</p>
</body>

伪元素

通过改变元素样式的方式,用于向选择器添加特殊的效果。

语法:selector:pseudo-element或者selector.class:pseudo-element

:first-line伪元素:指定段落的第一行特定的样式。

:first-letter伪元素:指定段落的第一个字母的样式。

:before伪元素:与content配合,在元素最前面添加content的内容。

:after伪元素:与content配合,在元素最前面添加content的内容。

<style>
    .mark{
        background-color: cadetblue;
    }
    p.mark:before{
        content:"段落开头"
    }
</style>
<body>
    <p class="mark" >段落正文(正文之前会显示p.mark:before中的content的内容)</p>
</body>

属性选择器

属性选择器可以根据元素的属性及属性值来选择元素。

简单属性选择

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

[attribute]指定attribute属性的样式,例如[title],选择所有具有title属性的元素。

element[attribute]选择具有attribute的属性的element元素。例如a[href]为具有href属性的链接。

根据具体属性值选择

除了选择拥有某些属性的元素,还可以进一步缩小选择范围,只选择有特定属性值的元素。另外还有^= |= ~=操作,选择属性特征(是否包含、开头是、或者结尾是)。

W3school的选择器参考表

选择器 例子 例子描述
.class .intro 选择 class="intro" 的所有元素。
#id #firstname 选择 id="firstname" 的所有元素。
* * 选择所有元素。
element p 选择所有

元素。

element,element div,p 选择所有
元素和所有

元素。

element element div p 选择
元素内部的所有

元素。

element>element div>p 选择父元素为
元素的所有

元素。

element+element div+p 选择紧接在
元素之后的所有

元素。

[attribute] [target] 选择带有 target 属性所有元素。
[attribute=value] [target=_blank] 选择 target="_blank" 的所有元素。
[attribute~=value] [title~=flower] 选择 title 属性包含单词 "flower" 的所有元素。
[attribute|=value] [lang|=en] 选择 lang 属性值以 "en" 开头的所有元素。
:link a:link 选择所有未被访问的链接。
:visited a:visited 选择所有已被访问的链接。
:active a:active 选择活动链接。
:hover a:hover 选择鼠标指针位于其上的链接。
:focus input:focus 选择获得焦点的 input 元素。
:first-letter p:first-letter 选择每个

元素的首字母。

:first-line p:first-line 选择每个

元素的首行。

:first-child p:first-child 选择属于父元素的第一个子元素的每个

元素。

:before p:before 在每个

元素的内容之前插入内容。

:after p:after 在每个

元素的内容之后插入内容。

:lang(language) p:lang(it) 选择带有以 "it" 开头的 lang 属性值的每个

元素。

element1~element2 p~ul 选择前面有

元素的每个

    元素。
[attribute^=value] a[src^="https"] 选择其 src 属性值以 "https" 开头的每个 元素。
[attribute$=value] a[src$=".pdf"] 选择其 src 属性以 ".pdf" 结尾的所有 元素。
[attribute**=value*] a[src*="abc"] 选择其 src 属性中包含 "abc" 子串的每个 元素。
:first-of-type p:first-of-type 选择属于其父元素的首个

元素的每个

元素。

:last-of-type p:last-of-type 选择属于其父元素的最后

元素的每个

元素。

:only-of-type p:only-of-type 选择属于其父元素唯一的

元素的每个

元素。

:only-child p:only-child 选择属于其父元素的唯一子元素的每个

元素。

:nth-child(n) p:nth-child(2) 选择属于其父元素的第二个子元素的每个

元素。

:nth-last-child(n) p:nth-last-child(2) 同上,从最后一个子元素开始计数。
:nth-of-type(n) p:nth-of-type(2) 选择属于其父元素第二个

元素的每个

元素。

:nth-last-of-type(n) p:nth-last-of-type(2) 同上,但是从最后一个子元素开始计数。
:last-child p:last-child 选择属于其父元素最后一个子元素每个

元素。

:root :root 选择文档的根元素。
:empty p:empty 选择没有子元素的每个

元素(包括文本节点)。

:target #news:target 选择当前活动的 #news 元素。
:enabled input:enabled 选择每个启用的 元素。
:disabled input:disabled 选择每个禁用的 元素
:checked input:checked 选择每个被选中的 元素。
:not(selector) :not(p) 选择非

元素的每个元素。

::selection ::selection 选择被用户选取的元素部分。

分类:

技术点:

相关文章:

  • 2022-02-08
  • 2022-01-05
  • 2021-09-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-28
相关资源
相似解决方案