繁体   English   中英

:hover CSS选择器的异常行为(角度)

[英]Unexpected behavior with the :hover CSS selector (Angular)

我有一个菜单,其中包含3个层次的深度信息。 它从类别开始,然后是子类别,最后是最终链接。 其中一些链接已经在第二级甚至第一级中了,但这不是问题。 菜单工作正常。

问题是我试图使它看起来精美,因此我向每个div添加了一个指定菜单级别的类。 您可以在此处看到完整的Angular模板。 注意这些类是“ lvl0”,“ lvl1”,“ lvl2”:

<div class="menu-container">
  <div class="row header">
    <img class="logo" src="../../../assets/menu-header.PNG">
  </div>
  <div class="row menu-btn">
    <div class="inner-menu-btn" (click)="openMenu()">
      <span class="menu-span" [@menuStringAnim]="active">MENU</span>
      <i class="fa fa-bars menu-icon" [@menuIconAnim]="active"></i>
    </div>
  </div>
</div>
<div class="menu-list" [@menuListAnim]="active">
  <div class="row row-fix lvl0" *ngFor="let category of getCategories()" (click)="openCategory(category)">
    <div class="little-menu-bar-toplvl" *ngIf="categoriesNavigator.lvl0 == category.key"></div>
    <span class="menu-top-level">{{ category?.title?.toUpperCase() }} </span>
    <div *ngIf="categoriesNavigator.lvl0 == category.key">
      <br>
      <div class="row row-fix lvl1" *ngFor="let subcategory of getSubcategories(category.key)" (click)="openSubcategory(subcategory)">
        <div class="little-menu-bar-midlvl"></div> 
        <span class="menu-second-level">{{ subcategory?.title?.toUpperCase() }} </span>
          <div *ngIf="categoriesNavigator.lvl1 == subcategory.key">
            <br>
            <div class="row row-fix lvl2" *ngFor="let thirdLevel of getThirdLevel(category.key, subcategory.key)" (click)="openUrl(thirdLevel)">
                <div class="little-menu-bar-lowlvl" *ngIf="categoriesNavigator.lvl0 == category.key"></div>
                <span class="menu-third-level">{{ thirdLevel?.title?.toUpperCase() }} </span>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

因此,这些类非常简单。 我不太擅长CSS(我更喜欢设计逻辑而不是设计),也许我在这里做一些愚蠢的事情:

.lvl0 :hover{
    color: orange;
}
.lvl1 :hover{
    color: orange;

}

.lvl2 :hover{
    color: orange;
    clear: both;
}

因此,该行为对于第一级来说效果很好,但是正如您所看到的,第二级的所有行都将突出显示,而不仅仅是我徘徊的行:

在此处输入图片说明

第三级也是如此。

您对我做错了什么有想法吗? 我添加了Angular标签,以防它与我的模板代码有关。 谢谢!

问题是您已将样式应用于div,并且当div嵌套时,样式将层叠并使其内部的所有颜色变为颜色-您可以尝试将样式直接应用于范围以避免这种情况。 我也删除了你的悬停冒号之前的空间

 .lvl0:hover>span { /* leave hover on div but style the span */ color: orange; } .lvl1:hover>span { color: red; } .lvl2:hover>span { color: green; } 
 <div class="lvl0"> <span>test 0</span> <div class="lvl1"> <span>test 1</span> <div class="lvl2"> <span>test 2</span> </div> </div> </div> 

:hover基本上向下传播到其他级别。 不要直接在父级上使用CSS 而是在跨度之类的东西上使用它。在这里检查笔可以解决您的问题。 在您的情况下,您也可以使用<div>标记,而不是在此处关闭的span,它基本上是下一级别的兄弟。

.lvl:hover {
    //common for all
    color: orange;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM