属性选择器中有关空格的规则是什么?

2024-02-01

我正在阅读规范属性选择器 http://www.w3.org/TR/css3-selectors/#attribute-selectors,但我找不到任何说明是否允许空格的内容。我猜它在开始、运算符之前和之后以及结束时是允许的。它是否正确?


语法中规定了属性选择器中空格的规则。这是选择器3 https://www.w3.org/TR/selectors-3/#w3cselgrammar属性选择器的产生(为了说明,一些标记被替换为它们的字符串等效项;S*代表 0 个或多个空白字符):

attrib
  : '[' S* [ namespace_prefix ]? IDENT S*
        [ [ '^=' |
            '$=' |
            '*=' |
            '=' |
            '~=' |
            '|=' ] S* [ IDENT | STRING ] S*
        ]? ']'
  ;

当然,对于那些想要了解如何理解的人来说,语法并不是很有用。write属性选择器,因为它是为那些实施选择器引擎。

这是一个简单的英语解释:

属性选择器之前的空格

上面的产生式中没有涵盖这一点,但第一个明显的规则是,如果您将属性选择器附加到另一个简单选择器或伪元素,don't使用空格:

a[href]::after

如果这样做,该空间将被视为后代组合器 https://www.w3.org/TR/selectors-3/#descendant-combinators相反,通用选择器隐含在属性选择器及其后面的任何内容上。换句话说,这些选择器彼此等效,但与上面不同:

a [href] ::after
a *[href] *::after

属性选择器内的空格

括号内和比较运算符周围是否有空格并不重要;我发现浏览器似乎将它们视为不存在(但我没有进行广泛的测试)。根据语法,这些都是有效的,并且据我所知,在所有情况下都有效modern浏览器:

a[href]
a[ href ]
a[ href="http://stackoverflow.com" ]
a[href ^= "http://"]
a[ href ^= "http://" ]

之间不允许有空格^(或其他符号)和=因为它们被视为单个令牌,并且令牌不能被分解。

如果 IE7 和 IE8 正确实现语法,它们也应该能够处理所有这些。

If a 命名空间前缀 https://www.w3.org/TR/selectors-3/#attrnmsp使用时,前缀和属性名称之间不允许有空格。

这些是不正确的:

unit[sh| quantity]
unit[ sh| quantity="200" ]
unit[sh| quantity = "200"]

这些是正确的:

unit[sh|quantity]
unit[ sh|quantity="200" ]
unit[sh|quantity = "200"]

属性值中的空格

但请注意上面属性值周围的引号;如果您忽略它们,并且尝试选择属性值中包含空格的内容,则会出现语法错误。

这是不正确的:

div[class=one two]

这是对的:

div[class="one two"]

这是因为不带引号的属性值被视为标识符,不包含空格(出于明显的原因),而带引号的值被视为字符串。看这个规格 https://www.w3.org/TR/CSS21/syndata.html#characters更多细节。

