CSS选择器

本文详细介绍了CSS的各种选择器(如标签选择器、复合选择器、伪类选择器等)、元素布局方式(块级、行内、行内块级)、背景和溢出处理,以及CSS盒模型和背景属性的使用。通过实例和概念阐述,帮助读者理解和掌握CSS基础和高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、标签选择器

选择所有同名标签

2、css复合选择器

有两个或多个基础选择器,通过"不同的方式"组合而成

3、后代选择器

选中子孙后代(需要标签是嵌套关系)

选择器1 选择器2 选择器3...{

}

4、子元素选择器

只能选中子代(亲儿子)

选择器1 > 选择器2 > 选择器3...{

}

5、兄弟选择器

需要标签是同级关系(兄弟关系)

选择器1+选择器2+选择器3...{

}

找到下一个相邻的标签

6、并集选择器(分组选择器)

把多个选择器放在同一组,它们具有相同样式,分组选择器一般用于提取公共样式,公共样式写在分组选择器里面,不同的样式单独写

选择器1,选择器2,选择器3...{

}

7、交集选择器

标签选择器类选择器{

}

标签选择器id选择器{

}

8、同胞选择器(E~F)

选某元素后面所有的同胞元素,E和F是同级元素,且F在E的后面,它们之间可以有,也可以没有其他同胞元素,同胞元素就是兄弟元素

9、属性选择器
9.1 语法1

9.1.1 通过已经存在的属性名或者属性值匹配元素

9.1.2 title标签是HTML标签的全局属性,所有html标签都有

9.1.3 [attr]表示带有以attr命名属性的元素

9.1.4 [attr="value"]表示带有以attr命名的属性,且属性值为value的元素

9.1.5 [attr^ ="value"]表示带有以attr命名的属性,且属性值是以value开头的元素

9.1.6 [attr$="value"]表示带有以attr命名的属性,且属性值是以value结尾的元素

9.1.7 [attr*="value"]表示带有以attr命名的属性,且属性值至少包含一个value值的元素

9.2 语法2

9.2.1 [attr~="value"]表示带有以attr命名的属性的元素,并且该属性是一个以空格作为分隔的值列表,其中至少有一个值为value

9.2.2 [attr|="value"]表示带有以attr命名的属性的元素,属性值为"value"或是以"value-"为前缀

10、伪选择器

10.1 满足一定条件,才会显示

10.2 语法

10.2.1 css选择器:伪类{css属性:css属性值;}

10.2.2 链接伪类选择器(锚伪类):通过超链接的不同状态,对其设置不同的样式

10.2.3 链接伪类选择器有四个状态,书写时,有顺序要求,爱恨准则(先有爱,后有恨)

选择器名 描述

:link 未访问的状态 超链接没有被访问

:visited 访问过后状态 超链接已经被访问

:hover 鼠标放上状态 鼠标放在超链接上面,但是并没有将鼠标左键按下去

:active激活状态 鼠标左键已经按下,但是并没有将鼠标左键弹出

10.2.4 伪类选择器都是带有":"

10.2.5 :link和:visited只对a标签有效,:hover和:active对任何元素都有效,:hover鼠标移上元素以后的样式

10.2.5 超链接的美化

很多网页a链接的:link和:visited是同一个样式,而:hover和:active也是同一个样式

10.2.6 表单伪类

:focus 获取焦点以后的样式

10.3 结构伪类选择器

E代表元素

10.3.1 E:first-child 匹配父元素中的第一个子元素E

10.3.2 E:last-child 匹配父元素中最后一个子元素E

10.3.3 E:nth-child(n) 匹配父元素中的第n个子元素E

10.3.4 使用关键字odd表示奇数,even表示偶数

            2n就是2的倍数

            如果n是公式,则从0开始计算

10.3.5 nth-of-type选择器:

E:first-of-type 指定类型E的第一个

E:last-of-type 指定类型E的最后一个

E:nth-of-type(n) 指定类型的第n个

使用first-child,last-child,nth-child需要看html结构所在位置

10.4 伪类选择器

10.4.1 给页面上的元素设置样式,"必须满足一定的条件",我们的伪类选择器设置的样式才会显示。

比如,  :hover 鼠标悬停在元素上面的以后,才会触发的样式

10.5 伪元素选择器

10.5.1 伪元素顾名思义,就是假的元素,不是真正HTML元素; 在 CSS 中允许使用伪元素来添加一些选择器的特殊效果

10.5.2 E::first-letter 文本的第一个字母或字(如中文、日文、韩文等)

10.5.3 E::first-line   文本第一行

10.5.4 E::selection  选中文本以后的样式

10.5.5 "first-letter" 伪元素只能用于"块级元素"。这个伪元素用于指定一个元素第一个字母的样式。所有前导标点符号应当与第一个字母一同应用该样式。

10.5.6 "first-line" 伪元素只能用于"块级元素"。

10.5.7 E::selection只可以应用于少数的CSS属性:   color, background,text-shadow文字阴影

10.5.8 lorem+n个  可以生成n个英文单词

10.5.9 E::before伪元素和E::after伪元素

10.5.10 E::before伪元素在标签内容之前添加一个"行内元素",通过content属性设置行内元素的标签内容,content属性不能省略

10.5.11 E::after伪元素在标签内容之后添加一个"行内元素",通过content属性设置行内元素的标签内容,content属性不能省略

10.5.12 没有标签内容,before和after也可以生效

11、通过.div1~.div5现象观察,我们可以得到结论,默认纯字母或者纯数字,是不会自动换行的;  只有中文内容才会自动换行; 但是可以通过设置word-break: break-all;属性实现英文和数字自动换行

12、列表样式属性

12.1 只给无序列表和有序列表使用

12.2 列表样式属性可以给ul,ol,li,这三个标签设置都可以

12.3 列表样式类型list-style-type取值:disc实心圆,square正方形,circle空心圆,none没有项目列表符号

12.4 列表项目符号出现的位置list-style-position取值:inside里面,outside外面(默认值)

12.5 使用图片替换列表项目符号list-style-image:取值 url(图片所在路径)

12.6 list-style简写属性,可以设置列表相关样式,多个属性之间使用空格隔开,没有顺序要求,也可以省略

12.7 一般我们使用列表项目符号样式的时候,都是去掉列表项目符号,所以记住list-style-type:none或list-style:none

13、元素显示方式
13.1 块级元素

13.1.1 多个同名元素默认会独占一行

13.1.2 且宽高属性起作用

13.1.3 宽度默认父元素的百分百

13.1.4 eg:div,h1-h6,p,ul,li,ol...

13.2 行内元素

13.2.1 不会独占一行,一行可以显示多个

13.2.2 默认宽度由内容决定

13.2.3 不能设置有效宽高

13.2.4 eg:span,i,s,del,b,strong,em,ins,a...

13.3 行内块元素

13.3.1 具有行内元素的部分特点,又具有块级元素的部分特点

13.3.2 可以一行显示,并且可以设置宽高度

13.3.3 默认宽度就是它本身的宽度

13.3.4 eg:input,img,textarea...

13.4 改变元素的显示方式

13.4.1 通过display属性可以改变元素的显示方式,改变成什么元素,就具有什么元素的特点

display:block转化成块级元素

display:inline转成行内元素

display:inline-block转成行内块元素

14、css背景属性

14.1 background-color设置背景颜色,取值颜色值

14.2 background-image:url(背景图片所在路径)设置背景图片

14.3 背景图片可以覆盖背景颜色

14.4 background-repeat设置背景图片的重复方式

14.4.1 取值:repeat 水平垂直方向都重复

repeat-x 水平方向重复

repeat-y 垂直方向重复

no-repeat 水平垂直方向都不重复

