深入了解 CSS 逻辑选择器:is、where、not、has

CSS 逻辑选择器是 CSS Selectors Level 4 中引入的新特性,它们为我们提供了更灵活和强大的选择器语法,从而使得样式表的编写更加高效和简洁。本文将重点探讨 is、where、not、has 这四种逻辑选择器,深入剖析其应用、优缺点以及浏览器支持情况。

is 选择器

is 选择器允许我们同时匹配多个选择器中的一个或多个,从而简化了选择器的书写,使得代码更易读。这对于在不同情况下应用相同样式的元素十分有用

代码示例

css 复制代码
/* 通过 is 选择器匹配 h1 和 h2 元素 */
:is(h1, h2) {
  color: blue;
}

优点

  • 提高了代码可读性和维护性。
  • 简化了复杂选择器的书写,减少了代码冗余。

缺点

  • 浏览器支持不够广泛,需要搭配其他选择器使用以保证兼容性。

浏览器兼容性

where 选择器

where 选择器用于创建一个作用域,使得内部的选择器只对指定的元素生效,从而增强了选择器的可维护性和灵活性。

代码示例

css 复制代码
/* 创建作用域,只对 section 元素内的 p 元素生效 */
section:where(p) {
  color: red;
}

优点:

  • 提高了选择器的可读性和可维护性。
  • 有效降低了全局样式对其他元素的影响。

缺点:

  • 浏览器支持有限,需要谨慎使用以保证兼容性。

浏览器兼容性

not 选择器

not 选择器用于排除指定的元素,从而更精确地选择需要样式化的元素。这使得我们可以更灵活地定义样式,避免不必要的重复或冗余。

代码示例

css 复制代码
/* 排除 class 为 hide 的元素 */
:not(.hide) {
  display: block;
}

优点:

  • 增强了选择器的精确性,避免了样式的冗余和重复。

缺点:

  • 可能增加选择器的复杂度,降低了代码的可读性。

浏览器兼容性

has 选择器

has 选择器用于选择包含指定后代元素的父元素,为我们提供了一种方便的方式来选择包含特定内容的元素。

代码示例

css 复制代码
/* 选择包含 p 元素的 div 元素 */
div:has(p) {
  border: 1px solid black;
}

优点:

  • 提供了一种简便的方法来选择包含特定内容的父元素。

缺点:

  • 目前仅部分浏览器支持,需要搭配其他选择器使用以保证兼容性。

浏览器兼容性

综上所述,逻辑选择器为我们提供了更丰富和灵活的选择器语法,使得样式表的编写更加高效和简洁。然而,由于部分选择器的兼容性问题,我们在使用时需要谨慎权衡,以确保代码的稳定性和可维护性。

原文链接: leviqin.top/topic-detai...

相关推荐
小poop11 小时前
CSS 基础与实战:从入门到精通网页美化
前端
Csvn12 小时前
运行时性能
前端
Never_every9913 小时前
位图转矢量工具哪个好?实测抠抠图AI位图转矢量工具
大数据·前端
paopaokaka_luck13 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
空中湖14 小时前
用 React 写数据大屏:为什么我不建议用图表库
前端·react.js·前端框架
狮子座的男孩15 小时前
html+css基础:25、3D变换(3D空间与景深/透视点的位置/位移/旋转/缩放/多重变换/背部可见性)
css·经验分享·html·旋转·透视点·缩放/位移·3d变换/空间与景深
欣欣之王来了15 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
IT_陈寒15 小时前
Redis的LRU淘汰策略坑了我一整天
前端·人工智能·后端
计算机魔术师16 小时前
砍半价格、参数再涨,国产旗舰追到 Opus 鼻尖了
前端
特立独行的猫A16 小时前
10 MB 的桌面 AI 客户端:用仓颉 + 系统 WebView 替代 Electron
前端·harmonyos