我正在尝试创建一个单击按钮时淡入/淡出的菜单,我正在尝试使用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;
}
当然只有中途工作,当菜单出现时它会淡入,但是当它必须淡出时,这必须在元素有适当的位置后发生。
是否可以仅使用CSS3进行此类操作?
答案 0 :(得分:1)
我假设您的意图是让菜单在没有任何移动的情况下就地显示/消失。
为此,您实际上必须使用两个属性的组合:opacity
和display
。
不透明度的变化会使菜单消失,但一旦达到opacity:0
,它将不可见但仍然存在并接收用户互动。
因此,您必须确保在完成不透明度转换后,您必须将display
更改为none
。
您可以使用transitionend
事件(Chome / Safari上的webkitTransitionEnd
)执行此操作。
您的代码如下所示:http://jsfiddle.net/daniran/GfbVV/
我在示例中使用了jQuery,但您可以使用ontransitionend
属性直接注册侦听器;