发现 last-child 和 first child 中的样式不生效。然后把 html 中 class 为 userinfo-item 的 div 前后的元素都去掉,last-child 和 first-child 样式才生效。
当时实际使用中还是需要 div 前后的元素,此时把 first-child 和 last-child 分别改成 first-of-type 和 last-of-type 即可,样式都正常生效。
first-child :指的是父元素的第一个元素,在上面的例子中,要实现样式的话需要保证 class 为 userinfo-item 的 div 元素没有兄弟元素,或者在创建一个单独 div 包裹起来;
first-of-type :指的是父元素下,相同类型子元素中的第一个,上面的例子中因为 class 为 userinfo-item 的 div 元素是第一个 div 元素,所以生效了,此时如果前面有其他 div 元素,则样式还是不生效的;
last-child 和 last-of-type 原理类似。
first-of-type mdn: https://developer.mozilla.org/zh-CN/docs/Web/CSS/:first-of-type
first-child mdn: https://developer.mozilla.org/zh-CN/docs/Web/CSS/:first-child
h1, h2, p {} // 选择所有的h1,h2,p1、后代选择器 (包含选择器): 以空格隔开包含关系的元素
2、子选择器 以>隔开父子级元素
3、兄弟选择器 ~ +
1、.tab p[title]:{ color: red} 选择所有带有title属性的p标签
2、.tab p[title = 'name']: { color: red} 选择所有title=name属性的标签
3、.tab p[title ^= 'na'] :{} 选择开头title属性带有na开头的标签
4、.tab p[title$= 'po'] :{} 选择title属性结尾是po的标签
5、.tab p[title *= 'name'] 只要含有name值就行的标签
6、.tab p[title ~= 'name flower'] 包含name的属性的标签
7、.tab p[title |= 'name'] 以name开头的属性的标签
伪类不仅可以作用在a链接上,还可以作用在其他元素上
:link 未访问过的链接
:visited 访问过的链接
:active 鼠标点击的一瞬间
:hover 鼠标悬浮在链接上
:focus 具有焦点的输入元素 innput(将输入的外边框去掉 :focus{ outline: none})
:target 锚点目标选择器
:root 文档的根选择器
:empty 空选择器,没有任何子集的元素
:first-child div下所有孩子中的第一个
:last-child div下所有孩子中的最后一个
:first-of-type div下类型为p的第一个元素
:last-of-type div下类型为p的最后一个元素
:nth-child(2) 选择每个p元素是其父级的第二个子元素, 选择器匹配父元素中的第 n 个子元素,元素类型没有限制。
:nth-last-child(n) 选择器匹配属于其元素的第 N 个子元素的每个元素,不论元素的类型,从最后一个子元素开始计数。
:nth-last-of-type( n )选择器匹配同类型中的倒数第n个同级兄弟元素。
:after 文本伪类选择器,在每个<p>元素之后插入内容
:before 文本伪类选择器,在每个<p>元素之前插入内容
:first-letter 文本伪类选择器,选择每一个<p>元素的第一个字母
:first-line 文本伪类选择器,选择每一个<p>元素的第一行
锚点目标的伪类选择器
首尾元素的伪类选择器
:first-child div下所有的第一个p元素 div p:first-chid
:last-child div下所有的最后一个p元素 div:last-child
:first-of-type 特定 类型 (p元素)的第一个元素 div p:first-of-type
:last-of-type 特定 类型 (p元素)的第一个元素
唯一选择器
:only-child 只有一个孩子的div
:only-of-type div下只有一种孩子类型的选择器
表单上的伪类选择器
文本的伪类选择器
文本伪类表单
知识点补充:
!important : 强制权重优先级
浏览器默认font-size: 14px
可继承元素:color、font-size、font-family
通配符的权重:0
继承的权重: NULL 0>NULL
总结排序:!important >行内样式>ID选择器 >类选择器 >标签 、伪类>通配符* >继承 >浏览器默认属性
一些公用的class名称,没有特定的含义,比如我可以任意定义.first:height:10px当我要用到定义一个div高度为10px的时候我就可以直接引用了,像hd、bd之类的,都是个人平时写css时候的一些习惯,first、last、main、side这些class的定义都基本和英文的意思差不多,翻译过来就是第一个,最后一个,主要的,附加的,然后定义其css的时候也基本按它的意思写,比如main我们就可以定义一些全局的css,全局字体大小,样式,全局的字体颜色,超链接颜色之类的。希望能帮到你!