CSS :last-child AND :将鼠标悬停在 ul 中的 link 上

CSS :last-child AND :hover on an a link in a ul

我正在设计导航菜单的最后一个 child,我似乎可以使用以下代码来完成它:

.aston-menu-light ul > li:last-child {
    border:2px solid blue;
    border-radius: 50px;
    padding:0 20px 0 20px;
} 

.aston-menu-light ul > li > ul > li:last-child {
    border:none !important;
    padding:0 !important;
} 

.aston-menu-light ul > li:last-child:hover {
    background-color:#ffff;
    -webkit-transition: all .5s;
    -o-transition: all .5s;
    transition: all .5s;
} 

当我尝试将鼠标悬停在最后一个 child 上并瞄准 <a> 时,问题就来了。我正在使用这个:

.aston-menu-light ul > li > a:last-child:hover {
    color:red !important;
} 

但它似乎为所有 <a> 标签设置了样式,而不仅仅是最后一个 child。我尝试过以下变体:ul > li a 但我似乎无法使其正常工作。

我这里有一个代码笔:https://codepen.io/shaun-taylor/pen/LXdGGN

这个的主要目标只是当你将鼠标悬停在顶层的最后一个 link 上时,我猜它只变成红色 - 感谢你的阅读!

你应该改变

.aston-menu-light ul > li > a:last-child:hover {
    color:red !important;
}

.aston-menu-light>ul>li:last-child > a:hover {
    color:red !important;
} 

/* CSS Document */


a {
 color: black;
}

nav {
 margin: 50px 0;

}

nav ul {
 padding: 0;
  margin: 0;
 list-style: none;
 position: relative;
 }
 
nav ul li {
 display:inline-block;
}

nav a {
 display:block;
 padding:0 10px; 
 color:#black;
 font-size:20px;
 line-height: 60px;
 text-decoration:none;
}


/* Hide Dropdowns by Default */
nav ul ul {
 display: none;
 position: absolute; 
 top: 60px; /* the height of the main nav */
}
 
/* Display Dropdowns on Hover */
nav ul li:hover > ul {
 display:inherit;
}
 
/* Fisrt Tier Dropdown */
nav ul ul li {
 width:170px;
 float:none;
 display:list-item;
 position: relative;
}

/* Second, Third and more Tiers */
nav ul ul ul li {
 position: relative;
 top:-60px; 
 left:170px;
}

 
/* Change this in order to change the Dropdown symbol */
li > a:after { content:  ' +'; }
li > a:only-child:after { content: ''; }

.aston-menu-light ul > li:last-child {
 border:2px solid blue;
 border-radius: 50px;
 padding:0 20px 0 20px;
} 

.aston-menu-light ul > li > ul > li:last-child {
 border:none !important;
 padding:0 !important;
} 

.aston-menu-light ul > li:last-child:hover {
 background-color:#ffff;
 -webkit-transition: all .5s;
 -o-transition: all .5s;
 transition: all .5s;
} 

.aston-menu-light>ul>li:last-child > a:hover {
 color:red !important;
} 
<nav class="aston-menu-light">
    <ul>
        <li><a href="#">link</a>
          <!-- First Tier Drop Down -->
          <ul>
              <li><a href="#">link</a></li>
              <li><a href="#">link</a></li>
              <li><a href="#">link</a></li>
          </ul>
        </li>
        <li><a href="#">link</a>
          <!-- First Tier Drop Down -->
          <ul>
              <li><a href="#">link</a></li>
              <li><a href="#">link</a></li>
              <li><a href="#">link</a></li>
          </ul>        
        </li>
        <li><a href="#">link</a></li>
        <li><a href="#">link</a>
          <!-- First Tier Drop Down -->
          <ul>
              <li><a href="#">link</a></li>
              <li><a href="#">link</a></li>
              <li><a href="#">link</a></li>
          </ul>
        </li>
        <li><a href="#">link</a>
          <!-- First Tier Drop Down -->
          <ul>
              <li><a href="#">link</a></li>
              <li><a href="#">link</a></li>
              <li><a href="#">link</a></li>
          </ul>
        </li>
        <li><a href="#">link</a></li>
        <li><a href="#">link</a></li>
    </ul>
</nav>

使用这个:

.aston-menu-light ul > li:last-child a:hover {
  color:red;
}

你应该重写

.aston-menu-light ul > li > a:last-child:hover {
  color:red !important;
} 

.aston-menu-light ul > li:last-child > a:hover {
  color:red;
} 

您做错的是,在所有 li 元素中,a 元素始终是最后一个子元素!因此,在所有这些中,当您悬停时它会变成红色。 您需要的是最后一个 li 元素,因此在 CSS.

中使用 li:last-child

另外,没有必要使用 !important,因为这个 CSS 选择器比

更具体
a {
  color: black;
}

反正都会红

只是为了简化它。

.aston-menu-light ul li:last-child a:hover {
    color:red !important;
}