复合选择器可以更准确、更高效的选择目标元素(标签)。
复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的。
常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等等。
后代选择器又称为包含选择器,可以选择父元素里面的子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。
语法:
元素1 元素2 {样式声明}
上述语法表示选择元素1里面的所有元素2(后代元素)。
例如:
元素1和元素2中间用空格隔开。
元素1是父级,元素2是子级,最终选择的是元素2。
元素2可以是儿子,也可以是孙子等,只要是元素1的后代即可。
元素1和元素2可以是任意基础选择器。
子元素选择器(子选择器)只能选择作为某元素的最近一级子元素。简单理解就是选亲儿子元素。
语法:
上述语法表示选择元素1里面的所有直接后代(子元素)元素2。
例如:
元素1和元素2中间用大于号(>)隔开。
元素1是父级,元素2是子级,最终选择的是元素2。
元素2必须是亲儿子,其孙子、重孙之类都不归他管。也可以叫他亲儿子选择器。
并集选择器、伪类选择器等等。
并集选择器可以同时选择多组标签,同时为他们定义相同的样式。通常用于集体声明。
并集选择器是各选择器通过英文逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。
语法:
上述语法表示选择元素1和元素2。
元素1和元素2中间用逗号隔开。
逗号可以理解为和的意思。
并集选择器通常用于集体声明。
伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。
伪类选择器书写最大的特点是用冒号(:)表示,比如:hover、:first-child。
因为伪类选择器很多,比如有链接伪类、结构伪类等,所以看这里先给大家讲解常用的链接伪类选择器。
1.为了确保生效,请按照 LVHA 的循顺序声明::link-:visited-:hover-active。
2.因为a链接在浏览器中具有默认样式,所以我们实际工作中都需要给链接单独指定样式。
二链接伪类选择器实际开发中的写法:
:focus伪类选择器用于选取获得焦点的表单元素。
焦点就是光标,一般情况<input>类表单元素才能获取,因此这个选择器也主要针对于表单元素来说。
CSS复合选择器包括子选择器、相邻选择器、包含选择器、多层选择器嵌套、属性选择器、伪选择器和伪元素选择器,以上具体的使用如下:1.子选择器
复制代码
代码如下:
<style type="text/css">
#pic>img{ // 使用 >号,让选择器只选择直接的子类,width:200px
height:200px
}
</style>
<div id="pic">
<img src="1.jpg" alt="photo" />
<span><img src="btn" alt="点击大图" /></span>
</div>
2.相邻选择器
如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(Adjacent sibling selector)。
例如,如果要增加紧接在 h1 元素后出现的段落的上边距,可以这样写:
h1 + p {margin-top:50px}
这个选择器读作:“选择紧接在 h1 元素后出现的段落,h1 和 p 元素拥有共同的父元素”。
3.包含选择器
复制代码
代码如下:
#header p{font-size:14px}
#main p {font-size:12}
定义<div id = "header">包含框里的段落字体大小为14像素
定义<div id = "main">包含框里的段落字体大小为12像素.
4.多层选择器嵌套
复制代码
代码如下:
#wrap #header h2 span {font-size:24px}
#wrap #main h2 span {font-size:14px}
5.属性选择器
(1)匹配属性名选择器
div[class] {font-size:24px}
使该选择器能够匹配div中设置了class属性的对象定义格式
(2)匹配属性值选择器
img[alt="图像"][title="图像"] {border:solid 2px red}:
给<img src="images/pic1.jpg" alt="图像" title=“图像”>定义样式
(3)模糊匹配属性值选择器
6.伪选择器和伪元素选择器
复制代码
代码如下:
<style type ="text/css">
a:link{color:#FF0000} /*正常链接状态下样式*/
a:visited{color:#0000FF} /*被访问之后的样式*/
a:hover{color:#00FF00} /*鼠标经过的样式*/
a:active{color:#FF00FF} /*超链接被激活的样式*/
</style>
简单的动画”复选框设置HTML创建一个标准的无序列表(为了方便测试,特别复制出一份代码)
<ul>
<li>
<input type="checkbox" name="manager" id="manager" />
<label for="manager">Project Manager</label>
</li>
<li>
<input type="checkbox" name="webdesigner" id="webdesigner" />
<label for="webdesigner">Web Designer</label>
</li>
<li>
<input type="checkbox" name="webdev" id="webdev" />
<label for="webdev">Web Developer</label>
</li>
<li>
<input type="checkbox" name="seo" id="seo" />
<label for="seo">SEO</label>
</li>
<li>
<input type="checkbox" name="itstaff" id="itstaff" />
<label for="itstaff">IT Staff</label>
</li>
<li>
<input type="checkbox" name="csr" id="csr" />
<label for="csr">Customer Service Representative</label>
</li>
</ul>
首先,隐藏复选框
/* Hide the Ordinary Checkbox */
input[type="checkbox"] {
display: none
}
然后需要在我们的列表和标签标记的相对位置和填充设置一些样式。
下一步需要使用伪代码在标签之前和之后设置样式。对于这部分,我们将设置复选框Font Awesome,用一个矢量图标。
/* Checkbox Icons */
label {
position: relative
padding-left: 30px
font-size: 30px
cursor: pointer
color: #fff
padding: 16px 28px 0 0
}
label:before, label:after {
font-family: FontAwesome
font-size: 50px
/*absolutely positioned*/
position: absolutetop: 0left: -49pxright: 10px
}
现在我们需要设置图标步骤之前和之后的复选框。
label:before {
content: '\f096'/*checkbox unchecked */
}
label:after {
content: '\f00c'/*checkbox checked*/
max-width: 0
overflow: hidden
opacity: 0.5
font-size: 27px
top: 16px
left: -42px
color: #f2ca27
-webkit-transition: all 0.50s
-moz-transition: all 0.50s
-o-transition: all 0.50s
transition: all 0.50s
}
最后一步是设定一个目标,文本框和复选框后的伪代码,并给它一个最大宽度25像素之间和不透明度1。
/* Animating the Checkbox Icon */
input[type="checkbox"]:checked + label:after {
max-width: 25px
opacity: 1
margin-right: 90px
}