我对CSS选择器的认识
我对CSS选择器的认识
一、简述
CSS选择器是对HTML元素进行选择的筛选条件,大概可以分为两类:
- 特征选择器——根据元素自身所具有的某种特征进行筛选,比如名称、ID、属性等;
- 关系选择器——根据元素与其他元素的关系进行筛选,比如子元素、兄弟元素等;
在真正使用的时候,几个简单的选择器可以组合成更复杂的选择器,所以谁也说不上CSS选择器有多少。还有两个选择器是功能性的,它们可以给元素已有内容之前或之后添加新内容。
我做了一个项目,里面包含一个测试CSS选择器的小功能,请看这里。
二、归纳
下文中所有的 SELECTOR 都代表任何一个有效的选择器。
1. 特征选择器:
| 描述 | 选择器 | 备注 |
| 1. 无论有什么特征——即全部 | * { } | |
| 2. 元素名称是 "element" | element { } | |
| 3. 具有类名 "className" | .className { } | |
| 4. 具有id名 "someID" | #someID { } | |
| 5. 带有属性 attr | SELECTOR[attr] { } | |
| 6. 带有属性 attr,且属性值为 "value" | SELECTOR[attr="value"] { } | |
| 7. 带有属性 attr,且其若干个属性值中有一个是 "value" | SELECTOR[attr~="value"] { } | |
| 8. 带有属性 attr,且其属性值包含字符串 "str" | SELECTOR[attr*="str"] { } | |
| 9. 鼠标正位于其上方 | SELECTOR:hover { } | |
| 10. SELECTOR 是个独生子——它的父元素只有它这一个子元素 | SELECTOR:only-child { } | |
| 11. SELECTOR 是其父亲的第一个子元素 | selector:first-child { } | |
| 12. SELECTOR 是其父亲的第 N 个子元素 | selector:nth-child(N) { } | |
| 13. SELECTOR 是其父亲的最后一个子元素 | selector:last-child { } | |
| 14. SELECTOR 内部是真空——连空格都没有 | SELECTOR:empty { } | |
| 15. SELECTOR 被某个链接锚定了,而且该链接被点击了 | SELECTOR:target { } | <a href="#topic">跳转到 SELECTOR 处</a> |
| 16. SELECTOR 中被用户通过鼠标拖动选中的内容 | SELECTOR::selection { } | |
| 链接专有的特征 | ||
| 17. 未被访问的链接 | a:link { } | |
| 18. 已被访问的链接 | a:visited { } | |
| 19. 正在被点击的链接 | a:active { } | |
| 表格元素专有的特征 | ||
| 20. 目标是启用的 | SELECTOR:enabled { } | |
| 21. 目标是禁用的 | SELECTOR:disabled { } | |
| 22. 目标是被选中的(单选框、复选框) | SELECTOR:checked { } | |
| 23. 目标获得了焦点 | SELECTOR:focus { } | 能接收用户输入的元素,当它正在接收时,就获得了焦点。 |
| 两个功能性选择器 | ||
| 24. 给 SELECTOR 的内容之前加上些东西 | SELECTOR:before { } | |
| 25. 给 SELECTOR 内容之后加上些东西 | SELECTOR:after { } | |
2. 关系选择器
| 描述 | 选择器 | 备注 |
| 1. SELECTOR1 和 SELECTOR2 | SELECTOR1, SELECTOR2 { } | |
| 2. 位于 SELECTOR1 之后的所有兄弟元素 SELECTOR2 | SELECTOR1~SELECTOR2 { } | |
| 3. 与 SELECTOR1 紧邻着的 SELECTOR2 元素 | selector1+selector2 { } | |
| 4. SELECTOR 的首字母 | selector:first-letter { } | 类似的还有 SELECTOR:first-line { } |
| 5. SELECTOR1 的所有子元素 SELECTOR2 | selector1>selector2 { } | |
| 6. SELECTOR1 的所有后代元素 SELECTOR2 | selector1 selector2 { } | |
| 7. 所有不是 SELECTOR2 的 SELECTOR1 | SELECTOR1:not(SELECTOR2) { } |
个人浅薄之见,肯定有不到之处,希望得到有心之人指正,谢谢!
我对CSS选择器的认识的更多相关文章
- 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧
记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...
- css选择器
常用css选择器,希望对大家有所帮助,不喜勿喷. 1.*:通用选择器 * { margin: 0; padding: 0; } 选择页面上的全部元素,通常用于清除浏览器默认样式,不推荐使用. 2.#i ...
- dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来
dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...
- CSS选择器的权重与优先规则?
我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...
- css选择器的使用详解
-.css选择器的分类: 二.常用选择器详解: 1.标签选择器: 语法: 标签名 { 属性:属性值; } 代码示例: h1 { color: #ccc; font-size: 28px; } 2.类选 ...
- js,jq,css选择器
js获取节点: var chils= s.childNodes; //得到s的全部子节点 var par=s.parentNode; //得到s的父节点 var ns=s.nextSbiling; / ...
- CSS系列:CSS选择器
选择器(selector)是CSS中很重要的概念,所有HTML语言中的标记样式都是通过不同的CSS选择器来控制的.用户只需要通过选择对不同的HTML标签进行选择,并赋予各种样式声明,即可实现各种效果. ...
- 细说CSS选择器
众所周知,CSS的一个核心特征就是能向文档中的一组元素类型应用某些规则.每个规则都有两个基本部分:选择器(selector)和声明块(declaration block).下图显示了规则的各个部分. ...
- CSS选择器 转
来自于:http://www.cnblogs.com/webblog/archive/2009/08/07/1541005.html 最近在研究jQuery的选择器,大家知道jQuery的选择器和cs ...
- HTML5 -入门 (---css样式-------------(css基础与css选择器)---------------------—)
---恢复内容开始--- 一css基础入门与css选择器 CSS英文全拼:cascading style sheet 层叠样式表. 在html中使用:要在head中写style标签,所有样式放在sty ...
随机推荐
- bzoj3140: [Hnoi2013]消毒(二分图)
题目描述 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数.为了实验的方便,它被划分为a*b*c个单位立方体区 ...
- django 基础框架学习 (二)
Django框架基础-02 Django缓存cookie 1.说明 当我们服务器在响应数据的同时,希望写⼊⼀些缓存数据到客户端 我们可以选择在响应的同时,将要写⼊到客户端的 ...
- [Swift实际操作]九、完整实例-(7)登录页面:创建自定义视图及相关组件Swift实际操作
本文将开始创建登录页面,首先创建该页面所需的一些自定义组件:做为登录按钮的自定义视图对象.在[RegLogin]组的名称上点击鼠标右键,打开右键菜单.[New File]->[Cocoa Tou ...
- HTTP基本认证和JWT鉴权
一.HTTP基本认证 Basic Authentication——当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码. http auth的过程: · 客户端发送http请求 · ...
- (Python OpenGL)【4】Uniform变量 PyOpenGL
(Python OpenGL) 原文:http://ogldev.atspace.co.uk/www/tutorial05/tutorial05.html(英文) __author__ = " ...
- U19464 山村游历(Wander) LCT维护子树大小
\(\color{#0066ff}{ 题目描述 }\) 在一个偏远的小镇上,有一些落后的山村.山村之间通过一些道路来连接.当然有的山村可能不连通. 一年当中会发生很多大事,比如说有人提议要在山村\(i ...
- 二维树状数组总结&&【洛谷P4514】 上帝造题的七分钟
P4514 上帝造题的七分钟 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了00的n×mn×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b)(a,b),右下 ...
- springboot整合fastdfs
首先pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- 树莓派安装开源智能家居系统 Domoticz
前言 最近闲来无事开始折腾自己的智能家居系统,对比了几种比较流行的开源智能家居系统,觉得 Domoticz 更适合,Domoticz的官方中文文档,虽然不是很完善但还是可以参考一下.需要注意的是下文用 ...
- hdu6438 Buy and Resell 买卖物品 ccpc网络赛 贪心
题目传送门 题目描述: 有n座城市,每座城市都可以对一个物品进行一次的买进或者卖出,可以同时拥有多个物品,计算利润最大值,并且交易次数要最少.(买入卖出算两次操作) 思路: 建立两个小根堆 优先队列, ...