我设置了一个链接,这样当你将它悬停时,顶部会出现一个边框;当你悬停在边界上时,它会随着过渡而消失。当您将鼠标悬停在其上并关闭时,边框会滑入而不会淡入。我希望边框淡入而不是滑动。我怎样才能做到这一点?这是JsFiddle
HTML
<div>Text</div>
CSS
div {
line-height: 50px;
width: 100px;
text-align: center;
cursor: pointer;
transition: border .2s ease-in-out;
-webkit-transition: border .2s ease-in-out;
-moz-transition: border .2s ease-in-out;
}
div:hover {
border-top: 3px solid #000;
}
html, body {
margin: 0;
padding: 0;
}
答案 0 :(得分:20)
如果要为颜色设置动画,请为颜色设置动画,而不是整个边框。你现在也可以将它从0像素设置为3像素,所以当然它会滑入。你应该给它一个默认的透明边框。
div {
line-height: 50px;
width: 100px;
text-align: center;
cursor: pointer;
transition: border-color .5s ease-in-out;
border-top: 3px solid transparent;
}
div:hover {
border-top-color: #000;
}
作为旁注:-moz-transition
现在已经过时了,因为FF17左右Mozilla支持没有前缀的CSS Transitions模块。
2014年12月更新:由于我发现这个答案仍然被频繁查看和提升,请注意transition
不再以any current or recently superseded browsers为前缀。
答案 1 :(得分:2)
在这种情况下 - 您也需要开始使用边框。在第一个状态下使其透明。这样它就不会“生长”到位......颜色会随着变化而逐渐消失。
div {
border: 3px solid transparent;
}
div:hover {
border: 3px solid #f06;
}