CSS 选择器

  |   0 评论   |   0 浏览

什么是CSS? CSS(层叠样式表)用于给文档添加样式,是描述HTML或XML文档样式的语言。 CSS选择器规定了某些CSS规则会应用在哪些元素上。

基本选择器

  • 通用选择器 :*选择所有的元素。(可选)也可以将其限制为特定的名称空间或所有名称空间ns|**|*
  • 元素选择器 :elementname 选择元素名为elementname的元素。
  • 类选择器.classname 选择任何class 属性中含有classname的元素。
  • ID选择器#idname 选择id 属性为idname的元素。一个文档中,每个 ID 属性都应当是唯一的。
  • 属性选择器 : 选择任何属性符合条件的元素。
    • [attr]选择带有attr属性的所有元素;
    • [attr=value] 选择带有attr属性,并且attr=“value”的所有元素
    • [attr~=value] 选择带有attr属性,并且attr的属性值中包含value的所有元素;
    • [attr|=value]选择带有attr属性,并且attr的属性值以“value”开头的所有元素;
    • [attr^=value] 选择带有attr属性,并且attr的属性值以value开头的每个元素;(这里的匹配是正则匹配,所以选择器里面的value应该是string)
    • [attr$=value] 选择带有attr属性,并且attr的属性值以value结尾的每个元素;(这里的匹配是正则匹配,所以选择器里面的value应该是string)
    • [attr*=value]选择带有attr属性,并且attr的属性值中包含value子串的每个元素;(这里的匹配是正则匹配,所以选择器里面的value应该是string)

如果多个通用选择器紧挨在一起,表示选择同时满足所有选择器要求的元素。

分组选择器

  • 选择器列表 :选择所有能被列表中的任意一个选择器选中的节点。列表间的元素用,号分开。

例:div, span 会同时匹配 <span>元素和 <div>元素。

组合器

  • 后代组合器 (空格)组合器选择前一个元素的后代节点。
    • 例如,div span 匹配所有位于任意<div>元素之内的<span>元素。
  • 直接子代组合器> 组合器选择前一个元素的直接子代的节点。
    • 例如:ul > li 匹配直接嵌套在<ul> 元素内的所有<li>元素。
  • 一般兄弟组合器~ 组合器选择兄弟元素,也就是说,后一个节点在前一个节点后面的任意位置,并且共享同一个父节点。
    • 例如:p ~ span 匹配同一父元素下,<p>元素后的所有<span>元素。
  • 紧邻兄弟组合器+ 组合器选择相邻元素,即后一个元素紧跟在前一个之后,并且共享同一个父节点。

