我试图在用hover
制作的垂直nav
上为flexbox
进行下划线。在没有nav
的水平flexbox
上,hover
下划线可以正常工作,但是一旦添加flexbox
,下划线就会跨越整个框,而不仅仅是文本下方。>
看看下面的第一个代码段如何按预期工作,但是一旦我在第二个代码段中将main_nav
与flexbox
垂直,下划线就会中断。
如何解决此问题,使其在保持nav
垂直的同时正确下划线?
#wrapper {
width: 100%;
height: 300px;
background-color: black;
}
#wrapper #main_nav {
//display: flex;
//flex-direction: column;
}
.nav_item {
text-decoration: none;
color: white;
display: inline-block
}
.nav_item:after {
display: block;
content: '';
width: 0;
height: 2px;
background-color: white;
}
.nav_item:hover:after {
width: 100%;
transition: width 150ms ease-in;
}
<div id="wrapper">
<nav id="main_nav">
<a href="#" class="nav_item">Item1</a>
<a href="#" class="nav_item">Item2</a>
<a href="#" class="nav_item">Item3</a>
<a href="#" class="nav_item">Item4</a>
</nav>
</div>
#wrapper {
width: 100%;
height: 300px;
background-color: black;
}
#wrapper #main_nav {
display: flex;
flex-direction: column;
}
.nav_item {
text-decoration: none;
color: white;
display: inline-block
}
.nav_item:after {
display: block;
content: '';
width: 0;
height: 2px;
background-color: white;
}
.nav_item:hover:after {
width: 100%;
transition: width 150ms ease-in;
}
<div id="wrapper">
<nav id="main_nav">
<a href="#" class="nav_item">Item1</a>
<a href="#" class="nav_item">Item2</a>
<a href="#" class="nav_item">Item3</a>
<a href="#" class="nav_item">Item4</a>
</nav>
</div>
答案 0 :(得分:2)
使用infinity
代替块级的f(x)
。
答案 1 :(得分:2)
默认情况下,flexbox stretch
项。对于flex-direction: column
配置,您必须添加align-items: flex-start
对其进行修复,如下所示:
#wrapper #main_nav {
display: flex;
flex-direction: column;
align-items: flex-start;
}
希望有帮助。