代码之家  ›  专栏  ›  技术社区  ›  sudoExclamationExclamation

CSS为什么在不指定标记类型的情况下:not()不起作用?[副本]

  •  1
  • sudoExclamationExclamation  · 技术社区  · 3 年前

    我有以下代码:

    * {
      font-size: 30px;
    }
    
    .day {
      color: gray;
    }
    
    .today {
      color: blue;
    }
    
    :not(.today) .date {
      color: orange;
    }
    <span class="day">Tuesday<span class="date"> • 4</span></span>
    <br>
    <span class="day today">Wednesday<span class="date"> • 5</span></span>

    我希望 • 5 由于 :not(.today) .date 但它呈现为橙色:

    enter image description here

    如果我加上 span 之前 :not ,那么它工作得很好。但为什么我需要添加它?

    如果我添加 * 之前 :不是 ,则它保持为橙色。

    有没有办法让它变成蓝色而不必指定 跨度 ?

    2 回复  |  直到 3 年前
        1
  •  2
  •   jsejcksn    3 年前

    有没有办法让它变成蓝色而不必指定 span ?

    是,将选择限制为具有 day 类别:

    .day:not(.today) .date
    

    * {
      font-size: 30px;
    }
    
    .day {
      color: gray;
    }
    
    .today {
      color: blue;
    }
    
    .day:not(.today) .date {
      color: orange;
    }
    <span class="day">Tuesday<span class="date"> • 4</span></span>
    <br>
    <span class="day today">Wednesday<span class="date"> • 5</span></span>
        2
  •  1
  •   Nick_O    3 年前

    改变 :not(.today) .date -> :not(.today) > .date

    * {
      font-size: 30px;
    }
    
    .day {
      color: gray;
    }
    
    .today {
      color: blue;
    }
    
    :not(.today) > .date {
      color: orange;
    }
    <span class="day">Tuesday<span class="date"> • 4</span></span>
    <br>
    <span class="day today">Wednesday<span class="date"> • 5</span></span>