简体   繁体   English

在另一个div悬停时隐藏一个div

[英]Hide one div on hover of another div

I'm creating a sidebar navigation. 我正在创建侧边栏导航。 I want the circles (.circle-indicator) to disappear when the sidebar (.nav-sidebar) expands on hover. 我希望当边栏(.nav-sidebar)悬停扩展时,圆圈(.circle-indicator)消失。 Can this be done with CSS or do I need to use javascript? 可以使用CSS完成此操作,还是需要使用JavaScript? How would I do this? 我该怎么做?

Here's the code for the page 这是页面的代码

 body { margin:-20px; } .nav-sidebar { position:fixed; width:10px; background-color:#000; color:#fff; height: 100vh; padding: 100px 20px 0 20px; white-space: nowrap; } .nav-sidebar:hover { width:300px; transition-duration:1s; } .nav-sidebar a { color:#fff; text-decoration: none; font-size: 2em; } .nav-sidebar ul { list-style:none; } .nav-sidebar sidebar-links li { padding-bottom:1em; } .nav-sidebar .circle-indicator { position:fixed; left:-33px; top:40vh; } .nav-sidebar .circle-indicator ul li { margin-bottom:1em; display:block; border:1px solid #fff; border-radius: 10px; width:10px; height:10px; padding:0; } .nav-sidebar .circle-indicator ul li a:active { background-color:#fff; } 
 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"/> </head> <body> <div class="nav-sidebar"> <div class="circle-indicator"> <ul> <li><a href="#" alt="Item 1"></a></li> <li><a href="#" alt="Item 2"></a></li> <li><a href="#" alt="Item 3"></a></li> <li><a href="#" alt="Item 4"></a></li> <li><a href="#" alt="Item 5"></a></li> </ul> </div> <!-- end circle-indicator --> <div class="sidebar-links"> <ul> <li><a href="#" alt="Item 1">Item 1</a></li> <li><a href="#" alt="Item 2">Item 2</a></li> <li><a href="#" alt="Item 3">Item 3</a></li> <li><a href="#" alt="Item 4">Item 4</a></li> <li><a href="#" alt="Item 5">Item 5</a></li> </ul> </div> <!-- end sidebar-links --> </div> <!-- end nav-sidebar --> </body> </html> 

Use 采用

.nav-sidebar:hover .circle-indicator{
    display:none;
}

 body { margin:-20px; } .nav-sidebar { position:fixed; width:10px; background-color:#000; color:#fff; height: 100vh; padding: 100px 20px 0 20px; white-space: nowrap; } .nav-sidebar:hover { width:300px; transition-duration:1s; } .nav-sidebar a { color:#fff; text-decoration: none; font-size: 2em; } .nav-sidebar ul { list-style:none; } .nav-sidebar sidebar-links li { padding-bottom:1em; } .nav-sidebar .circle-indicator { position:fixed; left:-33px; top:40vh; } .nav-sidebar .circle-indicator ul li { margin-bottom:1em; display:block; border:1px solid #fff; border-radius: 10px; width:10px; height:10px; padding:0; } .nav-sidebar .circle-indicator ul li a:active { background-color:#fff; } .nav-sidebar:hover .circle-indicator{ display:none; } 
 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"/> </head> <body> <div class="nav-sidebar"> <div class="circle-indicator"> <ul> <li><a href="#" alt="Item 1"></a></li> <li><a href="#" alt="Item 2"></a></li> <li><a href="#" alt="Item 3"></a></li> <li><a href="#" alt="Item 4"></a></li> <li><a href="#" alt="Item 5"></a></li> </ul> </div> <!-- end circle-indicator --> <div class="sidebar-links"> <ul> <li><a href="#" alt="Item 1">Item 1</a></li> <li><a href="#" alt="Item 2">Item 2</a></li> <li><a href="#" alt="Item 3">Item 3</a></li> <li><a href="#" alt="Item 4">Item 4</a></li> <li><a href="#" alt="Item 5">Item 5</a></li> </ul> </div> <!-- end sidebar-links --> </div> <!-- end nav-sidebar --> </body> </html> 

This rule will do that 这条规则可以做到

.nav-sidebar:hover .circle-indicator {
    display: none;
}

Or with a transition 或过渡

.nav-sidebar:hover .circle-indicator {
    opacity: 0;
    transition: opacity 0.5s;
}

Sample snippet 样本片段

 body { margin:-20px; } .nav-sidebar { position:fixed; width:10px; background-color:#000; color:#fff; height: 100vh; padding: 100px 20px 0 20px; white-space: nowrap; } .nav-sidebar:hover { width:300px; transition-duration:1s; } .nav-sidebar:hover .circle-indicator { opacity: 0; transition: opacity 0.5s; } .nav-sidebar a { color:#fff; text-decoration: none; font-size: 2em; } .nav-sidebar ul { list-style:none; } .nav-sidebar sidebar-links li { padding-bottom:1em; } .nav-sidebar .circle-indicator { position:fixed; left:-33px; top:40vh; } .nav-sidebar .circle-indicator ul li { margin-bottom:1em; display:block; border:1px solid #fff; border-radius: 10px; width:10px; height:10px; padding:0; } .nav-sidebar .circle-indicator ul li a:active { background-color:#fff; } 
 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"/> </head> <body> <div class="nav-sidebar"> <div class="circle-indicator"> <ul> <li><a href="#" alt="Item 1"></a></li> <li><a href="#" alt="Item 2"></a></li> <li><a href="#" alt="Item 3"></a></li> <li><a href="#" alt="Item 4"></a></li> <li><a href="#" alt="Item 5"></a></li> </ul> </div> <!-- end circle-indicator --> <div class="sidebar-links"> <ul> <li><a href="#" alt="Item 1">Item 1</a></li> <li><a href="#" alt="Item 2">Item 2</a></li> <li><a href="#" alt="Item 3">Item 3</a></li> <li><a href="#" alt="Item 4">Item 4</a></li> <li><a href="#" alt="Item 5">Item 5</a></li> </ul> </div> <!-- end sidebar-links --> </div> <!-- end nav-sidebar --> </body> </html> 

Good answers by LGSon and Brad, but I'd do it with opacity and a transition . LGSon和Brad给出了很好的答案,但我会做到opacitytransition You cannot transition dispay: none 您无法过渡dispay: none

 body { margin:-20px; } .nav-sidebar { position:fixed; width:10px; background-color:#000; color:#fff; height: 100vh; padding: 100px 20px 0 20px; white-space: nowrap; } .nav-sidebar:hover { width:300px; transition-duration:1s; } .nav-sidebar a { color:#fff; text-decoration: none; font-size: 2em; } .nav-sidebar ul { list-style:none; } .nav-sidebar sidebar-links li { padding-bottom:1em; } .nav-sidebar .circle-indicator { position:fixed; left:-33px; top:40vh; transition: opacity 1s; } .nav-sidebar .circle-indicator ul li { margin-bottom:1em; display:block; border:1px solid #fff; border-radius: 10px; width:10px; height:10px; padding:0; } .nav-sidebar .circle-indicator ul li a:active { background-color:#fff; } .nav-sidebar:hover .circle-indicator { opacity: 0; } 
 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"/> </head> <body> <div class="nav-sidebar"> <div class="circle-indicator"> <ul> <li><a href="#" alt="Item 1"></a></li> <li><a href="#" alt="Item 2"></a></li> <li><a href="#" alt="Item 3"></a></li> <li><a href="#" alt="Item 4"></a></li> <li><a href="#" alt="Item 5"></a></li> </ul> </div> <!-- end circle-indicator --> <div class="sidebar-links"> <ul> <li><a href="#" alt="Item 1">Item 1</a></li> <li><a href="#" alt="Item 2">Item 2</a></li> <li><a href="#" alt="Item 3">Item 3</a></li> <li><a href="#" alt="Item 4">Item 4</a></li> <li><a href="#" alt="Item 5">Item 5</a></li> </ul> </div> <!-- end sidebar-links --> </div> <!-- end nav-sidebar --> </body> </html> 

You can create this effect with the following styles 您可以使用以下样式创建此效果

<style>
  .nav-sidebar:hover .circle-indicator {
    display:none;
  }
</style>

 body { margin:-20px; } .nav-sidebar { position:fixed; width:10px; background-color:#000; color:#fff; height: 100vh; padding: 100px 20px 0 20px; white-space: nowrap; } .nav-sidebar:hover { width:300px; transition-duration:1s; } .nav-sidebar a { color:#fff; text-decoration: none; font-size: 2em; } .nav-sidebar ul { list-style:none; } .nav-sidebar sidebar-links li { padding-bottom:1em; } .nav-sidebar .circle-indicator { position:fixed; left:-33px; top:40vh; } .nav-sidebar .circle-indicator ul li { margin-bottom:1em; display:block; border:1px solid #fff; border-radius: 10px; width:10px; height:10px; padding:0; } .nav-sidebar .circle-indicator ul li a:active { background-color:#fff; } .nav-sidebar:hover .circle-indicator { display:none; } 
 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"/> </head> <body> <div class="nav-sidebar"> <div class="circle-indicator"> <ul> <li><a href="#" alt="Item 1"></a></li> <li><a href="#" alt="Item 2"></a></li> <li><a href="#" alt="Item 3"></a></li> <li><a href="#" alt="Item 4"></a></li> <li><a href="#" alt="Item 5"></a></li> </ul> </div> <!-- end circle-indicator --> <div class="sidebar-links"> <ul> <li><a href="#" alt="Item 1">Item 1</a></li> <li><a href="#" alt="Item 2">Item 2</a></li> <li><a href="#" alt="Item 3">Item 3</a></li> <li><a href="#" alt="Item 4">Item 4</a></li> <li><a href="#" alt="Item 5">Item 5</a></li> </ul> </div> <!-- end sidebar-links --> </div> <!-- end nav-sidebar --> </body> </html> 

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

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