14.5 css背景定位

14.5.1 background-position,决定从什么位置显示我们的背景图片

1 方向位置英文单词 水平 left center right 垂直 top center bottom

2 百分比取值 正负值都允许

3 具体数值带css单位 正负值都允许

14.5.2 背景定位应用-精灵图(雪碧图):

如果想要雪碧图中某个小图片,我们就需要使用背景定位技术

1 把目标小图片,通过背景定位,移动到元素的左上角

2 改变高度宽度,让元素的宽度高度仅能显示这个小图片

3 通过这个网站可以备注我们实现背景定位:Sprite Cow - Generate CSS for sprite sheets

14.5.3 背景简写属性

background简写属性,可以设置背景相关样式属性,没有顺序要求,每个属性值以空格隔开,可以省略某个或者某些属性值

注意:background简写属性会清空之前设置的背景相关属性

15、overflow属性

15.1 overflow定义一个元素的内容太大而无法适应 块级格式化上下文时候该做什么

15.2 取值:visible,hidden,scroll,auto,inherit

1 visible:默认,内容不会修剪,会呈现在元素框之外

2 hidden:内容会被修剪,并且其余内容不可见

3 scroll:内容会被修剪,浏览器会显示滚动条以便查看其余内容

4 auto:由浏览器定夺,如果内容被修剪,就会显示滚动条

5 inherit: 规定从父元素继承overflow属性的值

15.3 溢出隐藏

1 强制显示滚动条,不管内容是否超出,都会有滚动条出现

2 自动显示滚动条,当前内容超出以后,才会出现滚动条

16、css三大模块
16.1 盒子模型

16.1.1 盒子模型(内容width,height+边框border+内容填充padding+外边距margin),浮动(float),定位(position),其余都是细节。

16.1.2 就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形都由元素的"内容(width,height)"、"内边距(padding)"、"边框(border)"和"外边距(margin)"组成。

16.2 边框

16.2.1 属性border: border-width border-style border-color;( 边框粗细 边框样式 边框颜色)

16.2.2 边框粗细取值是数值带px单位

16.2.3 边框样式取值 solid实线 dashed虚线 none没有线 double(双实线) dotted(点状线)

16.2.4 边框颜色取值就是颜色值

16.2.5 border设置的是四个方向(上下左右)的边框线

16.2.5.1 /* 设置不同方向的边框 */

            /* border-top: 边框粗细 边框样式 边框颜色;

            /* border-bottom: 边框粗细 边框样式 边框颜色;

            /* border-left: 边框粗细 边框样式 边框颜色;

            /* border-right: 边框粗细 边框样式 边框颜色;

16.2.5.2 /* 设置四个方向的边框线 */

            border: 10px solid blue;

            /* 去掉右边框线 */

            /* border-right: 10px none blue;

            /* border-right: none;

            /* border-right: 0px;

            /* 一个border-left等同于设置了下面3个属性

            border-left-width

            border-left-style

            border-left-color */

            /* border-left: 5px solid black; */

            /* 设置左边框线的颜色 */

            border-left-color: black;

            /* 设置右边框线的样式 */

            border-right-style: dashed;

            /* 设置下边框线的粗细 */

            border-bottom-width: 10px;

16.2.6 边框应用-制作三角形

16.2.7 圆角边框

16.2.7.1 圆角边框属性:border-radius: 数值带px单位或者百分比;

16.2.7.2 设置border-radius:50%可以让一个正方形变成圆形

/* border-radius: 一个值;

            /* border-radius: 20px;

            /* border-radius: 两个值;

            /* border-radius: 20px 80px;

            /* border-radius: 三个值;

            /* border-radius: 20px 80px 0px;

            /* border-radius: 四个值;

            border-radius: 10px 20px 30px 40px;(顺时针)

16.3 轮廓属性

轮廓属性outline,也称之为外轮廓线,外边框线

outline语法跟border的语法几乎一样

outline: 2px solid red;

去掉input标签的外轮廓线:outline: none;

16.4 内填充

16.4.1 内填充指的是 从"内容到边框"的距离

        /* padding的取值是数值带px单位,只能正值,不允许负值 */

        /* padding:1个值 */

        /* padding:2个值 */

        /* padding:3个值 */

        /* padding:4个值 */

