我尝试使用过渡创建一个仅限CSS3的下拉菜单,但它并不像我希望的那样100%工作。即使您将鼠标悬停在展开的下拉菜单上,我也希望下划线悬停状态相同。
这是我的第一次尝试: http://codepen.io/Winterfox/pen/wGmEbY
ul {
text-align: center;
li {
display:inline-block;
margin-right: 15px;
transition:all 0.3s ease-in-out;
&:hover {
.submenu {
height: 85px;
}
}
.submenu {
overflow:hidden;
position:absolute;
left: 0;
width: 100%;
background-color: #3862a0;
height: 0;
margin-top: 10px;
line-height: 40px;
box-sizing:border-box;
transition:height 0.3s ease-in-out;
transition-delay: 0.1s;
a {
color: #fff;
margin-top: 20px;
font-size: 16px;
&:hover {
color: #fff;
text-decoration:underline;
}
}
}
a {
color: #999;
display: block;
padding: 0 7px 0 7px;
margin: 0 0 0 0;
text-decoration: none;
position: relative;
&:hover {
color: #3862a0;
&::before {
visibility: visible;
transform: scale(1, 1);
}
}
&::before {
content: "";
position: absolute;
width: 100%;
height: 3px;
bottom: -10px;
left: 0px;
background-color: #3862a0;
transition: all 0.2s ease-in-out;
transform: scale(0, 0);
visibility: hidden;
}
}
}
}
正如您可以看到,悬停展开的下拉菜单时会删除悬停状态。我尝试通过将转换移动到li元素来解决此问题,如下所示: http://codepen.io/Winterfox/pen/ZWxqvp
但是当我在悬停状态下更改位置时,我遇到了1#的问题,当它再次关闭时,下拉列表看起来并不好看。 2#菜单文本的蓝色下划线现在显示在页面底部。
有关如何使用CSS3解决此问题的任何建议吗?
答案 0 :(得分:0)
我认为您的想法朝着正确的方向前进,但不是将样式应用于li
,您只需将锚点移动到li:hover
块内,如:
li {
...
&:hover {
...
a {
color: #3862a0;
&::before {
visibility: visible;
transform: scale(1, 1);
}
}
}
}