如何在所有站点上仅使用 css 获取具有相同数据属性的元素?

Posted

技术标签:

【中文标题】如何在所有站点上仅使用 css 获取具有相同数据属性的元素?【英文标题】:How to get element with same data-attr on all site with only css? 【发布时间】:2021-09-14 04:07:06 【问题描述】:

有一个任务 - 在一个有大量嵌套的站点上随机找到一个具有日期属性的元素。这个任务我应该只用 CSS 来做,不用 JS(可能是从 SASS 或 LESS 编译的)。有人知道如何使用 [data-some="true"] 找到任何块?你能帮助我吗?请问?

<div id="parent">
    <div class="row-1">
       <div class="child-first></div>
       <div class="child-second>
           <div data-some="true"></div>
           <div data-some="true"></div>
           <div data-some="true"></div>
       </div>
    <div>
    <div class="row-2">
       <div class="child-first></div>
       <div class="child-second>
           <div data-some="true"></div>
           <div data-some="true"></div>
           <div data-some="true"></div>
       </div>
    <div>
    ...
    <div class="row-n">
       <div class="child-first></div>
       <div class="child-second>
           <div data-some="true"></div>
           <div data-some="true"></div>
           <div data-some="true"></div>
       </div>
    <div>
</div>

【问题讨论】:

【参考方案1】:

你很接近,可以直接使用[data-some="true"]作为CSS选择器:

[data-some="true"] 
  color: red;
<div id="parent">
  <div class="not_nested">
    <div data-some="false">test</div>
    <div data-some="true">test</div>
    <div data-some="true">test</div>
  </div>
  <div>
    <div class="row-2">
      <div class="nested">
        <div data-some="true">test</div>
        <div data-some="false">test</div>
        <div data-some="true">test</div>
      </div>
    </div>
    <div class="row-n">
      <div class="child-first"></div>
      <div class="child-second">
        <div class="deeper_nested">
          <div data-some="true">test</div>
          <div data-some="true">test</div>
          <div data-some="false">test</div>
        </div>
      </div>
    </div>
  </div>
</div>

【讨论】:

非常感谢。但我只需要用 [data-some="true"] 取一个元素。在不知道嵌套深度、带有 [data-some="true"] 的元素的数量以及这些元素的父级的类名的情况下 您可以添加:first-child:nth-child(),但如果没有javascript,您将无法随机获得一个。即使使用 SASS 或 LESS 也不可能...... 我希望在 css 中有新的机会。不过还是非常感谢你 :nth-child() 怎么样 - 这将阻止我访问 中的元素。如果我为您的示例调用 [data-some="true"]:nth-child(3) - 它会给我'null'。 您也可以使用last-child()nth-of-type() 或者您可以组合多个这些选择器以获得嵌套元素。但是对于所有你必须知道的 html 结构,就像你最后的评论显示的那样。你可以忘记 CSS 中的随机选择。即使在 SASS 或 LESS 中,随机函数也仅在为浏览器编译 CSS 时起作用。编译后的 CSS 又是静态的了……

以上是关于如何在所有站点上仅使用 css 获取具有相同数据属性的元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS上仅在具有清晰颜色的模糊视图底部获得圆角?

如何在 HighChart 的 yAxis 上仅显示整数值?

Hibernate HQL:当且仅当所有子实体都具有相同值的属性时,如何选择父实体?

如何获取具有多个 css 类的 html 元素

如何在 Windows 上仅安装 PostgreSQL 的客户端工具?

如何使用 JDOM 编写和获取具有相同名称的同一级别的所有 xml 元素