elements specifically for :hover overriding the an equivalent class for :active

前端 未结 1 1030
不知归路
不知归路 2021-01-26 10:02

I have code to have a background with a font color assigned with one class then have separate classes for changing the color on :hover or :active but the :active state does not

相关标签:
1条回答
  • 2021-01-26 10:40

    :active pseudo-class should go after :hover, otherwise the :hover overwrites (The order for the link-relates pseudo-clasess is: :link | :visited | :hover | :active.). You code example works as expected but if you change the classes the :active pseudo-class never applies.

    .backgroundRed,
    .backgroundRedHover:hover,
    .backgroundRedActive:active {
      background: red;
    }
    
    .backgroundGreen,
    .backgroundGreenHover:hover,
    .backgroundGreenActive:active {
      background: green;
    }
    
    .backgroundBlue,
    .backgroundBlueHover:hover,
    .backgroundBlueActive:active {
      background: blue;
    }
    <div class="backgroundRed backgroundBlueHover backgroundGreenActive" style="width: 100px; height: 100px;"></div>

    You need more CSS lines but reordering the classes with :active after the :hover works fine.

    .backgroundRed,
    .backgroundRedHover:hover {
      background: red;
    }
    
    .backgroundGreen,
    .backgroundGreenHover:hover {
      background: green;
    }
    
    .backgroundBlue,
    .backgroundBlueHover:hover {
      background: blue;
    }
    
    .backgroundRedActive:active {
      background: red;
    }
    
    .backgroundGreenActive:active {
      background: green;
    }
    
    .backgroundBlueActive:active {
      background: blue;
    }
    <div class="backgroundRed backgroundBlueHover backgroundGreenActive" style="width: 100px; height: 100px;"></div>

    0 讨论(0)
提交回复
热议问题