为了防止此类错误,我强烈建议始终引用属性值,无论是 HTML、XHTML(必需)、XML(必需)、CSS 还是 jQuery(一旦需要 https://stackoverflow.com/questions/9987068/do-you-use-quotes-in-jquery-when-searching-for-attribute-values/9987074#9987074).

属性值后的空格

从选择器 4 开始(在本答案最初发布之后),属性选择器可以接受属性值后面出现的标识符形式的标志。两个标志已被定​​义为字符大小写 https://drafts.csswg.org/selectors-4/#attribute-case,一个用于不区分大小写的匹配:

div[data-foo="bar" i]

还有一个用于区分大小写的匹配(其添加我曾参与过 https://github.com/whatwg/html/issues/4158,尽管由 WHATWG 代理):

ol[type="A" s]
ol[type="a" s]

语法已经是updated https://drafts.csswg.org/selectors-4/#grammar thus:

attrib
  : '[' S* attrib_name ']'
    | '[' S* attrib_name attrib_match [ IDENT | STRING ] S* attrib_flags? ']'
  ;

attrib_name
  : wqname_prefix? IDENT S*

attrib_match
  : [ '=' |
      PREFIX-MATCH |
      SUFFIX-MATCH |
      SUBSTRING-MATCH |
      INCLUDE-MATCH |
      DASH-MATCH
    ] S*

attrib_flags
  : IDENT S*

用简单的英语来说:如果属性值没有被引用(即它是一个标识符),则它和之间有空格attrib_flags是必须的;否则,如果属性值被引用,则空格是可选的,但为了可读性强烈建议使用空格。之间的空白attrib_flags右括号一如既往是可选的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

属性选择器中有关空格的规则是什么? 的相关文章

  • 如何在不使CSS3多列div变窄的情况下添加浮动图像?

    正如人们可以在这里看到的 http jsfiddle net ZP3vu http jsfiddle net ZP3vu 由于图像浮动 文本变得更窄 然后在图像下方恢复到 100 宽度 然而 对于 CSS3 多列 它变得很难看 http j
  • Chrome 中缩小后的图像模糊

    我正在使用 gravatars 并且经常使用 css 缩小它们 我相信 Google Chrome 直到最近都可以正确执行此操作 我可能是错的 不确定问题何时开始发生 但现在 图像在以下情况下变得模糊缩小尺寸 这种情况只发生在 Chrome
  • Internet Explorer 10+ 媒体查询和响应断点

    我正在尝试将 IE10 特定媒体查询与最大宽度页面断点结合起来 我很确定它们可以组合 但不知道如何去做 这是原始的 IE10 唯一的 css 媒体查询 media all and ms high contrast none ms high
  • 使弹性盒中的项目占据所有垂直和水平空间

    我目前在容器中有元素 每个元素都包含一个图像 我想使用 Flexbox 将它们分布到四个角或容器中 图像在水平方向上分布正确 但在垂直方向上没有占用所有可用空间 Here s what it looks like at the moment
  • 在 html5 音频播放器时间轴上制作样式

    我想在 html5 音频播放器上制作一个样式
  • LESS 循环中的多个选择器

    我使用以下代码使用 LESS CSS 生成列布局 columnBuilder index when index lt columnCount container columnCount grid index width unit baseW
  • 离子标签栏与主页按钮重叠(iPhone X - iOS 11)

    使用 iOS 11 和 iPhone X苹果指定 https developer apple com ios human interface guidelines overview iphone x 每个应用程序都应该位于 安全区域 由于虚
  • 设置 display:block 后将焦点设置在输入元素上

    我有一个 HTML 内容如下 div class hiddenClass this implies display none span span div
  • 将 div 扩展到 iFrame 范围之外?

    是否可以将内容扩展到 iframe 之外 就我而言 我以前渲染的是原生
  • 自定义字体在 IE 中仍然不起作用

    我试图显示自定义字体 Duke Fill 的网页是http www hamlinforcongress com helpout php http www hamlinforcongress com helpout php 我在用着 font
  • 使用 CSS3 在屏幕上移动图像

    我浏览网页已经有一段时间了 试图找到一种方法 让图标在加载页面时移动到屏幕上 从左侧移动到 body div 的中心 如何才能做到这一点 这是我到目前为止所拥有的 CSS3 a rotator text decoration none pa
  • Jquery 在页面加载时滚动到偏移目标 div

    我正在尝试滚动到 URL 中的 div 它可能是 21 个 ID 之一 例如 url com test lite1 url com test lite2 url com test lite3 我需要在页面加载时发生这种情况 用户来自电子书
  • 有没有办法为 CSS3 边框图像的每一侧使用不同的图像?

    在 Firefox 和 Safari 上 我可以通过以下 CSS 使用图像作为边框 moz border image url shadow left png 0 7 0 7 round round webkit border image u
  • 填充重叠的圆形区域

    我有两个相交的圆 我想让相交区域具有颜色 即使这两个圆是透明的 我想我可以找到一些方法用 css 来做到这一点mix blend mode财产 但我没有成功 当然 我可以使圆圈具有颜色并降低其不透明度 但我希望它们是白色或透明的 其中只有重
  • 无法删除文档底部的空白

    我似乎每次渲染页面时都会生成这个空间块 我不知道它是如何出现在那里的 下面是我在 chrome 中检查时的图像 它发生在其他浏览器中 这是一个问题 因为它位于我的页脚下方 所以我只有空格 似乎没有 CSS 可以解决它 只能直接删除空格 这很
  • 分页后重新显示当前标题

    我正在使用 Wea syPrint 创建文档 我有一些带有名称的部分 其中一些可能跨越多个页面 当节太长时 就会出现分页符 我想做的是重新显示当前部分的名称 最好使用相同的格式 以下 MWE 显示了分页符后如何不显示节标题 h1 First
  • 嵌套最小高度不起作用

    我有一个固定大小的绝对定位区域 其中滚动条包含可变大小的内容 现在我需要将内容包装在两个 div 中 这两个 div 至少与区域一样大 但会扩展以适合内容 div div div div content div div div div 要求
  • 如何选择与绝对定位 DIV 重叠的选项?

    我有一个绝对定位的 div 它的作用类似于工具提示 当鼠标悬停在某个元素上时 它会显示 然后在鼠标移开时隐藏 我有几个
  • 来自外部的 Shadow DOM CSS 样式在 Google Chrome 中不起作用

    我在用polymer s paper action dialog and paper button在我的网页中 纸张操作对话框中有两个纸张按钮 我想从外部 主 html 设计这些纸质按钮的样式 我已经写了CSS样式在shadow DOM符号
  • 在 IE7 中水平对齐 div,无垂直堆叠

    我有一个固定容器 里面有一个附加容器 其中根据用户选择容纳了许多 DIV 我需要这些额外的 DIV 水平排列并提供水平滚动 但不是垂直滚动 比如这样 x x x 本质上 我的设置如下所示 div div div class final im

随机推荐

  • 计算列帮助 - TSQL

    CREATE TABLE dbo tblLocations latitude float NOT NULL longitude float NOT NULL location varchar 500 NOT NULL timestamp d
  • Devise登录时如何传递参数

    Devise登录过程中如何传递参数 我有一组用户 每个用户都有自己的个人资料页面 我希望他们能够查看自己的个人资料页面 但不能查看其他用户的个人资料页面 除非他们是管理员 在这种情况下他们可以访问应用程序中的所有内容 我创建了一个 User
  • ZedGraph MajorGrid 和 MinorGrid LineStyle

    我只是想知道是否有人知道如何更改 ZedGraph 的主要和次要网格的线条样式 例如我有 graphPane XAxis MinorGrid IsVisible true 我想要这样的东西 graphPane XAxis MinorGrid
  • 如何在字符串中查找专有名词?

    我正在尝试识别用户提交的 3 4 句话段落中的专有名词 我同意该功能存在一些缺陷 因为我有一个审核团队来验证几乎所有内容 下面是传入段落的示例 尼克 斯威舍 Nick Swisher 击出詹姆斯 希尔兹 James Shields 击出全垒
  • IE 用户代理正则表达式(包括 IE11 和紧凑视图)

    我需要您帮助为用户代理字符串创建 IE 特定的正则表达式 我的目标是获取正确的 IE 版本 包括 IE11 并检查浏览器是否正在运行 Compat View 例如 我在正常模式下对 IE9 的期望结果是 IE 9 0以及 兼容视图 中的 I
  • check_ajax_referer() 到底如何工作?

    聪明的 WordPress 人们说 http www prelovac com vladimir improving security in wordpress plugins using nonces插件开发人员应该在从页面发送回 Wor
  • 选择特定数字后的 n 行

    我使用这样的 data frame Country Date balance of payment business confidence indicator consumer confidence indicator CPI Crisis
  • 行、记录和元组有什么区别? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java - 对于通用数据类型 Stack,new Stack[N] 是否等同于 new Stack[N]?

    Is new Stack 注意Stack 可以分配给Stack
  • 无法连接到远程 JMX

    我在远程主机上有一个 tomcat 应用程序 需要通过 JConsole 连接它 应用程序以参数开始 IP ifconfig eth0 grep inet addr cut d f2 cut d f1 Dcom sun management
  • ALSA中句号的含义

    我在 Linux 上使用 ALSA 和音频应用程序 我发现很棒的文档解释了如何使用它 1 http www linuxjournal com article 6735 page 0 1 and this one http users sus
  • gnuplot/ awk:为过滤后的数据绘制条形图

    我使用 gnuplot 结合 AWK 根据以下输入数据绘制 2D 条形图 Acceptor DonorH Donor Frames Frac AvgDist AvgAng lig 608 O3 HIE 163 HE2 HIE 163 NE2
  • Tensorflow 2.0 中 KerasLayer 的 TimeDistributed

    我正在尝试使用来自tensorflow hub的预训练模型构建CNN RNN base model hub KerasLayer https tfhub dev google imagenet resnet v2 50 feature ve
  • 如何使用Material-UI Grid进行SPA(负边距问题)

    我试图只使用Grid创建一个SPA 我已经习惯了material uiGrid并经常使用它 但是在我的新项目中我不确定我做错了什么 现在这就是问题所在 右侧有一个边距和一个水平滚动条 我知道负边距限制 但如果我对父元素应用填充 如文档所述
  • 如何以编程方式迭代 Word 文档中的下标、上标和方程

    我有一些 Word 文档 每个文档都包含数百页的科学数据 其中包括 化学式 H2SO4 具有所有正确的下标和上标 科学数字 使用上标格式化的指数 很多数学方程 使用Word 中的数学方程编辑器编写 问题是 以 Word 形式存储这些数据对我
  • Python从Json字符串中提取元素

    我有一个 Json 字符串 我可以从中提取一些组件 例如formatted address lat lng 但我无法提取其他组件的特征 值 例如交叉路口 政治 国家 行政区级别1 行政区级别2 行政区级别3 行政区级别4 行政区级别5 口语
  • 增量前和增量后的java评估

    你能一步步解释一下java是如何评估的吗 1 y 的值 int x 5 int y x x 2 这种情况下y的值 int x 5 int y x 3 x 好吧 操作数是从左到右计算的 并且在每种情况下都是 a 的结果postfix运算是递增
  • 转移 Github 组织所有权

    有一种方法可以转移github中存储库的所有权 但是有没有一种方法可以完全转移组织的所有权呢 Github 目前拥有一种向组织的所有者团队添加多人的方法 而且 最初创建组织的用户也可以将任何所有者从团队中删除 有没有办法删除该用户 并将完全
  • 在更新语句中使用表值函数

    我正在尝试执行以下更新语句 Update belege2 Set Preis Einh x Preis Aktion x Aktion PreisHerk x PreisHerk FROM dbo GetPreis belege2 prod
  • 属性选择器中有关空格的规则是什么?

    我正在阅读规范属性选择器 http www w3 org TR css3 selectors attribute selectors 但我找不到任何说明是否允许空格的内容 我猜它在开始 运算符之前和之后以及结束时是允许的 它是否正确 语法中