前端
HTML&CSS
css选择器

CSS 选择器

CSS+CSS3 选择器

基础选择器

  • 元素选择器:p{ }
  • 类选择器: .box { }
  • ID 选择器: #header { }
  • 通配符选择器: * { }

组合选择器

  • 后代选择器: div p { }
  • 子元素选择器: ul > li { }
  • 相邻兄弟选择器: h1 + p { }
  • 一般兄弟选择器: h1 ~ p { }

属性选择器

  • 存在属性选择器: a[target] { }
  • 属性值等于选择器: input[type="text"] { }
  • 属性值包含选择器: a[href*="google"] { }
  • 属性值以某个子串开头选择器: a[href^="https"] { }
  • 属性值以某个子串结尾选择器: img[src$=".png"] { }

伪类

伪类是选择器的一种,它用于选择处于特定状态的元素,比如当它们是这一类型的第一个元素时,或者是当鼠标指针悬浮在元素上面的时候。它们表现得会像是你向你的文档的某个部分应用了一个类一样,帮你在你的标记文本中减少多余的类,让你的代码更灵活、更易于维护。伪类使用 : 进行标识。

  • :hover 鼠标悬停时触发
  • :active 鼠标点击时触发
  • :focus 元素获得焦点时触发
  • :first-child 选择父元素的第一个子元素
  • :last-child 选择父元素的最后一个子元素
  • :nth-child(n) 选择父元素的第 n 个子元素
  • :nth-last-child(n) 选择父元素的倒数第 n 个子元素
  • :nth-of-type(n) 选择父元素的第 n 个指定类型的子元素
  • :nth-last-of-type(n) 选择父元素的倒数第 n 个指定类型的子元素
  • :only-child 选择父元素的唯一一个子元素
  • :only-of-type 选择父元素的唯一一个指定类型的子元素
  • :empty 选择没有子元素的元素
  • :not(selector) 选择不符合指定选择器的元素
  • :checked 选择被选中的表单元素
  • :disabled 选择被禁用的表单元素
  • :enabled 选择被启用的表单元素
  • :required 选择必填的表单元素
  • :optional 选择可选的表单元素
  • :valid 选择符合验证规则的表单元素
  • :invalid 选择不符合验证规则的表单元素
  • :in-range 选择在指定范围内的表单元素
  • :out-of-range 选择在指定范围外的表单元素
  • :read-only 选择只读的表单元素
  • :read-write 选择可读写的表单元素
  • :target 选择当前活动的目标元素
  • :root 选择文档的根元素
  • :lang(language) 选择指定语言的元素

伪类的执行顺序

:link、:visited、:hover、:active 的执行顺序

  • L-V-H-Al(link)ov(visited)e h(hover)a(active)te,方便记忆可以用喜欢和讨厌两个词来概括

伪元素

伪元素以类似方式表现,不过表现得是像你往标记文本中加入全新的 HTML 元素一样,而不是向现有的元素上应用类。伪元素开头为双冒号 ::

  • ::before 在元素内容前插入内容
  • ::after 在元素内容后插入内容
  • ::first-letter 选择元素的第一个字母
  • ::first-line 选择元素的第一行
  • ::selection 选择被用户选中的内容
  • ::placeholder 选择表单元素的占位符文本
  • ::marker 选择列表项的标记
  • ::backdrop 选择全屏模式的背景

CSS 选择器权重

  • 遇到!important 则是最大,大于一切。
  • 内联样式(1000)
  • ID 选择器(0100)
  • 类选择器/属性选择器/伪类选择器(0010)
  • 元素选择器/伪元素选择器(0001)
  • 关系选择器/通配符选择器(0000)

带!important 标记的样式属性优先级最高; 样式表的来源相同时:!important > 行内样式>ID 选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性