超文本标记语言
<nb-sidebar class="menu-sidebar>
<nb-menu class="sidebar-menu">
<ul class="menu-items">
<li class="menu-item ng-tns-c140-0 ng-star-inserted" >
<a class="ng-tns-c140-0 ng-star-inserted active" ng-reflect-router-link="/pages/dashboard" title="Dashboard" href="/pages/dashboard">
</li>
</ul>
</nb-menu>
</nb-sidebar>
<div class="content">
<router-outlet>
<div class="text">Message</div>
</router-outlet>
</div>
当我将鼠标悬停在li
上时,使router-outlet
可见。
我试过这样
router-outlet {
display: none;
}
nb-sidebar li:hover + .content router-outlet {
display: block;
}
我只想用css/scss来做。我想当我悬停在li
上时router-outlet
是可见的。
3条答案
按热度按时间vdzxcuhz1#
在您的示例中,因为
.content router-outlet
元素不是li
元素的直接同级元素,所以相邻同级组合器将不起作用(有关详细信息,请参阅MDN)不过有几种方法可以做到这一点。第一种使用
:has()
pseudo class,它很简洁,因为它不需要任何javascript,但目前并不是所有浏览器都支持它。Kevin Powell有一个nice introduction。此外,caniuse.com是检查浏览器兼容性的一个很好的资源。注意:我在你的html中添加了一些文本,让你可以悬停在上面。
更普遍支持的方法是使用javascript,它可以检测到你把鼠标放在元素上,然后添加和删除一个类来覆盖
display: none
规则,如下所示,下面的代码应该是不言自明的,但是如果你有任何问题,只要在下面弹出一个评论,我会详细说明。一个一个二个一个一个一个三个一个一个一个一个一个四个一个
k4emjkb12#
您可以使用jQuery hover()方法:
在您的代码中,它将是:
vm0i2vca3#
我认为此处的
+
不正确。请尝试: