【问题标题】:CSS Transitions: Border Slides Instead of FadingCSS 过渡:边框幻灯片而不是褪色
【发布时间】:2013-05-30 23:45:34
【问题描述】:

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

【问题讨论】:

    标签: html css transition


    【解决方案1】:

    如果要为颜色设置动画,请为颜色设置动画,而不是整个边框。您现在还设置了从 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 过渡模块。

    2014 年 12 月更新:我注意到这个答案仍然经常被查看和投票,请注意 transition 不再是 any current or recently superseded browsers 的前缀。

    【讨论】:

    • 我添加了一条关于反映当前浏览器支持的前缀的注释。
    【解决方案2】:

    在这种情况下 - 您还需要有一个边框。使其在第一种状态下透明。这样它就不会“生长”到位......颜色会随着它的变化而褪色。

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

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

    【讨论】:

    • 至于是否仍需要 -moz-transition,我会查看 css3please.com 并自己做出决定。我认为可能有人在使用 firefox 16?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 2014-04-28
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多