Css transitions 设置“显示:无”时的CSS转换
如何使用CSS转换显示为none的元素的属性? 我当前的解决方案是使用JavaScript将display设置为block,等待10毫秒重新绘制,然后应用更改我想要设置动画的属性的类 注意:我使用jQuery是为了代码简洁 CSS-以不透明度动画为例。不关心$.show()。Css transitions 设置“显示:无”时的CSS转换,css-transitions,Css Transitions,如何使用CSS转换显示为none的元素的属性? 我当前的解决方案是使用JavaScript将display设置为block,等待10毫秒重新绘制,然后应用更改我想要设置动画的属性的类 注意:我使用jQuery是为了代码简洁 CSS-以不透明度动画为例。不关心$.show()。 JavaScript 我觉得应该有一个更好的方法,一个CSS唯一的方法。有吗?我刚找到解决办法。您只需使用动画,并在应用“显示:块”后稍微启动它。像这样: @keyframes submenu_animation {
JavaScript
我觉得应该有一个更好的方法,一个CSS唯一的方法。有吗?我刚找到解决办法。您只需使用动画,并在应用“显示:块”后稍微启动它。像这样:
@keyframes submenu_animation {
from {
opacity: 0;
}
1% {
opacity: 0;
}
99% {
opacity: 1;
}
to {
opacity: 1;
}
}
li ul {
opacity: 0;
display: none;
animation-name: submenu_animation;
animation-duration: 300ms;
animation-direction: reverse;
li ul.open {
display: block;
}
li:hover ul {
animation-direction: normal;
opacity: 1;
}
Javascript也是一样的,只要您将鼠标悬停在所需的元素上,它就会应用类“open”。当您将鼠标悬停在外时,它将在稍后动画完成时删除“open”类。而不是显示:无,您能将其设置为高度:0,然后添加高度:在它转换到的对象上吗?jQuery伙计们,不要再看
css transition
标记了!哈哈。另外,不透明度
?这只是一个例子。德瑞克:是的,但这是一个有很多解决办法的办法。设置“显示无”将使图元不被绘制。另外,高度:0仍然意味着我必须删除边框、填充和边距,然后重新添加它们。我明白了。本页可能有用,也可能无用:
function show()
{
var $element=$('.element');
$element.css({display:'block'});
//Add class a few moments later than chaning display to block, otherwise animations CSS Transitions won't fire
setTimeout(function(){
$element.addClass('shown');
},10);
}
function hide()
{
var $element=$('.element');
$element.removeClass('shown');
//Remove element from display after transition ends
$element.on('webkitTransitionEnd otransitionend oTransitionEnd MSTransitionEnd transitionend',function()
{
$element.css({display:'none'});
});
}
@keyframes submenu_animation {
from {
opacity: 0;
}
1% {
opacity: 0;
}
99% {
opacity: 1;
}
to {
opacity: 1;
}
}
li ul {
opacity: 0;
display: none;
animation-name: submenu_animation;
animation-duration: 300ms;
animation-direction: reverse;
li ul.open {
display: block;
}
li:hover ul {
animation-direction: normal;
opacity: 1;
}