淡入并显示,淡出并仅使用css消失?

时间:2013-08-02 08:30:55

标签: css3 css-transitions css-animations

我正在尝试创建一个单击按钮时淡入/淡出的菜单,我正在尝试使用CSS过渡进行动画。

以下是我想要实现的目标

#menu{
    background: red;
    display: block;    
    overflow: hidden;   
    position: absolute;
    width: 182px;
    top: 1em;
    padding: 0;
    height: auto;
    opacity: 0;
    /* The menu must not be clickable/cover the UI once hidden */
    left: -100000px;

    /*
    The left property must change after the 
    opacity is zero and before it starts to
    increase
    */
    transition: opacity 0.25s 0.1s, left 0s; /* ??? */
    -webkit-transition: opacity 0.25s 0.1, left 0s; /* Safari */
}

#menu.open{
    opacity: 1;
    left: auto;
}

http://jsfiddle.net/AzKAk/5/

当然只有中途工作,当菜单出现时它会淡入,但是当它必须淡出时,这必须在元素有适当的位置后发生。

是否可以仅使用CSS3进行此类操作?

1 个答案:

答案 0 :(得分:1)

我假设您的意图是让菜单在没有任何移动的情况下就地显示/消失。

为此,您实际上必须使用两个属性的组合:opacitydisplay

不透明度的变化会使菜单消失,但一旦达到opacity:0,它将不可见但仍然存在并接收用户互动。

因此,您必须确保在完成不透明度转换后,您必须将display更改为none

您可以使用transitionend事件(Chome / Safari上的webkitTransitionEnd)执行此操作。

您的代码如下所示:http://jsfiddle.net/daniran/GfbVV/

我在示例中使用了jQuery,但您可以使用ontransitionend属性直接注册侦听器;