【问题标题】:css selectors to apply rules to multiple class of similar elementcss 选择器将规则应用于多个类的相似元素
【发布时间】:2013-11-21 13:02:34
【问题描述】:

我有一张简单的桌子

<tr>
     <td class="first">I am the first</td>
     <td class="second">You are the second</td>
     <td class="third">He is third</td>
     <td class="fourth">Someone else is fourth</td>
     <td class="fifth">That guy is fifht</td>
     <td class="sixth">Who care's about sixth</td>
</tr>

我只想对 td 中的某些类应用 css 规则。我可以写一些类似的东西-

td.first, td.fourth, td.fifth
{
    color:purple;
}

这行得通。或者我可以使用课程。我想知道在这种情况下是否有任何有效/更好的方法来编写选择器。

我的担心: 是浏览器,将查找所有类,然后为每个逗号分隔搜索 td。这意味着它将找到所有三个类,然后评估标签。除了使用单个类之外,浏览器有什么方法可以找到所有三个类然后匹配标签。

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    解决您的问题

    你说:

    我关心的是:浏览器是否会为每个逗号查找所有 td 分离并找到类匹配。这意味着它将找到所有 td 标签三次。如果这是真的,我怎样才能让浏览器搜索 为 td 标记一次,然后查找类匹配项。

    但这不是 css 评估的方式,as it goes from right to left。在你给的情况下:

    td.first, td.fourth, td.fifth
    {
        color:purple;
    }
    

    所以它不会通过td 元素搜索“三次”。相反,它将匹配文档中的.first 类(无论它在哪里),然后检查它是否应用于td 元素,如果是,则匹配。然后以类似的方式评估.fourth等。

    因此,如果您关心的是通过 td 元素进行迭代,那么您的担忧是无效的。你的代码是高效的。

    【讨论】:

      【解决方案2】:

      对于特定属性,您可以创建单独的类。 例如,在您的情况下,您可以创建一个类 .color 并这样写:

      <tr>
           <td class="first color">I am the first</td>
           <td class="second">You are the second</td>
           <td class="third">He is third</td>
           <td class="fourth color">Someone else is fourth</td>
           <td class="fifth color">That guy is fifht</td>
           <td class="sixth">Who care's about sixth</td>
      </tr>
      
      .color{color:purple;}
      

      【讨论】:

      • 我同意上课会更快。是否有任何 css 方法来定义选择器以在一种元素下查找多个类
      • 很好的解决方案,虽然我会尽量避免使用类名“紫色”本身......如果你决定它们应该是不同的颜色,它就会失去意义,例如:P
      【解决方案3】:

      您可以使用:nth-child 属性来实现相同的目的,而无需将所有这些不同的类都分配给您的 TD

      即:

      td:nth-child(1), 
      td:nth-child(4), 
      td:nth-child(5) {
          color:purple;
      }
      

      【讨论】:

      • 我不认为第 n 个孩子是比课堂更好/更快的解决方案。这很脆弱,td 的顺序可能会改变,我的风格会搞砸
      • 你说的很对。对于我自己的架构,我会选择@Hiral 提供的内容
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2016-01-28
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      • 2019-01-05
      相关资源
      最近更新 更多