答案 0 :(得分:2)
假设您希望在悬停时在每个项目下方显示粗线,则有多种方法可以执行此操作。
编辑:我使用background-position
和linear-gradient
添加了一些解决方案。
border
li
项目时显示边框。这有问题,因为引入边框会强制元素移动并破坏对齐。在这种特殊情况下,文本内容会向上移动。 (例子 - 1)。
您所做的是设置从li
开始的所有transparent
项目的边框作为边框颜色。将鼠标悬停在每个项目上时,只需将颜色更改为所需的颜色即可。这样它就不会破坏你的布局。 (例2)。
box-shadow
box-shadow
可以用来欺骗它,它比border
方法更好,因为它不会影响元素的盒子模型。 (例子 - 3)。
.menu {
list-style-type: none;
}
.menu li {
display: inline-block;
transition: 0.3s;
padding: 10px;
}
.menu.border li:hover {
border-bottom: 2px solid tomato;
/*causes disturbances in layout*/
}
.menu.border-better li {
border-bottom: 2px solid transparent;
/* forces you to have borders from start and consider them in calculation of height*/
}
.menu.border-better li:hover {
border-bottom-color: goldenrod;
}
.menu.box-shadow li:hover {
box-shadow: inset 0 -2px 0 0 magenta;
}
.menu.gradient li:hover {
/*If you don't care about transition...
* also, it may not work in multiple scenarios.
*/
background-image: linear-gradient(to top, red 2px, transparent 0);
}
.menu.background-position li {
/** want to use background but want transition to work? use this.*/
background-image: linear-gradient(to top, red 2px, transparent 0);
background-position: 0 2px;
background-repeat: no-repeat;
}
.menu.background-position li:hover {
background-position: initial;
}

Example - 1
<ul class="menu border">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
Example - 2
<ul class="menu border-better">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
Example - 3
<ul class="menu box-shadow">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
Example - 4
<ul class="menu gradient">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
Example - 5
<ul class="menu background-position">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
&#13;
我个人更喜欢box-shadow
方法,因为。
答案 1 :(得分:1)
这是我的解决方案:http://codepen.io/thovo/pen/WxQpaP
我们的想法是,您无法对包含border-bottom
的主box-shadow
使用li
或a
,因此我建议您使用像{{1}这样的peuseudo类或} before
可以在您的照片中获得相同的效果。
EDIT1 我刚从@Jacob
借用了HTML部分答案 2 :(得分:0)
通常,您可以通过替换margin-bottom
之类的内容并将其替换为border-bottom
来完成此操作,例如:
nav a {
display: inline-block;
margin-bottom: 4px;
}
nav a:hover {
margin-bottom: none;
border-bottom: 4px;
}
这假设您的HTML类似于:
<nav>
<a href="#">About</a>
<a href="#">Schools</a>
<a href="#">Jobs</a>
<a href="#">Lookbook</a>
<a href="#">Figures</a>
<a href="#">Indexes</a>
<a href="#">Calendars</a>
</nav>