【问题标题】:How to use [attribute="value"] in a proper way?如何正确使用 [attribute="value"]?
【发布时间】:2018-07-01 17:13:39
【问题描述】:

我刚刚意识到以下两种方式都有效。我不确定我是否可以省略 label 而只是输入 [type="checkbox"]

我很困惑,因为documentation 与教程和人们的代码不同。有些人使用元素,有些人忽略它们。

它起着重要的作用吗?这两个版本有什么区别吗?

如果有经验丰富的人给我一些建议,我将不胜感激。

<form action="/submit-your-photo" id="your-photo">
    <p>How would you describe yourself?</p>
    <label><input type="checkbox" name="personality" checked> Loving</label>
    <label><input type="checkbox" name="personality"> Lazy</label>
    <label><input type="checkbox" name="personality"> Energetic</label><br>
    <input type="text" placeholder="your photo URL" required>
    <button type="submit">Submit</button>
</form>

CSS:

我的版本:

 input[type="checkbox"]{
    margin: 20px 10px;
  }

第二版:

[type="checkbox"]{
    margin: 20px 10px;
  }

【问题讨论】:

  • Fo label 你的意思是 html 元素 inputlabel 的 html 元素。从上下文来看?您是在问,选择 html 元素 input 及其属性与直接选择属性 [type='*'] 有什么区别,对吗?

标签: html css css-selectors


【解决方案1】:

一个查找具有该参数的任何内容,另一个查找具有该参数的输入元素。一个比另一个更具体。您应该使用哪一个取决于您在选择要样式的东西时的需要,从这个意义上说,没有“正确的方法”。 (尽管在这种情况下它通常并不重要,因为大多数时候输入将是唯一具有该参数的元素。)

【讨论】:

    【解决方案2】:

    第一个版本:

    input[type="checkbox"]
    

    ... 目标所有 input 元素 具有 type 属性的确切值是 checkbox 1

    第二个版本:

    [type="checkbox"]
    

    ... 定位所有具有type 属性且确切值为checkbox 1元素

    和这个是一样的:

    *[type="checkbox"]
    

    由于checkbox 类型仅对input 元素2 有效,因此两个选择器实际上是相同的。第一个版本具有更高的特异性3

    在以下情况下,会有显着差异。

    section[class="blue-background"]
    
    [class="blue-background"]
    

    在第一种情况下,只有具有该类-值对的 section 元素获得蓝色背景。

    在第二种情况下,具有该类-值对的所有元素都会获得蓝色背景。


    1https://www.w3.org/TR/css3-selectors/#selectors

    2https://www.w3.org/TR/2016/REC-html51-20161101/sec-forms.html#checkbox-state-typecheckbox

    3https://stackoverflow.com/a/35657646/3597276

    【讨论】:

    • 我也阅读了该文档,但我不确定我必须引用哪一个。我仍然不知道哪个是领先的:[1](w3.org/TR/css3-selectors/#selectors)或[2](w3.org/TR/selectors/#attrnmsp)首先,我必须弄清楚选择器的级别之间的差异。
    • @Codewife_101:似乎 /TR/selectors 最近更新为指向 WD-selectors4-20130502。 不惜一切代价避免该草案。它已经严重过时了,我不相信 CSSWG 认为将主 /TR/selectors URL 重定向到那个极其过时的草案是合适的(它已经指出过去 12 年以上的 css3 选择器,甚至可能更长)。我对您的建议:遵循 css3-selectors 标准,因为这是当今所有浏览器都使用的当前标准,并且甚至不必担心 selectors-4,因为它仍在不断变化。
    • @Codewife_101:Michael_B 链接到 /TR/css3-selectors。他没有链接到 MDN。也就是说,MDN 的列表更多的是针对 Web 开发人员的摘要,并且与 css3-selectors 规范同样适用。你在正确的轨道上。
    • @Codewife_101:啊,很抱歉造成混乱。我的意思是 /TR/selectors 总是指向当前的 css3-selectors 标准,直到最近它似乎已经更新为指向 2013 年的 L4 规范。这是即将到来的标准 Selectors 4 的过时版本,应该是避免。
    • 看起来他们终于在本月初更新了 /TR/selectors(和 /TR/selectors-4)以指向最新的草稿。
    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 2010-12-24
    • 2020-09-27
    • 2010-09-15
    • 1970-01-01
    • 2016-10-14
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多