如何将动画添加到元素's的css属性
How to add animation to the element's css attributes when the class changes with jQuery?
问题:
我有一个HTML元素,它有一个设置css属性display: none;
的类hidden
。当我用JS移除类时,元素立即可见(原始display
值被恢复)。我希望能够设置"显示"动画的持续时间,就像我可以使用$('.hidden').show(1000)
或$('.hidden').fadeIn(1500)
一样。我尝试与.animate()
连锁,但没有成功。
限制
- 它不能扰乱元素的内联CSS(尤其是不能设置
display: block
) - 它的行为应该类似于jQueryUI removeClass:http://jqueryui.com/removeClass/
问题:
当我删除(更改)HTML元素的类
代码:
CSS:
.hidden{
display: none;
}
HTML
<div class="hidden"> Lorem ipsum </div>
JS
$('.hidden').removeClass('hidden')
http://jsfiddle.net/DU2Wg/1/
使用您的HTML&CSS,你可以使用这个JS:
$('.hidden').css({ // Change your CSS directly to
display: 'inline', // the display you want
opacity: 0 // 100% transparent
})
.stop() // Recommended because it pauses any previous animation so there is no conflict between two animations simultaneously
.animate({ // Will change your CSS over time
opacity: 1 // 100% opaque
}, 2000, // in 2 secs
function(){
var $this = $(this)
$this.removeClass('hidden'); // Will remove your class (only if you want to use it once)
alert($this.css('display')); // Will alert "inline", your current display on that element
});
您删除了需要淡化的类,这是错误的
你可以试试这个示例
HTML
<h1 class="hide" style="display:none; ">Display</h1>
JS-
$(function () {
$(".hide").fadeIn('slow');
});
$('.hidden').show(1000,function(){$(this).removeClass('hidden').css('display','');});
这将使用动画显示它,一旦动画完成,我们将删除类。。。
如果您需要在现代浏览器中运行此动画,请使用css转换!
.hidden{
display: none;
}
.hidden.fadeIn{
display: block;
opacity:0;
visibility:hidden;
-webkit-transition: all 1s;
-moz-transition: all 1s;
-ms-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
}
.hidden.fadeIn.do{
opacity:1;
visibility:visible;
}
在JS中,你可以这样设置类:
$('.hidden').addClass('fadeIn');
setTimeout(function(){$('.hidden.fadeIn').addClass('do');},10);
不幸的是,除非您必须使用setTimeout
。如果不这样做,两个类的更改将同时被解释,并且不会发生动画。
编辑
如果修改hidden
类的规则:,您可能可以使用更少的代码
.hidden{
display: none;
opacity:0;
visibility:hidden;
-webkit-transition: all 1s;
-moz-transition: all 1s;
-ms-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
}
.hidden.fadeIn{
display: block;
opacity:1;
visibility:visible;
}
现在你只有一个类可以用JS添加:
function fade(){
$('.hidden').addClass('fadeIn');
}
setTimeout(fade,10);
为什么不能使用$('.hidden').fadeIn(1500)
?
JSFiddle
我想你在谈论jquery的延迟函数:
$('.hidden').removeClass('hidden').delay(1000).addClass('hidden')
相关文章:
- 获取HTML属性中CSS声明的值
- 谷歌图表-如何更改整个表的css属性
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- Css order属性不't在Jquery设置时更新
- CSS中的游标属性似乎不适用于USB On The Go
- 重写CSS:使用jquery显示none属性
- CSS样式属性留空
- 如何在CSS或Javascript中定位选定的属性(在HTML选项中)
- 从CSS到Javascript的属性值
- Android在HTML容器中滚动,该容器具有CSS溢出属性
- 将css属性替换为变量
- 使用Jquery/Javascript替换CSS属性
- 带有CSS的数据属性就没那么有用了
- 如何使用JavaScript查找未定义的CSS属性的值
- 在jquerymobile中设置按钮css属性的动画
- 使用javascript和css选择器获取value属性的内容
- JavaScript无法提取引号css属性
- 使用AngularJS动态更改css属性
- 使用javascript获取具有特定CSS属性的所有元素
- 将css属性添加到对象的集合中