css - CSS 中的下拉菜单无法正常工作

标签 css drop-down-menu

有人知道为什么这不能正常工作吗?下拉菜单应该只在您悬停在菜单名称上时出现,但如果您将鼠标悬停在元素名称下方,它就会出现,并且菜单列表越长,您可以将鼠标悬停在其下方越远,使其下拉。例如,如果您将鼠标悬停在菜单名称“技能”下方,则会出现下拉菜单,而不是仅在您单击该名称或将鼠标悬停在其上时出现。

 <!DOCTYPE html>
<html>
<head>
<style>
$min-width: 120px; 
$secondarycolor: #CCFF00;
$thirdcolor: #000000; 

@mixin transform($value) { 
-webkit-transform: ($value); 
-moz-transform: ($value); 
-ms-transform: ($value); 
transform: ($value); 
} 

@mixin transition($value) { 
-webkit-transition: ($value);
 -moz-transition: ($value); 
-ms-transition: ($value); 
transition: ($value); 
} 

*{ 
box-sizing: border-box; 
}

 body { 
font-family: 'Open Sans', sans-serif;
color: #CCFF00;
background: #374954; 
text-align: center; 
} 

#main { 
position: relative; 
list-style: none; 
background-image: url('https://tc-boxing.com/pic/gradient.png');
background-repeat: repeat-x no-repeat-y; 
font-weight: 600; 
font-size: 0; 
text-transform: uppercase; 
display: inline-block; 
padding: 0; 
margin: 50px auto;
 li { 
font-size: 0.8rem; 
display: inline-block; 
position: relative;
 padding: 15px 20px; 
cursor: pointer; 
z-index: 5; 
min-width: $min-width; 
} 
}

 li { 
margin: 0; 
} 

.drop { 
overflow: hidden; 
list-style: none; 
position: absolute; 
padding: 0; 
width: 100%;
 left: 0; 
top: 48px; 
div { 
@include transform(translate(0,-100%)); 
@include transition(all 0.5s 0.1s); 
position: relative; 
}

 li { 
display:block;
 padding: 0; 
width: 100%; 
background-image: url('https://tc-boxing.net/pic/gradientdd2.png') !important;
background-repeat: repeat-x no-repeat-y;
 }
 } 

#marker { 
height: 6px; 
background: $secondarycolor !important;
position: absolute;
 bottom: 0; 
width: $min-width; 
z-index: 2; @include transition(all 0.35s); 
} 

@for $i from 1 through 4 { 
#main li:nth-child(#{$i}) { 
&:hover ul div { 
@include transform(translate(0,0)); 
} 
&:hover ~ #marker { 
@include transform(translate(#{(-1+$i)*$min-width},0));
 } 
}
 } 
* {
  box-sizing: border-box;
}

body {
  font-family: 'Open Sans', sans-serif;
  background: #374954;
  color: #CCFF00;
  text-align: center;
}

#main {
  position: relative;
  list-style: none;
  background-image: url('https://tc-boxing.com/pic/gradient.png');
  background-repeat: repeat-x no-repeat-y; 
  font-weight: 600;
  font-size: 0;
  text-transform: uppercase;
  display: inline-block;
  padding: 0;
  margin: 50px auto;
}
#main li {
  font-size: 0.8rem;
  display: inline-block;
  position: relative;
  padding: 15px 20px;
  cursor: pointer;
  z-index: 5;
  min-width: 120px;
}

li {
  margin: 0;
}

.drop {
  overflow: hidden;
  list-style: none;
  position: absolute;
  padding: 0;
  width: 100%;
  left: 0;
  top: 48px;
}
.drop div {
  -webkit-transform: translate(0, -100%);
  -moz-transform: translate(0, -100%);
  -ms-transform: translate(0, -100%);
  transform: translate(0, -100%);
  -webkit-transition: all 0.5s 0.1s;
  -moz-transition: all 0.5s 0.1s;
  -ms-transition: all 0.5s 0.1s;
  transition: all 0.5s 0.1s;
  position: relative;
}
.drop li {
  display: block;
  padding: 0;
  width: 100%;
  background-image: url('https://tc-boxing.net/pic/gradientdd.png') !important;
  background-repeat: repeat-x no-repeat-y;
}

#marker {
  height: 4px;
  background: #CCFF00 !important;
  position: absolute;
  bottom: 0;
  width: 120px;
  z-index: 2;
  -webkit-transition: all 0.35s;
  -moz-transition: all 0.35s;
  -ms-transition: all 0.35s;
  transition: all 0.35s;
}

#main li:nth-child(1):hover ul div {
  -webkit-transform: translate(0, 0);
  -moz-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  transform: translate(0, 0);
}
#main li:nth-child(1):hover ~ #marker {
  -webkit-transform: translate(0px, 0);
  -moz-transform: translate(0px, 0);
  -ms-transform: translate(0px, 0);
  transform: translate(0px, 0);
}

#main li:nth-child(2):hover ul div {
  -webkit-transform: translate(0, 0);
  -moz-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  transform: translate(0, 0);
}
#main li:nth-child(2):hover ~ #marker {
  -webkit-transform: translate(120px, 0);
  -moz-transform: translate(120px, 0);
  -ms-transform: translate(120px, 0);
  transform: translate(120px, 0);
}

#main li:nth-child(3):hover ul div {
  -webkit-transform: translate(0, 0);
  -moz-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  transform: translate(0, 0);
}
#main li:nth-child(3):hover ~ #marker {
  -webkit-transform: translate(240px, 0);
  -moz-transform: translate(240px, 0);
  -ms-transform: translate(240px, 0);
  transform: translate(240px, 0);
}

#main li:nth-child(4):hover ul div {
  -webkit-transform: translate(0, 0);
  -moz-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  transform: translate(0, 0);
}
#main li:nth-child(4):hover ~ #marker {
  -webkit-transform: translate(360px, 0);
  -moz-transform: translate(360px, 0);
  -ms-transform: translate(360px, 0);
  transform: translate(360px, 0);
}
</style>
</head>
<body>
<!-- not responsive yet -->
<nav>
  <ul id="main">
    <li>Home</li>
    <li>About</li>
    <li>Skills
      <ul class="drop">
        <div>
        <li>scss</li>
        <li>jquery</li>
        <li>html</li>
        </div>
      </ul>
    </li>
    <li>Contact</li>
    <div id="marker"></div>
  </ul>
</nav>
</body>
</html>

https://codepen.io/dghez/pen/Kwoper

最佳答案

尝试添加:

#main li {
 visibility: hidden;
}

#main li:hover ul {
 visibility: visible;
}

关于css - CSS 中的下拉菜单无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57285300/

相关文章:

objective-c - 创建下拉列表

html - 倾斜的 div 顶部和底部 CSS

css - 子 <p> 元素如何占据父 &lt;header&gt; 元素的所有高度并显示在父元素的右下角?

html - 限制文本框中显示的行数,但不限制用户写入

php下拉菜单不会保留所选值

css - data-toggle ="collapse"单击菜单时菜单消失

javascript - 将页面加载从自动更改为单击按钮时

css - LESS 中的换行符

c# - 如何在客户端和服务器端使用 selectedIndexChanged 下拉列表

javascript - 如何使纯 CSS 下拉菜单与其中的两个可重定向链接一起工作?