CSS过渡:边界幻灯片而不是褪色

时间:2013-05-30 23:45:34

标签: html css html5 css3 transition

我设置了一个链接,这样当你将它悬停时,顶部会出现一个边框;当你悬停在边界上时,它会随着过渡而消失。当您将鼠标悬停在其上并关闭时,边框会滑入而不会淡入。我希望边框淡入而不是滑动。我怎样才能做到这一点?这是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;
}

2 个答案:

答案 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;
}

Sample on JSfiddle

作为旁注:-moz-transition现在已经过时了,因为FF17左右Mozilla支持没有前缀的CSS Transitions模块。

2014年12月更新:由于我发现这个答案仍然被频繁查看​​和提升,请注意transition不再以any current or recently superseded browsers为前缀。

答案 1 :(得分:2)

在这种情况下 - 您也需要开始使用边框。在第一个状态下使其透明。这样它就不会“生长”到位......颜色会随着变化而逐渐消失。

http://jsfiddle.net/kLnQL/11/

div {
  border: 3px solid transparent;
}

div:hover {
  border: 3px solid #f06;
}