CSS基础选择器和复合选择器
1、CSS简介和语法规范
CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称。 有时我们也会称之为 CSS样式表或级联样式表。
CSS 是也是⼀种标记语⾔。
CSS 主要⽤于设置 HTML 页⾯中的⽂本内容(字体、⼤⼩、对齐⽅式等)、图⽚的外形(宽⾼、边框样式、边距等)以及版⾯的布局和外观显⽰样式。
CSS 让我们的⽹页更加丰富多彩,布局更加灵活⾃如。简单理解:CSS 可以美化 HTML , 让 HTML
更漂亮,让页⾯布局更简单。
CSS 规则由两个主要的部分构成:选择器以及⼀条或多条声明。
选择器是⽤于指定 CSS 样式的 HTML 标签,花括号内是对该对象设置的具体样式。
属性和属性值以“键值对”的形式出现。
属性是对指定的对象设置的样式属性,例如字体⼤⼩、⽂本颜⾊等。
属性和属性值之间⽤英⽂“:”分开。
多个“键值对”之间⽤英⽂“;”进⾏区分。
2、CSS选择器
CSS 选择器的作⽤:选择器(选择符)就是根据不同需求把不同的标签选出来,这就是选择器的作⽤。 简单来说,就是选择标签⽤的。
选择器分为基础选择器和复合选择器两个⼤类。
2.1 基础选择器
基础选择器是由单个选择器组成的。
基础选择器⼜包括:标签选择器、类选择器、id 选择器和通配符选择器。
(1)标签选择器(元素选择器)
标签选择器(元素选择器)是指⽤ HTML 标签名称作为选择器,按标签名称分类,为页⾯中某⼀类标签指定统⼀的 CSS 样式。(2)类选择器
如果想要差异化选择不同的标签,单独选⼀个或者某⼏个标签,可以使⽤类选择器。
类选择器在 HTML 中以 class 属性表⽰,在 CSS 中,类选择器以⼀个点“.”号显⽰。
语法:.类名 { 属性1: 属性值1; ... }
记忆⼝诀:样式点定义,结构类调⽤。⼀个或多个,开发最常⽤。
(3)id 选择器
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
HTML 元素以 id 属性来设置 id 选择器,CSS 中 id 选择器以“#" 来定义。
语法:#id名 { 属性1: 属性值1; ... }
注意:id 属性只能在每个 HTML ⽂档中出现⼀次。
⼝诀: 样式 # 定义,结构 id 调⽤, 只能调⽤⼀次,别⼈切勿使⽤。
(4)通配符选择器
在 CSS 中,通配符选择器使⽤“*”定义,它表⽰选取页⾯中所有元素(标签)。
语法:* { 属性1: 属性值1; ... }
通配符选择器不需要调⽤, ⾃动就给所有的元素使⽤样式。
特殊情况才使⽤,例如:清除所有的元素标签的内外边距。
* { margin: 0; padding: 0; }
(5)基础选择器总结
基础选择器作⽤特点使⽤情况⽤法标签选择器可以选出所有相同的标签,⽐如 p 标签不能差异化选择较多p {color: red;}类选择器可以选出1个或者多个标签可以根据需求选择⾮常多.nav {color: red;} id选择器⼀次只能选择1个标签id属性只能在每个HTML⽂档中出现⼀次⼀般和JS搭配使⽤#nav {color: red;}
通配符选择器选择所有的标签选择的太多,有部分不需要特殊情况使⽤* {color: red;}
每个基础选择器都有使⽤场景,都需要掌握。
如果是修改样式, 类选择器是使⽤最多的。
2.2 复合选择器
在 CSS 中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建⽴在基础选择器之上,对基本选择器进⾏组合形成的。
复合选择器可以更准确、更⾼效的选择⽬标元素(标签)。
复合选择器是由两个或多个基础选择器,通过不同的⽅式组合⽽成的。
常⽤的复合选择器包括:后代选择器、⼦选择器、并集选择器、伪类选择器等等。
(1)后代选择器
后代选择器⼜称为包含选择器,可以选择⽗元素⾥⾯的⼦元素。其写法就是把外层标签写在前⾯,内层标签写在后⾯,中间⽤空格分隔。
当标签发⽣嵌套时,内层标签就成为外层标签的后代。
语法:元素1 元素2 { 样式声明 } 表⽰选择元素 1 ⾥⾯的所有元素 2 (后代元素)
例如:
ul li{样式声明}/* 选择 ul ⾥⾯所有的 li标签元素 */
元素1 和 元素2 中间⽤空格隔开
元素1 是⽗级,元素2 是⼦级,最终选择的是元素2
元素2可以是⼉⼦,也可以是孙⼦等,只要是元素1 的后代即可
元素1 和 元素2 可以是任意基础选择器
(2)⼦选择器
⼦元素选择器(⼦选择器)只能选择作为某元素的最近⼀级⼦元素。简单理解就是选亲⼉⼦元素。
语法:元素1 > 元素2 { 样式声明 } 表⽰选择元素1 ⾥⾯的所有直接后代(⼦元素) 元素2。
例如:
div > p{样式声明}/* 选择 div ⾥⾯所有最近⼀级 p 标签元素 */
元素1 和 元素2 中间⽤⼤于号隔开 。
元素1 是⽗级,元素2 是⼦级,最终选择的是元素2 。
元素2必须是亲⼉⼦,其孙⼦、重孙之类都不归他管。你也可以叫他 亲⼉⼦选择器。
(3)并集选择器
并集选择器可以选择多组标签,同时为他们定义相同的样式。通常⽤于集体声明。
并集选择器是各选择器通过英⽂逗号(,)连接⽽成,任何形式的选择器都可以作为并集选择器的⼀部分。
语法:元素1,元素2 { 样式声明 } 表⽰选择元素1 和 元素2。
例如:
ul,div{样式声明}/* 选择 ul 和 div标签元素 */
元素1 和 元素2 中间⽤逗号隔开。
逗号可以理解为和的意思。
并集选择器通常⽤于集体声明。
(4)伪类选择器
伪类选择器⽤于向某些选择器添加特殊的效果,⽐如给链接添加特殊效果,或选择第1个,第n个元素。
伪类选择器书写最⼤的特点是⽤冒号(:)表⽰,⽐如 :hover 、 :first-child 。
因为伪类选择器很多,⽐如有链接伪类、结构伪类等。
链接伪类选择器注意事项:
为了确保⽣效,请按照 LVHA 的循顺序声明 :link-:visited-:hover-:active。
记忆法:love hate 或者 lv 包包 hao 。
因为 a 链接在浏览器中具有默认样式,所以我们实际⼯作中都需要给链接单独指定样式。
<style>
/* 1.未访问的链接 a:link  把没有点击过的(访问过的)链接选出来 */
a:link{
color: #333333;
text-decoration: none;
}
/* 2.a:visited 选择点击过的(访问过的)链接 */
a:visited{
color: orange;
}css选择器分为哪几类
/* 3.a:hover 选择⿏标经过的那个链接 */
a:hover{
color: skyblue;
}
/* 4.a:active 选择的是我们⿏标正在按下还没有弹起⿏标的那个链接 */
a:active{
color: green;
}
</style>
链接伪类选择器实际⼯作开发中的写法:
/* a 是标签选择器所有的链接 */
a{
color: gray;
}
/* :hover 是链接伪类选择器⿏标经过 */
a:hover{
color: red;/* ⿏标经过的时候,由原来的灰⾊变成了红⾊ */
}
(5):focus 伪类选择器
:focus 伪类选择器⽤于选取获得焦点的表单元素。
焦点就是光标,⼀般情况 类表单元素才能获取,因此这个选择器也主要针对于表单元素来说。
input:focus { background-color:yellow; }
意思是只要表单元素获取到了焦点,背景颜⾊就变成黄⾊。
(6)复合选择器总结
复合选择器作⽤特点使⽤情况隔开符号及⽤法
后代选择器⽤来选择后代元素可以是⼦孙后代较多符号是空格 .nav a
⼦代选择器选择最近⼀级元素只选亲⼉⼦较少符号是⼤于 .nav>p
并集选择器选择某些相同样式的元素可以⽤于集体声明较多符号是逗号 .nav,.header 链接伪类选择器选择不同状态的链接跟链接相关较多重点记住a {}和a:hover 实际开发的写法:focus选择器选择获得光标的表单跟表单相关较少input:focus记住这个写法3、CSS3 新增选择器
CSS3 给我们新增了选择器,可以更加便捷,更加⾃由的选择⽬标元素。
1. 属性选择器
2. 结构伪类选择器
3. 伪元素选择器
3.1 属性选择器
属性选择器可以根据元素特定属性的来选择元素。 这样就可以不⽤借助于类或者id选择器。
注意:类选择器、属性选择器、伪类选择器,权重为 10。
3.2 结构伪类选择器
结构伪类选择器主要根据⽂档结构来选择器元素, 常⽤于根据⽗级选择⾥⾯的⼦元素。
区别:
nth-child 对⽗元素⾥⾯所有孩⼦排序选择(序号是固定的) 先到第 n 个孩⼦,然后看看是否和 E 匹配。
nth-of-type 对⽗元素⾥⾯指定⼦元素进⾏排序选择。 先去匹配E ,然后再根据E 第 n 个孩⼦。
注意:类选择器、属性选择器、伪类选择器,权重为 10。
nth-child(n) 选择某个⽗元素的⼀个或多个特定的⼦元素(重点)
n 可以是数字,关键字和公式 。
n 如果是数字,就是选择第 n 个⼦元素, ⾥⾯数字从1开始。
n 可以是关键字:even 偶数,odd 奇数 。
n 可以是公式:常见的公式如下 ( 如果n是公式,则从0开始计算,但是第 0 个元素或者超出了元素的个数会被忽略)。
结构伪类选择器⼩结
结构伪类选择器就是选择第 n 个。
Nth-child 从所有⼦级开始算的,可能不是同⼀种类型。
Nth-of-type 是指定同⼀种类型的⼦级,⽐如 ul li:nth-of-type(2) 是选择第2个 li。
关于nth-child(n) 我们要知道 n 从 0 开始计算的,要记住常⽤的公式。
如果是⽆序列表,我们肯定⽤ nth-child 更多。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。