选择器在编写样式和查找节点时,选择器是必不可少的,因此了解如何编写和使用选择器是极其重要的。这篇文章主要讲的是css选择器,分别是css选择器和jQuery选择器;css选择器大家可能都知道。浏览器渲染的时候,会先构建dom,cssom,然后渲染。这里有两张盗版图,大家看看。写css的格式是:body.test{//Selectorcolor:red;//stylenameandvalue}看到很眼熟,这里需要提醒大家,虽然写的是从左到右,但是css的遍历方式和是从右到左的方式。原因是从右向左的遍历方式存在效率问题,因为一般父元素写在左边,子元素在后面。如果从左向右查找,会遍历父元素下的所有子元素,反之,如果从右向左查找,只需要找到子元素,然后向上查找一级;css写规范可以参考:https://github.com/doyoe/html...写的很完整,现在来解释一下选择器问题,基本类型选择器元素选择器类选择器id选择器通配符selector*【尽量少用】属性选择器其中属性选择器的方法多种多样,如下【大部分规则和正则规则有些相似】:[attr]表示一个元素有一个名为attr的属性。[attr=value]表示具有名为attr且值为“value”的属性的元素。[attr~=value]表示一个元素有一个名为attr的属性,该属性是一个以空格分隔的值列表,其中至少有一个是“value”。[attr|=value]表示元素的属性名为attr,属性值为“value”或以“value-”开头(“-”为连字符,Unicode编码为U+002D)。一个典型的应用场景是匹配语言缩写代码(比如zh-CN,zh-TW可以使用zh作为取值)。[attr^=value]表示具有名为attr的属性的元素,其值以“value”开头。[attr$=value]表示具有名为attr的属性的元素,其值以“value”结尾。[attr*=value]表示具有名为attr的属性的元素,其值包含“value”。[attroperatorvaluei]在带有属性值的属性选择选择器表达式的右括号(]括号)前加上空格分隔的字母i(或I)来忽略属性值的大小写(ASCII字符范围内的字母),后面跟着i,I标记不区分大小写,结合selectoradjacentsiblingselectordiv+p【表示p元素是一个option,但是它前面的直接兄弟必须是一个div】generalrelativeNeighboringelementdiv~p【表示p元素是可选项,但前面必须有一个div兄弟元素,不能与其相邻]子选择器div>p[表示p元素的直接父元素必须是div才能match]offspringSelectordivp[空格就够了,缺的空格无关紧要]自选择器div.test[divelementwithclasstest]伪类选择器伪类选择器可以看成是类选择器的一种形式.只是类class用.表示,伪类用::active表示【在鼠标交互时,代表用户按下按钮到松开按钮之间的时间。:active伪类通常用于匹配tab键交互]:any[.a>:-moz-any(.b,.c)===.a.b,.a.c这样写方便同样式元素组合,实验阶段,少用为好]:any-link[所有超链接]:checked[选中部分选择表单元素,可用于点击某些CheckBox联机更多模块]:default[]:dir()[文字书写方向:dir(rtl)文字是从右往左,与属性选择器不同。[dir=rtl]或[dir=ltr]不会匹配dir属性值为auto的元素。而:dir()会匹配客户端计算出来的属性,无论是继承的dir值还是dir值是auto]:disabled[禁用元素]:empty[没有子元素的元素。这里所说的子元素只计算元素节点和文本(包括空格),不考虑注释和运行指令。]:enabled[与disabled相反]:first[@page:first配合打印,打印时改变一些属性]:first-child[element:first-child第一个子元素]:first-of-type[伪类匹配子元素中元素的新类型(第一次为新元素类型)]:fullscreen[实验性,全屏时匹配部分元素的样式]:focus[当元素成为焦点时生效,用户可以通过键盘或鼠标激活焦点]:focus-within[]:hover[适用于用户使用指针设备虚拟指向某个元素(不激活)的情况,大部分是指鼠标hovering]:indeterminate[下面三个例子中的