16.4.2 设置某个方向的内填充

        /* padding-top上填充 */

        /* padding-bottom下填充 */

        /* padding-left左填充 */

        /* padding-right右填充 */

/* padding: 10px; */

            /* padding: 4个方向都是这个值 */

            padding: 10px 20px;

            /* padding: 上下 左右 */

            /* padding: 10px 20px 30px; */

            /* padding: 上 左右 下; */

            /* padding: 10px 20px 30px 40px; */

            /* padding: 上 右 下 左 */(顺时针)

padding和border会撑开盒子宽度跟高度 但是padding只能影响内容,不影响背景图片

默认盒子真实宽度 =  宽度 + 左右边框 + 左右内填充

默认盒子真实高度 =  高度 + 上下边框 + 上下内填充

16.5 margin

16.5.1 margin外边距, 是盒子与盒子之间的距离 是边框外面的距离 

        /* margin的用法跟padding类似 */

        /* margin的取值可以写数值带px单位, 允许"负值" */

        /* margin的取值还可以写一个auto关键字, auto表示自动的意思 */

        /* margin:10px; */

        /* margin:10px 20px; */

        /* margin:10px 20px 30px; */

        /* margin:10px 20px 30px 40px; */

        /* margin-top上外边距 */

        /* margin-right右外边距 */

        /* margin-bottom下外边距 */

        /* margin-left左外边距 */

 /* 去掉列表项目符号 */

            list-style: none;

16.5.2 给元素设置  边框线 或者 外轮廓线 或者 背景颜色,可以观察元素所在位置

16.5.3 padding只影响内容,不影响背景

16.5.4 content的属性取值可以写内容,也可以通过url()设置背景图片

16.5.5 margin实现盒子水平居中

16.5.6 让元素内容水平居中

text-align: center;

16.5.7 实现单行文字垂直居中

line-height: 50px;

16.5.8 /* auto表示自动分配剩余空间

/* margin-left: auto;表示把所有剩余空间都给左边

/* margin-right: auto;表示把所有剩余空间都给右边

/* margin实现盒子水平居中(重点,常用,必须得掌握)

16.6 让一个盒子实现水平居中,需要满足以下三个条件

            1. 必须是块级元素。

            2. 盒子必须指定了小于父元素100%的宽度(width)

            3. 然后就给左右的外边距都设置为auto,就可使块级元素水平居中。

/* margin: 0 auto; */

/* margin: 100px auto; */

/* margin: auto; */

某些HTML标签自带padding或者margin

16.6.1 /* 使用分组选择器优化 */

        /* body,ul,h1,h2,h3,h4,h5,h6,p,dl,dd{

            margin: 0;

            padding: 0;

        } */

16.6.2  /* 使用通配符选择器 */

文字水平居中 text-align:center

盒子水平居中 设置已有宽度的块级元素的左右margin为auto

图片水平居中 设置父元素的text-align:center

图片水平居中 设置父元素的padding-left

图片水平居中 设置子元素的margin-left

背景图片水平居中 使用背景定位属性background-position

16.6.3 初始化样式开始

/* 清除所有标签的内填充和外边距 */

{

            margin: 0;

            padding: 0;

 }

17、步骤

第一步: 先根据效果图,写出合理的HTML结构

第二步: 先写初始化样式,再写具体样式

第三步: 先写大盒子样式,再写小盒子样式(从左到右,从上到下)

标准文档流就是HTML元素的默认排列方式, 块级元素独占一行, 行内元素或者行内块元素不独占一行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨桃贝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值