伪选择器

  • 伪类: 伪选择器支持按照未被包含在文档树中的状态信息来选择元素。实际上还是选择元素。类似于普通的类,可以在一个选择器中同时一起写多个伪类。
    • :active: 匹配被用户激活的元素。这个样式可能会被后声明的其他链接相关的伪类覆盖,为保证样式生效,需要把:active 的样式放在所有链接相关的样式之后。这种链接伪类先后顺序被称为LVHA 顺序 ::link —>:visited —>:hover —>:active在有多键鼠标的系统中,CSS 3 规定 :active 伪类必须只匹配主按键;对于右手操作鼠标来说,就是左键。
    • :checked:任何处于选中状态的radio (<input type="radio">),checkbox (<input type="checkbox">) 或("select") 元素中的option HTML元素("option")。
    • :default:一组相关元素中的默认表单元素。
    • :disabled :任何被禁用的元素。如果一个元素不能被激活(如选择、点击或接受文本输入)或获取焦点,则该元素处于被禁用状态。
    • :empty:没有子元素的元素。子元素只可以是元素节点或文本(包括空格)。注释或处理指令都不会产生影响。
    • :enabled :表示任何被启用的(enabled)元素。如果一个元素能够被激活(如选择、点击或接受文本输入),或者能够获取焦点,则该元素是启用的。
    • :first-child : 表示在一组兄弟元素中的第一个元素。
    • :first : 打印文档的时候,第一页的样式。
    • :first-of-type :表示一组兄弟元素中其类型的第一个元素。
    • :focus:表示获得焦点的元素(如表单输入)。当用户点击或触摸元素或通过键盘的 “tab” 键选择它时会被触发。
    • :focus-within:表示一个元素获得焦点,或,该元素的后代元素获得焦点。
    • :host :选择包含其内部使用的CSS的shadow DOM的根元素
    • :host():选择包含使用这段 CSS 的 Shadow DOM的影子宿主(这样就可以从 Shadow DOM 中选择包括它的自定义元素)——但前提是该函数的参数与选择的阴影宿主相匹配。
    • :hover :使用指示设备虚指一个元素(没有激活它)的情况。
    • :indetermainate :表示状态不确定的表单元素
    • :in-range :代表一个<input> 元素,其当前值处于属性minmax限定的范围之内.
    • :invaild :表示任意内容未通过验证的<input> 或其他<form> 元素
    • :lang() :基于元素语言来匹配页面元素。:lang(en)``:lang(fr)
    • :last-child :代表父元素的最后一个子元素。
    • :last-of-type :表示了在(它父元素的)子元素列表中,最后一个给定类型的元素。
    • :left :对打印文档的左侧页设置CSS样式."从左到右"的书写方向中第一页应当使用:right配置; "从右至左"的书写方向中第一页应当使用:left 配置.
    • :link:选中元素当中的链接。
    • :not():用来匹配不符合一组选择器的元素。由于它的作用是防止特定的元素被选中,它也被称为反选伪类negation pseudo-class )。
    • :nth-child:首先找到所有当前元素的兄弟元素,然后按照位置先后顺序从1开始排序,选择的结果为CSS伪类:nth-child括号中表达式(an+b)匹配到的元素集合(n=0,1,2,3...)。tr:nth-child(2n+1)表示HTML表格中的奇数行
    • :nth-last-child:从兄弟节点中从后往前匹配处于某些位置的元素
    • :nth-last-of-type
    • :only-child:匹配没有任何兄弟元素的元素.等效的选择器还可以写成:first-child:last-child或者:nth-child(1):nth-last-child(1)
    • :only-of-type
    • :optional:表示任意没有required属性的<input><select><textarea>元素使用它。
    • :out-of-range
    • :read-only:表示元素不可被用户编辑的状态(如锁定的文本输入框)。
    • :read-write:代表一个元素(例如可输入文本的 input元素)可以被用户编辑。
    • :required
    • :right
    • :root:匹配文档树的根元素。对于 HTML 来说,:root 表示<html>元素,
    • :scope:表示作为选择器要匹配的参考点的元素。在样式表中使用时,:scope 等效于:root
    • :target:代表一个唯一的页面元素(目标元素),其id与当前URL片段匹配 .
    • :vaild
    • :visited
  • 伪元素:: 伪选择器用于表示无法用 HTML 语义表达的实体。会在选择的元素的某个位置插入实体。一个选择器中只能使用一个伪元素。伪元素必须紧跟在语句中的简单选择器/基础选择器之后。
    • ::before:
    • ::after :用来创建一个伪元素,作为已选中元素的最后一个子元素。通常会配合content属性来为该元素添加装饰内容。这个虚拟元素默认是行内元素。
    • ::cue :匹配所选元素中的WebVTT提示。
    • ::first-letter 选中块级元素第一行的第一个字母,并且文字所处的行之前没有其他内容(如图片和内联的表格) 。
    • ::first-line :选中块级元素第一行。第一行的长度取决于很多因素,包括元素宽度,文档宽度和文本的文字大小。和其他所有的 伪元素一样,::first-line 不能匹配任何真实存在的html元素。
    • ::selection :CSS伪元素应用于文档中被用户高亮的部分(比如使用鼠标或其他选择设备选中的部分)。
    • ::slotted():用于选定那些被放在 HTML模板 中的元素