CSS选择器学习笔记:

关系选择器:

div div:

div之后的所有div,即子div,孙div,重孙div等等等,只要包含在我div里的都可以被选中。

div>div:

div之后的子div:仅能选中子div,不能再往后选。

div+div:

紧紧贴在div后面的兄弟div,仅选择到一个兄弟div

div~div:

所有贴在div后面的兄弟div,可以选择到所有的兄弟div


伪类选择器:

a:link{} 链接访问前

a:visited{} 链接访问后

a:hover{} 链接悬停时

a:active{} 链接点击时

若想对一个链接进行这四种样式设置,必须是这个顺序lvha(LV哈)

input:focus{} 输入框聚焦时,比如切换登录密码框时设置背景或者边框

E:lang(fr) 匹配特殊的字符串,在需要匹配的地方加一个lang=“fr”属性

E:not(s) 否定伪类选择器,选择不包含s的元素

E:root 讲道理觉得这个没用...还是我太菜没看懂,留个坑以后来填吧

E:first-child、E:last-child、E:only-child、E:nth-child(n)、E:nth-last-child(n)

讲道理我认为这个选择器不好,维护起来成本有些高,说白了就是修改起来很麻烦,需要一个一个去数,第几第几个这样,或者说这个比较严格

E:first-of-type、E:last-of-type、E:only-of-type、E:nth-of-type(n)、E:nth-last-of-type(n)

这个就明显比上面的好,或者说这种约束更加松散

E:empty 选择内容为空的元素

input:checked 匹配单选框或者复选框被选中的部分

input:enabled 匹配文本框可以输入的部分

input:disabled 匹配文本框不可以输入的部分

讲道理,最后这个震撼到我了!

#id:target 和锚点配合使用,无解

当你使用锚点进行页面跳转的时候,竟然可以选中目标页面并且为之设置样式,真的惊呆!

未选中时没有target



点击前往区块3,区块3的就成了target

伪对象选择器:

E:first-letter/E::first-letter 可以叫它杂志首字下沉选择器

代码和效果如下:



调整font-size自动兼容

E:first-line/E::first-line 可以叫它第一行选择器

代码和效果如下:



还可以设置大小等等


E:before/E::before 在元素之前添加content

E:after/E::after 在元素之后添加content

E::placeholder 文字占位符选择器

本来看到占位符能直接被选中挺高兴,结果看了兼容性之后,瞬间无爱...


呆滞.jpg

E::selection 选中元素选择器

代码和效果见图:


开始我以为和checked一样


用鼠标选中了这段话后立刻懂了

属性选择符:

E[att="val"]  匹配包含val的元素,缺点是若用这个选择器的话,class只能写一个

E[att~="val"]  空格符分割的class,包含val即可

E[att^="val"] 以val开头的,有没有空格符或者横岗都无所谓abc都能匹配a

E[att$="val"] 以val结尾的,有没有空格符或者横岗都无所谓cba都能匹配a

E[att*="val"] 包含即可,abc,cba,bca都能使用a来匹配

E[att|="val"]-分割的class,包含val即可,test3都可以匹配到test3-abc


为了保证文档的完整性,加上这几种基本选择符:

* E #id .class


选择器优先级:

王者级:直接在标签里设置样式(权值:1000)

大师级:ID选择器(权值:100)

钻石级:类选择器(权值:10)伪类选择器、属性选择器

铂金级:标签选择器(权值:1)伪对象选择符

优先级竟然可以计算?

代码及效果图如下:

命名略不规范,切勿效仿
如此书写是为了避免逐条解释的偶然性

按照上述规则:

.l div = 10 + 1 = 11

.l .k =10 + 10 = 20

.l #k = 10 + 100 = 110

所以效果如下图:

100>20>11
注释iid选择器
20>11
仅剩标签选择器
11

若是想让.l div最优先呢?


加一个!important即可


!important无视所有规则,天空中最自由的鸟儿

这还是只浅尝,要恰到好处的用这些css选择器,还是需要一些时间的,零件学到手,能组装出什么样的作品就看个人修行了

基础知识掌握牢固,相当于盖楼打稳地基,避免盖空中楼阁

努力成为优秀的前端工程师!

>期待和大家交流,共同进步,欢迎大家加入我创建的与前端开发密切相关的技术讨论小组:

> - SegmentFault技术圈:[ES新规范语法糖](https://segmentfault.com/g/1570000010695363)

> - SegmentFault专栏:[趁你还年轻,做个优秀的前端工程师](https://segmentfault.com/blog/chennihainianqing)

>- 知乎专栏:[趁你还年轻,做个优秀的前端工程师](https://zhuanlan.zhihu.com/wyasy)

>- Github博客: [趁你还年轻233的个人博客](https://github.com/FrankKai/FrankKai.github.io)

>- 前端开发QQ群:660634678

>- 微信公众号: 人兽鬼 / excellent_developers

![](https://upload-images.jianshu.io/upload_images/2976869-157e8624bcdfd62a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

>努力成为优秀前端工程师!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容