嘿,你们这些优秀的开发人员!在这篇文章中,我们将探讨使用 :has()
在您的下一个网络项目中。 :has()
相对较新,但通过提供对 UI 中各种元素的控制而在前端社区中广受欢迎。让我们看看什么是伪类以及如何使用它。
句法
:has()
如果我们在元素内部搜索的任何内容被发现并被考虑在内,CSS 伪类可以帮助设置元素的样式。就好像说, “如果这个盒子里有特定的东西,那么就以这种方式并且仅以这种方式设计盒子。”
:has(<direct-selector>) {
/* ... */
}
造型问题
在过去的几年里,我们无法使用 CSS 来根据父元素的直接子元素或基于另一个元素的元素来设计父元素的样式。如果我们必须这样做,我们需要使用一些 JavaScript 并根据 HTML 的结构打开/关闭类。 :has()
解决了这个问题。
假设您有一个 1 级标题元素 (h1
)这是博客列表页面上帖子或类似性质的内容的标题,然后您就有了标题级别 2(h2
) 直接跟随它。这个 h2 可以是帖子的副标题。如果说 h2
存在、重要并且紧接在 h1
,您可能想让 h1 脱颖而出。在此之前,您必须编写 JS 函数。
老派方式 – JavaScript
const h1Elements = document.querySelectorAll('h1');
h1Elements.forEach((h1) => {
const h2Sibling = h1.nextElementSibling;
if (h2Sibling && h2Sibling.tagName.toLowerCase() === 'h2') {
h1.classList.add('highlight-content');
}
});
这个 JS 函数正在寻找所有具有 h2
继续它,并应用一类突出显示内容来使 h1
作为一篇重要的文章脱颖而出。
随着现代 CSS 的流行,新的和改进的!我们在浏览器中可以做的事情的功能已经取得了长足的进步。现在,我们可以利用 CSS 来完成传统上必须使用 JavaScript 完成的事情,不是所有事情,而是某些事情。
新学校之道——CSS
h1:has(+ h2) {
color: blue;
}
在上面扔一些 :has() !
现在你可以使用了 :has()
实现与 JS 函数相同的功能。此 CSS 正在检查任何 h1 并使用 兄弟组合器 检查紧随其后的 h2,并向文本添加蓝色。以下是几个用例 :has()
可以派上用场。
:has 选择器示例 1
HTML
<h1>Lorem, ipsum dolor.</h1>
<h2>Lorem ipsum dolor sit amet.</h2>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eius, odio voluptatibus est vero iste ad?</p>
<h1>Lorem, ipsum dolor.</h1>
<h2>Lorem ipsum dolor sit amet.</h2>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eius, odio voluptatibus est vero iste ad?</p>
<h1>This is a test</h1>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eius, odio voluptatibus est vero iste ad?</p>
的CSS
h1:has(+ h2) {
color: blue;
}
:has 选择器示例 2
很多时候,我们作为网络工作者正在操纵或处理图像。我们可以使用的工具 云量 提供对图像进行各种变换,但通常我们想要添加阴影、边框半径和标题(不要与 alt 属性中的替代文本混淆)。
下面的例子是使用 :has()
查看图形或图像是否具有Figcaption元素,如果有,它会应用一些背景和边框半径以使图像脱颖而出。
HTML
<section>
<figure>
<img src="https://placedog.net/500/280" alt="My aunt sally's dog is a golden retreiver." />
<figcaption>My Aunt Sally's Doggo</figcaption>
</figure>
</section>
的CSS
figure:has(figcaption) {
background: #c3baba;
padding: 0.6rem;
max-width: 50%;
border-radius: 5px;
}
:has()
是什么?
我可以吗 你可以看到 :has()
在现代浏览器中拥有强大的支持。
此浏览器支持数据来自 我可以用吗,其中有更多细节。 数字表示浏览器支持该版本及更高版本的功能。
桌面版
铬 | 火狐 | IE | 边缘 | Safari |
---|---|---|---|---|
105 | 121 | 没有 | 105 | 15.4 |
手机/平板电脑
Android Chrome浏览器 | 安卓Firefox | Android | iOS的Safari浏览器 |
---|---|---|---|
122 | 123 | 122 | 15.4 |
:has()
在社区!
我在 Twitter 上联系了我的网络,了解我的同行如何使用 :has()
在他们的日常工作中,这就是他们不得不说的。
svg:has(> #Mail) {
stroke-width: 1;
}
很高兴看到社区成员如何使用现代 CSS 来解决现实世界的问题,同时也向 Abbey 出于可访问性的原因使用它表示感谢!
注意事项
使用时有几个要点需要注意 :has()
要点引用自 MDN。
- 伪类在其参数中呈现最具体选择器的特异性
- 如果
:has()
浏览器不支持伪类本身,整个选择器块将失败,除非:has()
位于宽容选择器列表中,例如:is()
和:where()
-
:has()
伪类不能嵌套在另一个伪类中:has()
- 伪元素也不是有效的选择器
:has()
和伪元素不是有效的锚点:has()
结论
利用 CSS 的强大功能,包括高级功能,例如 :has()
伪类,使我们能够打造卓越的网络体验。 CSS 的优势在于它的级联和特异性……最好的部分,使我们能够充分利用它的潜力。通过利用 CSS 的功能,我们可以推动网页设计和开发向前发展,释放新的可能性并创建突破性的用户界面。
友情链接:
- :具有
- :是
- :不是
- $UP
- 09
- 1
- 11
- 12
- 13
- 16
- 22
- 27
- 31
- 3
- 7
- 8
- 9
- 91
- 98
- a
- 关于
- 关于它
- 访问
- 占
- 横过
- Ad
- 加
- 添加
- 高级
- 优点
- 后
- 驳
- 所有类型
- 允许
- 还
- 替代
- an
- 锚定
- 和
- 安卓
- 另一个
- 任何
- 适用
- 应用
- 保健
- 论点
- 刊文
- AS
- At
- 背景
- 基于
- BE
- 因为
- before
- 如下。
- 最佳
- 阻止
- 博客
- 蓝色
- 边界
- 盒子
- 浏览器
- 浏览器
- 建筑物
- 但是
- by
- CAN
- 不能
- 能力
- 字幕
- 级联
- 例
- 机会
- 检查
- 孩子
- 铬
- 程
- 类
- 颜色
- 如何
- 未来
- 社体的一部分
- 结论
- 困惑
- 控制
- 可以
- 情侣
- 手艺
- 创造
- 的CSS
- data
- 天
- 日复一日
- 交付
- 设计
- 细节
- 检测
- 开发
- 研发支持
- DID
- 直接
- 直接
- do
- 文件
- 不
- 狗
- 驾驶
- 下降
- 边缘
- element
- 分子
- 拥抱
- 如虎添翼
- 结束
- 整个
- 一切
- 例子
- 特殊
- 体验
- 解释
- 探索
- 失败
- 专栏
- 特征
- 少数
- 数字
- 找到最适合您的地方
- 火狐
- 以下
- 如下
- 食品
- 针对
- 向前
- 发现
- 止
- 前
- 前端
- ,
- 功能
- 实用
- 功能
- 获得
- 去
- 金色的
- 大
- 奠基
- 民政事务总署
- 便利
- 有
- 标题
- 帮助
- 高
- 突出
- 创新中心
- HTML
- HTTP
- HTTPS
- i
- ie
- if
- 图片
- 图片
- 立即
- 重要
- 改善
- in
- 包含
- 表示
- 内
- 接口
- 成
- iOS
- IT
- 它的
- 本身
- JavaScript的
- 保持
- 键
- 名:
- 最少
- Level
- 杠杆作用
- 谎言
- 喜欢
- 清单
- 长
- 看
- 寻找
- 占地
- 使
- 操纵
- 匹配
- 最大宽度
- 成员
- 可能
- 介意
- 现代
- 更多
- 最先进的
- Mozilla的
- my
- 自然
- 需求
- 打印车票
- 网络
- 全新
- 下页
- 没有
- 现在
- 数
- of
- on
- 一
- 仅由
- or
- 我们的
- 输出
- 超过
- 包
- 页
- 部分
- 党
- 通过
- 过去
- 同行
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 点
- 声望
- 可能性
- 帖子
- 潜力
- 功率
- 当下
- 礼物
- 以前
- 市场问题
- 问题
- 项目
- 提供
- 达到
- 真实
- 真实的世界
- 参考
- 引用
- 相对的
- 相对
- 代表
- 尊重
- 健壮
- s
- Safari
- 实现安全
- 同
- 对工资盗窃
- 说
- 学校
- 搜索
- 看到
- 选择
- 坐
- So
- 方案,
- 解决
- 一些
- 东西
- 具体的
- 特异性
- 站
- 州
- 优势
- 结构体
- 样式
- 这样
- SUPPORT
- 支持
- 支持
- SVG的
- 句法
- 采取
- 需要
- 服用
- 技术
- 文本
- 这
- 其
- 然后
- 他们
- 事
- 事
- Free Introduction
- 次
- 时
- 标题
- 至
- 工具
- 传统
- 转换
- 树
- true
- 谈到
- ui
- 除非
- 解锁
- us
- 使用
- 用过的
- 用户
- 运用
- 平时
- 利用
- 有效
- 各个
- 版本
- 查看
- vs
- 想
- 是
- 方法..
- we
- 卷筒纸
- 为
- 什么是
- ,尤其是
- 这
- 将
- 中
- 精彩
- 工作
- 工人
- 加工
- 世界
- 将
- 写
- 年
- 但
- 完全
- 您一站式解决方案
- 和风网