我想创建一个水平菜单,当悬停在第一级项目上时会产生动画效果:
.nav {
float: right;
}
.nav ul {
list-style: none;
padding: 0;
margin: 0;
}
.nav ul li {
position: relative;
}
.nav > ul > li {
float: left;
margin-left: 30px;
}
.nav ul li a {
text-decoration: none;
display: inline-block;
width: auto;
color: #6E6C6C;
transition: 1s ease;
}
.nav ul ul {
position: absolute;
top: 50%;
left: 50%;
display: none;
width: 110px;
}
.nav ul li a:hover {
color: #000;
transform: translateX(-50%);
}
.nav > ul > li > a {
padding: 15px 20px 15px 20px;
width: auto;
}
.nav ul li:hover > ul {
display: block;
}
<div class="nav">
<ul>
<li><a href="#">List Item 1</a>
<ul>
<li><a href="#">List Sub-Item 1</a></li>
<li><a href="#">List Sub-Item 2</a></li>
<li><a href="#">List Sub-Item 3</a></li>
</ul>
</li>
<li><a href="#">List Item 2</a>
<ul>
<li><a href="#">List Sub-Item 1</a></li>
<li><a href="#">List Sub-Item 2</a></li>
</ul>
</li>
<li><a href="#">List Item 3</a></li>
<li><a href="#">List Item 4</a></li>
</ul>
</div>
这里我有一个问题,当我将鼠标悬停在第一级项目时,它会返回到它的初始状态。 我该如何处理这个问题?我应该使用flexbox吗? 请给我一个简单的例子。
答案 0 :(得分:1)
您应该将.nav ul li a:hover
选择器更改为.nav ul li:hover > a
。
更新了代码段:
.nav {
float: right;
}
.nav ul {
list-style: none;
padding: 0;
margin: 0;
}
.nav ul li {
position: relative;
}
.nav > ul > li {
float: left;
margin-left: 30px;
}
.nav ul li a {
text-decoration: none;
display: inline-block;
width: auto;
color: #6E6C6C;
transition: 1s ease;
}
.nav ul ul {
position: absolute;
top: 50%;
left: 50%;
display: none;
width: 110px;
}
.nav ul li:hover > a {
color: #000;
transform: translateX(-50%);
}
.nav > ul > li > a {
padding: 15px 20px 15px 20px;
width: auto;
}
.nav ul li:hover > ul {
display: block;
}
<div class="nav">
<ul>
<li><a href="#">List Item 1</a>
<ul>
<li><a href="#">List Sub-Item 1</a></li>
<li><a href="#">List Sub-Item 2</a></li>
<li><a href="#">List Sub-Item 3</a></li>
</ul>
</li>
<li><a href="#">List Item 2</a>
<ul>
<li><a href="#">List Sub-Item 1</a></li>
<li><a href="#">List Sub-Item 2</a></li>
</ul>
</li>
<li><a href="#">List Item 3</a></li>
<li><a href="#">List Item 4</a></li>
</ul>
</div>