html - 使用 CSS 过渡淡出菜单的不透明度

标签 html css animation coffeescript sass

我的问题是这样的:

我希望当用户将鼠标悬停在其父容器上时菜单淡入和淡出可见性。我也想只用CSS来做动画。这是目前的代码:

HTML

<div class="color-dropdown">
    <div class="title">
        <h4>Red</h4>
    </div>
    <div class="options">
        <ul class="colors">
            <li>Red</li>
            <li>Blue</li>
        </ul>
    </div>
</div>

SCSS

.color-dropdown {
    height: 60px;
    overflow: hidden;

    .options {
        opacity: 0;

        /*
            The problem - This css transition never 
            gets seen on mouseout, most likely because 
            overflow is immediately hidden.
        */
        transition: opacity 0.2s linear;
    }

    &.expanded {
        overflow: visible;
        .options {
            opacity: 1;
        }
    }
}

CoffeeScript

colorDropdown = $('.color-dropdown')
title         = $('.title h4')
colors        = $('.colors li')

colorDropdown.hover ->
    # Fade in the options
    colorDropdown.addClass 'expanded'
, ->
    # Fade out - Broken!
    colorDropdown.removeClass 'expanded'

colors.click ->
    # Fade out - Broken!
    colorDropdown.removeClass 'expanded'

    # Change the current color
    title.text $(this).text()

    # CSS bounce animation (using animate.css here)
    title.addClass 'animated bounce'
    setTimeout ->
        title.removeClass 'animated bounce'
    , 1000

I've made a jsfiddle here so that you can easily see the problem .

提前致谢!

最佳答案

问题是您的 overflow:hidden <-> overflow:visible 更改...当您删除 .expanded 时,您将看不到如果父级上的溢出跳回隐藏,则子级上的过渡。

您可以通过使用子元素 (.options) 元素的可见性 转换来解决此问题。

类似这样的东西(将 transition-delay 设置为 0s)也许:

.color-dropdown {
    height: 60px;
    overflow: visible;
    .options {
        opacity: 0;
        visibility:hidden;
        transition: visibility 0s linear 0.2s, opacity 0.2s linear;
    }

    &.expanded .options {
        opacity: 1;
        visibility:visible;
        transition-delay: 0s;
    }
}

DEMO

有关此内容的更多信息,请参见:http://www.greywyvern.com/?post=337

关于html - 使用 CSS 过渡淡出菜单的不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20319209/

相关文章:

youtube - 我怎样才能使 YouTube 播放器缩放到页面宽度,同时保持纵横比?

html - 如何删除以前版本的 bootstrap cdn?

javascript - .style 不改变元素

php - IE 的 Wordpress 标题和子菜单样式受挫

javascript - HTML/CSS 网站格式

html - Javascript 搞乱了其他地方的格式

ios - animateWithDuration 基于完全不相关的代码行执行动画

CSS3 淡入延迟?

algorithm - 卡兹马兹动画

html - 调整屏幕大小时如何避免元素被打散