CSS选择器

CSS简介

CSS是装饰页面的技术。

语法结构

选择器 {
    属性名1:属性值1;
    属性名2:属性值2;
    ...
}

语法注释

/*注释内容*/

引入css的方式

1.head标签中的style标签内部直接编写css代码

2.head标签中的link标签引入外部css文件

3.标签内部通过style属性直接编写

CSS基本选择器

1.标签选择器:通过标签来定义css样式

/*选择页面的所有h1标签*/
h1 {
    
}
/*选择页面的所有img标签*/
img {
    
}

2.类选择器:通过标签的class属性定义css样式

html:

<p class='p1'>我的class属性值是p1</p>
<p class='p1'>我的class属性值是p1</p>
<p class='p2'>我的class属性值是p2</p>

css:

/*选择页面标签class属性为p1的标签*/
.p1 {
    
}
/*选择页面标签class属性为p2的标签*/
.p2 {
    
}

3.id选择器:通过标签的id属性定义css样式

html:

<p id='p1'>我的id属性值是p1</p>
<p id='p1'>我的id属性值是p1</p>
<p id='p2'>我的id属性值是p2</p>

css

/*选择页面标签id属性为p1的标签*/
#p1 {
    
}
/*选择页面标签id属性为p2的标签*/
#p2 {
    
}

4.通用选择器:选择所有标签定义css样式

/*选择页面所有标签*/
* {
   
}

image

组合选择器

通过标签关系选择标签来定义css样式。

html:

<div class='div1'>
    <p class='p1'>
        我是div1儿子p1
    </p>
    <p class='p2'>
        我是div1儿子p2,p1的毗邻
    </p>
    <div class='div2'>
        <p class="p3">
            我是div1孙子p3
        </p>
    </div>
</div>

1.儿子选择器(使用大于号),查找标签内部,只向内部查找一层。

/*选择class值为div1的标签内部儿子的class是p1的标签*/
.div1 > .p1 {

}

2.后代选择器(关键符号是空格),查找标签内所有的标签。

/*选择class值为div1的标签内部所有的p标签*/
.div1 p {

}

3.毗邻选择器(关键符号是加号),查找标签同级别下紧挨的第一个标签。

/*选择class值为p1的标签同级别下一个class值为p2的标签*/
.p1 + .p2 {

}

4.弟弟选择器(关键符号是小波浪号),查找同级别下的所有标签。

/*选择class值为p1的标签同级别下所有p标签*/
.p1 ~ p {
	
}

属性选择器

根据标签内部的属性名和属性值查找标签(关键符号是中括号)。

1.直接通过属性名查找

/*选择所有标签中有class属性值的*/
[class] {

}

2.通过属性与值查找

/*选择所有标签中有type属性值的,并且值为text的*/
[type='text'] {

}

3.通过属性与值查找,并指定具体标签

/*选择所有input标签中有type属性值的,并且值为text的,*/
input[type='text'] {

}

分组与嵌套

分组

css定义样式时可以把多种样式相同的选择器放在一起定义。

/*选择p标签、div标签、class属性值为abc的标签*/
p, div, .abc {
    
}

嵌套

多种选择器可以混合起来使用。

/*选择div标签中id为d1的标签内部所有的p标签*/
div#d1 p{
    
}

伪类选择器

我们可以根据标签不同的状态,对标签进行一些修改。

1.鼠标悬浮

/*定义鼠标停在p标签上时的样式*/
p:hover {
    
}

2.获取聚点(选中输入框)

/*输入框被鼠标选择时的样式*/
input:focus {
    
}

其他伪类选择器:

/*未访问链接的样式*/
a:link {

}
/*选定链接后的样式*/ 
a:active {

}
/*已访问链接后的样式*/
a:visited {

} 

伪元素选择器

伪元素选择器可以通过CSS操作文本内容。

first-letter:选择首个字设置样式

/*给class值为p1的标签的文本首字母设置样式*/
.p1:first-letter {
    
}

before:在标签之前插入内容

/*在每个p标签之前插入内容*/
p:before {
    content:"内容";
}

after:在标签之后插入内容

/*在每个p标签之后插入内容*/
p:after {
    content:"内容";
}

使用场景:

  1. 用于清除浮动带来的负面影响
  2. 使用伪元素选择器添加的内容无法在页面的html中找到,所以可以防止被爬取。

选择器优先级

有了这么多的选择器,CSS样式设计经常会出现对同一个标签设置多个样式,标签选择的样式是有优先级的。

相同选择器的情况:就近原则,谁离得近就选择哪个样式。比如使用link导入的样式和style添加的样式,谁里的标签近,标签就选择哪个。

不同选择器的情况:行内选择器 > id选择器 > 类选择器 > 标签选择器。

image

posted @ 2022-04-25 17:35  Yume_Minami  阅读(72)  评论(0编辑  收藏  举报