CSS3选择器,级联,继承、HTML标签
HTML标签
CSS3选择器在应用时总是出现错误,检查代码才发现原来时选择器就没搞明白,今天我要单拿出来总结一下。
首先要搞清楚HTML中的标签,简单梳理下HTML常用标签。
行内标签
行内标签,与行内标签共享一行空间 (宽高由内容决定,设置宽高无效)
<a href=""></a>
<span></span>
<i></i>
<em></em>
<u></u>
<strong></strong>
<sub></sub>
<sup></sup>
<!-- 行内标签,与行内标签共享一行空间 (宽高由内容决定,设置宽高无效)-->
块级标签
块级标签,每一行独占,搭建网页结构(宽度100%,高度可以设置)
p标签比较特殊,虽然是块级标签,但他是文本级标签,p标签里面只能放文字&图片&表单,p标签里面是不可以嵌套ul和h的,也不可以嵌套p标签。
<div></div>
<p></p>
<h1></h1><!-- h1-h6 -->
<ul></ul>
<dl></dl>
<li></li>
<dd></dd>
<dt></dt>
<!-- 块级标签,每一行独占,搭建网页结构(宽度100%,高度可以设置) -->
行内块级
行内块级标签,既满足内联又满足块级标签要求(可以与行内标签共享一行空间,也可以设置宽高)
<img src="" alt="">
<textarea name="" id="" cols="30" rows="10"></textarea>
<input type="">
<button></button>
<!-- 行内块级标签,既满足内联又满足块级标签要求(可以与行内标签共享一行空间,也可以设置宽高) -->
CSS3选择器
在CSS中,选择器是一种模式,用于选择需要添加样式的元素。CSS选择器分为四大类:基本选择器;层次选择器;过滤器;属性选择器。
基本选择器
选择器 | 解释 |
---|---|
element{} | 标签选择器,"element"指标签名称,eg:p{} |
.class{} | 类选择器,“class”指类名 |
#id{} | id选择器,"id"指id名 |
*{} | 通用选择器,选择所有元素 |
类选择器这里阐述一下,他还有两种应用方式:
- 结合元素选择器
类选择器可以结合元素选择器来使用,举例:.class p{}
,意为选择 类名为class下的p标签,是一种并且的关系。 - 多类选择器
多个类选择器链接在一起,仅能选择同时包含这些类名的元素,举例:.first .second{}
,意为仅能选择同时包含这些类名的元素;
书写方式:多个类之间要用空格隔开
层次选择器
选择器 | 解释 |
---|---|
element element{} | 后代选择器,用空格隔开,eg:div p{} 选择的是div下的所有p标签 |
element>element{} | 子代选择器,eg:div>p{} 选择的是以div为父元素的p标签 |
element+element{} | 下一个兄弟选择器,eg:h1+p{} 选择的是紧跟着h1标签的一个p元素,并且这两个标签有共同的父元素 |
element~element{} | 之后所有兄弟选择器,eg:div h1~p{} 选择的是h1标签之后所有的兄弟p元素 |
属性选择器
- attr为属性名,value为指定值
[attr*=value]
与[attr~=vlaue]
要区分开,举个梨子;;input[name*=hello]
意为:属性名为name,而属性名的值只要包含hello中的任意一个字母就能被选中;input[name~=hello]
意为:属性名为name,而属性名的值之一为hello,则被选中;
选择器 | 解释 |
---|---|
[attr] | 选择指定attr属性名的元素(常用) |
[attr=value] | 选择属性名的值为指定值的元素(常用) |
[attr~=vlaue] | 选择属性名的值之一为指定值的元素 |
[attr^=value] | 选择属性名的值以指定值开头的元素 |
[attr$=value] | 选择属性名的值以指定值结尾的元素 |
[attr*=value] | 选择属性名的值中包含有指定值的元素 |
伪类选择器
选择器 | 解释 |
---|---|
a:link | 未访问的链接 |
a:visited | 已访问的链接 |
a:hover | 鼠标移动到链接上 |
a:active | 鼠标按键不松 |
:focus | 拥有键盘输入焦点的元素 |
:first-child | 元素的第一个子元素 |
[element]:nth-child(n) | 第n个子元素是[elemrnt]的元素 |
:last-child | 元素的最后一个子元素 |
- 注意:a:hover必须在 a:link、a:visited之后,a:active必须在a:hover之后,否则无效
- 强调:[element]:nth-child(n):
<div class="footer-list-family">
<input type="text" value="搜素">
<ul>
<li>关于我们</li>
<li>HELLO!</li>
</ul>
<ul>
<li>廉正举报</li>
<li>联系我们</li>
</ul>
要求:应用css伪类选择器,选中第二个ul下的li,设置font为color。
- 正确代码:
.footer-list-family ul:nth-child(3) li{
color: red;
}
- 我的错误认知:要选中第二个
<li>廉正举报</li> <li>联系我们</li>
,代码应该是
.footer-list-family ul:nth-child(2) li{
color: red;
},但是这是错误的,他选中的是<li>关于我们</li> <li>HELLO!</li>
- 正确思路:[element]:nth-child(n)表示的是第n个子元素是[element]的元素,而我想要选中的第二个ul下的li,它是第三个子元素,所以正确代码为*.footer-list-family ul:nth-child(3) li{}*
伪元素选择器
选择器 | 解释 |
---|---|
::before | [element]内容之前插入内容 |
::after | [element]内容之后插入内容 |
::first-line | 选择[element]首行 |
::first-letter | 选择[element]内容首字母 |
::selection | 选择被用户选取的元素部分 |
::placeholder | 选择一个表单元素的占位文本 |
::backdrop | 在任何处于全屏模式的元素下的即刻渲染的盒子 |
伪类是描述一种状态,可以出现在选择器的任何位置;伪元素是添加一些东西,只能跟在选择器的最后一个简单选择器。
级联
在所有的选择器中,某个选择器定义的规则是否能够实现(优先级)取决于三个元素:importance、specifity、source order
- !important声明(importance):在css规则的值结尾添加“!important”,此条规则优先级高于一切。
- 特性值(specifity):
特性值 | |
---|---|
1000 | html中行内声明的规则 |
100 | id选择器 |
10 | 类、属性、伪类选择器 |
1 | 标签、伪元素选择器 |
3.代码顺序(source order):就近原则,如果多个选择器具有相同的重要性和特性值,后来的规则优先前面的规则(后者居上)。
继承
css提供三个特殊值用来处理继承:
inherit:继承父元素的样式
initial:不继承,浏览器默认样式。
unset:不设定,表现规则本来特性,
-
可继承属性:font系列属性、文本系列属性、列表系列属性、cursor、visibility等。
-
不可继承属性:margin、padding、border等