文本使用CSS在最后用短斜线加下划线

时间:2017-05-06 17:24:44

标签: html css

当你将鼠标悬停在它们上面时,我想给我的菜单项带来良好的下划线效果。应该有一条标准的实线,其宽度与带下划线的文字相同,但在该直线的末端应该有一条短的倾斜终点线平滑地连接到前一个直线部分。

期望的效果应该是这样的: final underline look

我该怎么做?

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>

2 个答案:

答案 0 :(得分:2)

您可以使用transform: rotate()

使用绝对定位的伪元素

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用:before:after伪元素。

&#13;
&#13;
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;
&#13;
&#13;

对两条线使用伪元素,您可以创建动画更改宽度。

&#13;
&#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;
&#13;
&#13;