我正在尝试在描述中重新创建动画并查看here。 当链接未被点击时,下划线从右到左动画,下划线在它消失之前从左到右动画。
a {
color:#00f;
text-decoration:none;
display:inline-block;
}
a:after {
width: 0;
display:block;
background:#00f;
height:3px;
transition: all .5s ease-in-out;
content:"";
}
a:hover {
color:#00f;
}
a:hover:after {
width:100%;
}
<a href="#">Click first</a>
<a href="#">Click second</a>
答案 0 :(得分:17)
在伪元素上使用position
。将position: relative
添加到a
,将position: absolute
添加到:after
。
使用bottom
和right
定位伪元素。这意味着该行来自右侧。
在悬停/单击时,添加left
属性。这使得线条跨越整个宽度。宽度从左到右从0
增加到100%
。
当您“撤消”或再次点击时,left
会被删除,并且该行会再次从右侧开始,因此宽度会朝该方向减小。
$('a').on('click', function() {
$('a').not(this).removeClass('underline');
$(this).toggleClass('underline');
});
a {
color: #00f;
text-decoration: none;
display: inline-block;
position: relative;
}
a:after {
width: 0;
background: #00f;
height: 3px;
transition: all .5s ease-in-out;
content: "";
position: absolute;
bottom: -5px;
right: 0;
}
a.underline:after {
width: 100%;
left: 0;
}
a:hover:after {
width: 100%;
left: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Click first</a>
<a href="#">Click second</a>
答案 1 :(得分:6)
也许您只想要一个HTML / CSS解决方案:
a {
color: #00f;
text-decoration: none;
display: inline-block;
}
a span:after {
width: 0;
display: block;
background: #00f;
height: 3px;
transition: all .5s ease-in-out;
content: "";
float: right;
}
a span:focus {
color: #00f;
}
label:hover {
cursor: pointer;
}
label input {
display: none;
}
label input:checked + span:after, label input + span:hover:after {
width: 100%;
float: left;
}
label input:checked + span {
color: #00f;
}
&#13;
<a href="#">
<label>
<input type="radio" name="link" />
<span>
Click first
</span>
</label>
</a>
<a href="#">
<label>
<input type="radio" name="link" />
<span>
Click second
</span>
</label>
</a>
&#13;
答案 2 :(得分:4)
您可以使用以下内容。只需使用一个类来设置样式。
$('a').click(function(e){
$(this).siblings().removeClass('start');
$(this).toggleClass('start');
e.preventDefault();
})
a {
color:#00f;
text-decoration:none;
display:inline-block;
}
a:after {
width: 0;
display:block;
background:#00f;
height:3px;
transition: all .5s ease-in-out;
content:"";
float:right;
}
a:hover {
color:#00f;
}
a.start:after {
width: 100%;
}
a:hover:after {
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Click first</a>
<a href="#">Click second</a>