当你将鼠标悬停在它们上面时,我想给我的菜单项带来良好的下划线效果。应该有一条标准的实线,其宽度与带下划线的文字相同,但在该直线的末端应该有一条短的倾斜终点线平滑地连接到前一个直线部分。
我该怎么做?
HTML:
<ul class="my-menu">
<li class="my-menu-items">Home</li>
<li class="my-menu-items">About us</li>
<li class="my-menu-items">Contact</li>
</ul>
答案 0 :(得分:2)
您可以使用transform: rotate()
a {
text-decoration: none;
border-bottom: 1px solid black;
position: relative;
display: inline-block;
}
a:after {
content: '';
position: absolute;
right: 0; bottom: -1px;
border-bottom: 1px solid black;
width: 25%;
transform: translateX(100%) rotate(45deg);
transform-origin: 0 50%;
}
&#13;
<a href="#">Home</a>
&#13;
答案 1 :(得分:0)
您可以使用:before
和:after
伪元素。
li {
display: inline-block;
position: relative;
margin: 10px;
padding-bottom: 5px;
cursor: pointer;
}
li:after, li:before {
content: '';
height: 3px;
width: 100%;
background: none;
position: absolute;
transition: all 0.3s ease-in;
bottom: 0;
left: 0;
}
li:after {
left: calc(100% - 3px);
transform: rotate(45deg);
width: 15px;
bottom: -5px;
}
li:hover:after,
li:hover:before {
background: black;
}
&#13;
<ul class="my-menu">
<li class="my-menu-items">Home</li>
<li class="my-menu-items">About us</li>
<li class="my-menu-items">Contact</li>
</ul>
&#13;
对两条线使用伪元素,您可以创建动画更改宽度。
li {
display: inline-block;
position: relative;
margin: 10px;
padding-bottom: 5px;
}
li:after, li:before {
content: '';
height: 3px;
width: 0px;
background: black;
position: absolute;
transition: width 0.3s ease-in;
bottom: 0;
left: 0;
}
li:after {
left: 100%;
transform: rotate(45deg);
transform-origin: top left;
}
li:hover:before {
width: 100%;
}
li:hover:after {
width: 15px;
transition-delay: 0.3s;
}
&#13;
<ul class="my-menu">
<li class="my-menu-items">Home</li>
<li class="my-menu-items">About us</li>
<li class="my-menu-items">Contact</li>
</ul>
&#13;