当前位置: 首页 > 面试题库 >

CSS3将选择器与OR或AND相结合

索嘉石
2023-03-14
问题内容

给定此选择器:

body[class*="page-node-add-"][class~="page-node-edit"] {background:red;}

它将匹配一个正文,该正文的类包含 page-node-add- 的子字符串,而类恰好是 page-node-edit

我想说匹配第一个或第二个(但不能同时匹配)。可能吗?

使用逗号的问题:

如果我有一个长选择器,例如:

body[class*="page-node-add-"] form.node-form > .field-type-field-collection > table > thead tr th,
body[class~="page-node-edit"] form.node-form > .field-type-field-collection > table > thead tr th
{...}

我原本以为CSS3可以解决这个问题,但是我想到的是:

body([class*="page-node-add-"]):or([class~="page-node-edit"]) {background:red;}

谢谢


问题答案:

您需要使用逗号将它们分开:

body[class*="page-node-add-"], body[class~="page-node-edit"] {background:red;}

使用逗号的问题:

…是除了逗号以外,您无法做其他任何事情。也许可以使用Selectors3进行补救,但不幸的是该规范另有说明。选择器4只能纠正这种情况,因为它是直到最近_才_ 提出来的,或者它 提出来的但没有降低到级别3。

在选择器的4级中,您将可以执行以下操作:

body:matches([class*="page-node-add-"], [class~="page-node-edit"]) form.node-form > .field-type-field-collection > table > thead tr th
{...}

当前,这是在其最初建议的名称:any()(带有前缀:-moz-any()和)下实现的:-webkit- any()。但是:any()鉴于此,在面向公众的CSS中使用毫无意义

  1. 只有Gecko和WebKit支持它;和

2.由于处理前缀选择器的方式,您必须复制规则集,这不仅违背了:matches()选择器的预期目的,而且使情况更糟:

    body:-moz-any([class*="page-node-add-"], [class~="page-node-edit"]) form.node-form > .field-type-field-collection > table > thead tr th
{...}
body:-webkit-any([class*="page-node-add-"], [class~="page-node-edit"]) form.node-form > .field-type-field-collection > table > thead tr th
{...}

换句话说,在实现将自身更新为标准化之前:matches(),没有其他可行的解决方案(使用预处理器为您生成重复的选择器除外)。



 类似资料:
  • 本文向大家介绍求结果(and or or)相关面试题,主要包含被问及求结果(and or or)时的应答技巧和注意事项,需要的朋友参考一下

  • 选择是正则表达式中的一个术语,实际上是一个简单的“或”。 在正则表达式中,它用竖线 | 表示。 例如,我们需要找出编程语言:HTML、PHP、Java 或 JavaScript。 对应的正则表达式为:html|php|java(script)?。 用例如下: let reg = /html|php|css|java(script)?/gi; let str = "First HTML appea

  • 问题内容: 我想在Monoose中将两个OR查询与AND结合在一起,例如以下SQL语句: 我在NodeJS模块中尝试了此操作,该模块仅从主应用程序获取模型对象: 但这是行不通的,所有OR条件都将像下面的SQL语句一样连接在一起: 如何在猫鼬中结合AND 和AND 的两个条件? 问题答案: 直接按以下方式创建查询对象可能是最简单的: 但是,您也可以使用最新的3.x Mongoose版本中提供的帮助程

  • 问题内容: 我不太喜欢MySQL,但是我只需要声明一下,非常感谢您的帮助。 我有两个表:“用户”和“得分” 这是“用户”的结构: 这是“得分”的结构: 现在,我需要一个查询,该查询为我提供了某种高分列表。结果应包含user_id,user_name和与该用户相关的所有分数之和:我应该看起来像这样: 更好的是,如果结果按照用户在全球排名中的排名顺序进行排序,如下所示: 我尝试了这个说法 这会导致语法

  • 本文最初发表于博客园,并在GitHub上持续更新前端的系列文章。欢迎在GitHub上关注我,一起入门和进阶前端。 以下是正文。 CSS3介绍 CSS3在CSS2基础上,增强或新增了许多特性, 弥补了CSS2的众多不足之处,使得Web开发变得更为高效和便捷。 CSS3的现状 浏览器支持程度不够好,有些需要添加私有前缀 移动端支持优于PC端 不断改进中 应用相对广泛 应对的策略:渐进增强 (1)坚持渐

  • 我目前正在尝试从一个线程操作一个SocketChannel(我以前用两个线程和常规套接字实现了我想要做的事情,但每个客户端两个线程似乎有点过分)。我希望能够在有数据要读取时读取(选择器可以很好地工作)。我只想在阻塞队列(在我的示例中,我有帧队列)中有项目时写入。 现在,它做的是,它不停地疯狂地循环,这显然很糟糕。我正在寻找一种方法,当我的阻塞队列中有一个项目,或者有字节要读取时,我可以唤醒选择器。