:nth-child和:nth-of-type都是css3的结构伪类选择器,和他们相关的还有一堆其他的结构伪类选择器,如果搞懂了这两个选择器的话,相应的也能搞懂和他们相关的其他结构伪类选择器啦。
这两个选择器,可不像我们看起来的那么简单,他们的作用相近,却又不完全一样。
定义
我们先来看下这两个选择器的定义:
:nth-child(n) 选择器匹配父元素中的第 n 个子元素,元素类型没有限制。
:nth-of-type(n)选择器匹配同类型中的第n个同级兄弟元素。
n可以是一个数字,一个关键字,或者一个公式。
写个例子看下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>:nth-child()和:nth-of-type()的区别</title>
<style>
.box p:nth-child(2){
color:#fff
background: orange
}
</style>
</head>
<body>
<div class="box">
<h2>我是h2标签</h2>
<p>我是.box里的第二个子元素,我是第一个p标签</p>
<p>我是.box里的第三个子元素,我是第二个p标签</p>
</div>
</body>
</html>
效果如下:
请点击输入图片描述
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>:nth-child()和:nth-of-type()的区别</title>
<style>
.box p:nth-of-type(2){
color:#fff
background: orange
}
</style>
</head>
<body>
<div class="box">
<h2>我是h2标签</h2>
<p>我是.box里的第二个子元素,我是第一个p标签</p>
<p>我是.box里的第三个子元素,我是第二个p标签</p>
</div>
</body>
</html>
效果如下:
请点击输入图片描述
一个是.box p:nth-child(2),一个是.box p:nth-of-type(2),括号里面都2,但是效果却不同。那么到底这两个选择器是什么意思呢?
分析:
我们再来看下结构:
.box的子元素有三个,第一个是h2标签,第二个和第三个是p标签。
<div class="box">
<h2>我是h2标签</h2>
<p>我是.box里的第二个子元素,我是第一个p标签</p>
<p>我是.box里的第三个子元素,我是第二个p标签</p>
</div>
.box p:nth-child(2)
.box p:nth-child(2)的效果是选择出了第一个p标签,也就是.box里的第二个子元素。
请点击输入图片描述
翻译下:
1.确定了选择的是.box元素里面的p元素。
2.选择的是.box的子元素里面àp元素à的父元素里面的à第二个子元素。
3.我们来分析下第二点到底是什么意思:”.box的子元素里面àp元素”指的是这两个元素:
请点击输入图片描述
4.“ p元素à的父元素”指的就是.box这个元素:
请点击输入图片描述
5.“ 的父元素里面的à第二个子元素”的意思就是:.box这个元素里面的第二个子元素:
6.别忘记我们第1条里面的“确定了选择的是.box元素里面的p元素”,我们确定了这个第二个元素就是p元素,因此得出的效果是:
怎么样?现在明白.box p:nth-child(2)是什么意思了吧~那我们再来看下.box p:nth-of-type(2)吧~
.box p:nth-of-type(2)
.box p:nth-of-type(2)的效果是选择出了第二个p标签,也就是.box里的第三个子元素。
翻译下:
1.确定了选择的是.box元素里面的p元素。
2.选择的是.box的子元素里面àp元素à的父元素里面的à第二个p元素。
3.我们来分析下第二点到底是什么意思:”.box的子元素里面àp元素”指的是这两个元素:
4.“ p元素à的父元素”指的就是.box这个元素:
5.“ 的父元素里面的à第二个p元素”的意思就是:.box这个元素里面的p元素里的第二个,所以这里我们就不用管其他元素,只找p元素就可以了,因此选择出的结果是:
案例中的.box p:nth-child(2)和.box p:nth-of-type(2)区别就在于是第二个子元素还是第二个p元素
其实区别很简单::nth-of-type为什么要叫:nth-of-type?因为它是以"type"来区分的。所以我们只需要找这个类型的元素,其他元素都可以视而不见。
新增的结构标签:
1、header元素
表示页面中一个内容区块或真个页面的标题。
2、hgroup元素
表示对真个页面或页面中的一个内容区块的标题进行组合。
3、article元素
表示页面中一块与上下文不相关的独立内容。比如一篇文章。
4、aside元素
表示article元素内容之外的、与article元素内容相关的辅助信息。
5、footer元素
表示整个页面或页面中一个内容区块的脚注。一般来说,他会包含创作者的姓名、创作日期以及创作者的联系信息。
HTML5新规则:
新特性应该基于 HTML、CSS、DOM 以及 JavaScript。 减少对外部插件的需求(比如 Flash),更优秀的错误处理,更多取代脚本的标记,HTML5 应该独立于设备开发进程应对公众透明
HTML5 新特性:
新的特殊内容元素,比如 article、footer等,新的表单控件,比如 calendar、date、time、email、url、search;用于媒介回放的 video 和 audio 元素;用于绘画的 canvas 元素
对本地离线存储的更好的支持。
h5是html的最新版本,是14年由w3c完成标准制定。增强了,浏览器的原生功能,减少浏览器插件(eg:flash)的应用,提高用户体验满意度,让开发更加方便。
- h5新增的标签
新增元素
说明
video 表示一段视频并提供播放的用户界面
audio 表示音频
canvas 表示位图区域
source 为video和audio提供数据源
track 为video和audio指定字母
svg 定义矢量图
code 代码段
figure 和文档有关的图例
figcaption 图例的说明
main
time 日期和时间值
mark 高亮的引用文字
datalist 提供给其他控件的预定义选项
keygen 秘钥对生成器控件
output 计算值
progress 进度条
menu 菜单
embed 嵌入的外部资源
menuitem 用户可点击的菜单项
menu 菜单
template
section
nav
aside
article
footer
header
- css3
css3被划分为模块,最重要的几个模块包括:选择器、框模型、背景和边框、文本效果、2D/3D 转换、动画、多列布局、用户界面
选择器
框模型
背景和边框
border-radius、box-shadow、border-image、
background-size:规定背景图片的尺寸
background-origin:规定背景图片的定位区域
background-clip:规定背景的绘制区域
文本效果(常用)
text-shadow:设置文字阴影
word-wrap:强制换行
word-break
css3提出@font-face规则,规则中定义了font-family、font-weight、font-style、font-stretch、src、unicode-range
2/3D转换
transform:向元素应用2/3D转换
transition:过渡
动画
@keyframes规则:
animation、animation-name、animation-duration等
用户界面(常用)
box-sizing、resize
css3新增伪类
:nth-child()
:nth-last-child()
:only-child
:last-child
:nth-of-type()
:only-of-type()
:empty
:target 这个伪类允许我们选择基于URL的元素,如果这个元素有一个识别器(比如跟着一个#),那么:target会对使用这个ID识别器的元素增加样式。
:enabled
:disabled
:checked
:not
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)