css伪类

CSS 伪类(pseudo-classes)是用于选择元素的特定状态或位置的特殊选择器。伪类可以帮助我们针对特定的用户交互、元素状态或结构进行样式调整,而无需直接修改 HTML。伪类通常以冒号 (:) 开头。

下面是 CSS 常见伪类的总结和分类:

1. 交互伪类(与用户交互相关)

  • :hover
    选中鼠标悬停在元素上的状态。
    示例:a:hover { color: red; }

  • :focus
    选中获取焦点的元素(如表单控件)。
    示例:input:focus { border-color: blue; }

  • :active
    选中正在被点击(激活)的元素。
    示例:button:active { background-color: green; }

  • :focus-within
    选中某个元素当它的子元素获取焦点时。
    示例:div:focus-within { border: 2px solid blue; }

  • :focus-visible
    选中在获得焦点时显式可见的元素,通常是键盘导航时才显示焦点。
    示例:button:focus-visible { outline: 2px solid blue; }

2. 结构性伪类(与元素在 DOM 中的位置和关系相关)

  • :first-child
    选中作为父元素第一个子元素的元素。
    示例:p:first-child { font-weight: bold; }

  • :last-child
    选中作为父元素最后一个子元素的元素。
    示例:p:last-child { margin-bottom: 0; }

  • :nth-child(n)
    选中作为父元素第 n 个子元素的元素,n 可以是数字、关键字、表达式等。
    示例:li:nth-child(2) { color: red; }

  • :nth-last-child(n)
    选中倒数第 n 个子元素。
    示例:li:nth-last-child(2) { color: blue; }

  • :nth-of-type(n)
    选中作为同类型子元素中的第 n 个元素。
    示例:div:nth-of-type(2) { background-color: yellow; }

  • :first-of-type
    选中父元素中同类型的第一个子元素。
    示例:p:first-of-type { font-style: italic; }

  • :last-of-type
    选中父元素中同类型的最后一个子元素。
    示例:p:last-of-type { font-weight: bold; }

  • :empty
    选中没有子元素(包括文本节点)的元素。
    示例:div:empty { display: none; }

  • :not(selector)
    选中不匹配指定选择器的元素。
    示例:div:not(.active) { background-color: gray; }

3. 表单相关伪类

  • :checked
    选中被选中的元素(如复选框、单选框)。
    示例:input:checked { background-color: green; }

  • :disabled
    选中被禁用的表单元素。
    示例:input:disabled { opacity: 0.5; }

  • :enabled
    选中被启用的表单元素。
    示例:input:enabled { border-color: green; }

  • :indeterminate
    选中状态不确定的元素(例如复选框的中间状态)。
    示例:input:indeterminate { background-color: yellow; }

  • :required
    选中标记为必填的表单元素。
    示例:input:required { border-color: red; }

  • :optional
    选中标记为可选的表单元素。
    示例:input:optional { border-color: blue; }

4. 伪元素(用于插入内容)

虽然伪元素与伪类不同,但它们也属于特殊的选择器。伪元素用于选择元素的一部分或在元素的特定位置插入内容。

  • ::before
    在元素的内容之前插入内容。
    示例:p::before { content: "→ "; font-size: 20px; }

  • ::after
    在元素的内容之后插入内容。
    示例:p::after { content: " ←"; font-size: 20px; }

  • ::first-letter
    选中元素的第一个字母。
    示例:p::first-letter { font-size: 2em; font-weight: bold; }

  • ::first-line
    选中元素的第一行文本。
    示例:p::first-line { color: blue; font-weight: bold; }

  • ::selection
    选中用户选中(高亮)的文本。
    示例:::selection { background-color: yellow; color: black; }

5. 动态伪类

  • :root
    选中文档的根元素(<html> 标签),通常用来定义全局的 CSS 变量。
    示例:html:root { --main-color: #333; }

  • :lang(language)
    选中符合特定语言标识符的元素。
    示例:p:lang(en) { font-family: Arial, sans-serif; }

6. 其他常用伪类

  • :before 和 :after(伪元素)
    在元素内容的前后插入内容。
  • :not()
    选择不匹配指定选择器的元素。
  • :valid 和 :invalid
    选中表单元素是否合法的状态。
    示例:input:valid { border-color: green; }
  • :has()

    选择那些包含特定子元素或后代元素的父元素。

  1. 浏览器支持 :has() 伪类并非所有浏览器都支持(例如旧版浏览器可能不支持)。但是,目前的主流浏览器如 Chrome、Safari 和 Edge 已经支持它。

  2. 性能问题:由于 :has() 会检查父元素内部的内容,可能会对性能产生一定影响,尤其是在包含大量子元素的复杂 DOM 结构中使用时。建议谨慎使用。

  • 例如, :has(input[data-required]) 会选中那些包含 input 元素且该 input 元素带有 data-required 属性的元素。

总结

CSS 伪类是非常强大的工具,帮助开发者更精确地控制和定制网页元素的样式。它们可以用于用户交互、元素位置、表单状态等多种场景。通过合理使用伪类,我们能够更简洁地实现复杂的样式效果,而无需额外的 JavaScript 代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值