在Javascript中使用CSS3制作FadeIn动画
由于jQuery.fadeIn在移动设备上不是很流畅,所以我尝试使用CSS,但它并没有像预期的那样工作。如何使用Javascript创建平滑的CSS动画 总的来说,这就是我正在尝试的:在Javascript中使用CSS3制作FadeIn动画,javascript,jquery,css,css-transitions,Javascript,Jquery,Css,Css Transitions,由于jQuery.fadeIn在移动设备上不是很流畅,所以我尝试使用CSS,但它并没有像预期的那样工作。如何使用Javascript创建平滑的CSS动画 总的来说,这就是我正在尝试的: $('div') .css('opacity', 0) // at first, set it transparent .css('display', 'block') // make it appear .css('transition', 'opacity 1000ms linear'
$('div')
.css('opacity', 0) // at first, set it transparent
.css('display', 'block') // make it appear
.css('transition', 'opacity 1000ms linear') // set a transition
.css('opacity', 1); // let it fade in
编辑1:
我不是在使用静态CSS类搜索解决方案。关键是:我需要在Javascript代码中动态地设置它——例如,它是jQuerys fadeIn()的替代品。您的逻辑不太正确。首先,您无法设置
显示的动画,因此为了实现所需的效果,必须始终在DOM中渲染元素(即,除显示外的任何内容:无
)。其次,transition
属性应该放在CSS样式本身中。最后,通过设置CSS类中的所有规则并打开/关闭该类,您可以使这一点变得更加简单。试试这个:
div {
position: absolute;
width: 100px;
height: 100px;
background-color: black;
opacity: 0;
transition: opacity 1000ms linear;
}
.foo {
opacity: 1;
}
你的逻辑不太正确。首先,您无法设置显示的动画,因此为了实现所需的效果,必须始终在DOM中渲染元素(即,除显示外的任何内容:无
)。其次,transition
属性应该放在CSS样式本身中。最后,通过设置CSS类中的所有规则并打开/关闭该类,您可以使这一点变得更加简单。试试这个:
div {
position: absolute;
width: 100px;
height: 100px;
background-color: black;
opacity: 0;
transition: opacity 1000ms linear;
}
.foo {
opacity: 1;
}
使用此代码
CSS
JavaScript
$('div').hover(function(){
$(this).css('opacity','0');
})
使用此代码
CSS
JavaScript
$('div').hover(function(){
$(this).css('opacity','0');
})
如果不正确使用CSS,您将在这方面走很长的路。您需要模拟通常在CSS中使用JavaScript所做的工作,因此您需要设置所有CSS属性、转换等,然后使用js应用它们
我个人认为这样做没有任何好处。使用实际的CSS将更干净、更高效、更易于维护,而且是一个简单的更好的解决方案,可以满足您的需要。如果不正确使用CSS,您将在这方面走很长的路。您需要模拟通常在CSS中使用JavaScript所做的工作,因此您需要设置所有CSS属性、转换等,然后使用js应用它们
我个人认为这样做没有任何好处。使用实际的CSS将更干净、更高效、更易于维护,并且是一个更好的解决方案,可以满足您的需求。我认为这就是您所需要的
$('div').css({"display":"block", "opacity":"0"}) //Make div visible and opacity as "0"
$('div').animate({opacity :1}, 1000); //Animate div to opacity "1"
看看这个我想这就是你要找的
$('div').css({"display":"block", "opacity":"0"}) //Make div visible and opacity as "0"
$('div').animate({opacity :1}, 1000); //Animate div to opacity "1"
看看这个在这里找到了原因:
为了引起注意,我需要给浏览器一些时间——或者更好:一个工作槽来激活转换,因为时间似乎不是问题
下面的代码使用setTimeout()将进程一分为二。。。而且它有效
var div = $('div');
// first process
div
.css('opacity', 0) // initial opacity
.css('display', 'block') // make it appear (but still transparent)
.css('transition', 'opacity 1s linear'); // set up a transition for opacity
// break - start the transition in a new "thread" by using setTimeout()
window.setTimeout(function(){
div.css('opacity', 1); // start fade in
}, 1); // on my desktop browser only 1ms is enough but this
// may depend on the device performance
// maybe we need a bigger timeout on mobile devices
在这里找到原因:
为了引起注意,我需要给浏览器一些时间——或者更好:一个工作槽来激活转换,因为时间似乎不是问题
下面的代码使用setTimeout()将进程一分为二。。。而且它有效
var div = $('div');
// first process
div
.css('opacity', 0) // initial opacity
.css('display', 'block') // make it appear (but still transparent)
.css('transition', 'opacity 1s linear'); // set up a transition for opacity
// break - start the transition in a new "thread" by using setTimeout()
window.setTimeout(function(){
div.css('opacity', 1); // start fade in
}, 1); // on my desktop browser only 1ms is enough but this
// may depend on the device performance
// maybe we need a bigger timeout on mobile devices
将opacity:1
分离到一个单独的类中,并添加/删除classI。我更喜欢在静态CSS类中没有可变值的Javascript解决方案。是否有?将opacity:1
分离到一个单独的类中,并添加/删除classI。我更喜欢在静态CSS类中没有可变值的Javascript解决方案。有吗?我更喜欢在静态CSS类中没有可变值的Javascript解决方案。有吗?是的,但是这样做不是很好的做法,如果只是为了保持良好的关注点分离的话。我更喜欢在静态CSS类中没有可变值的Javascript解决方案。有吗?是的,但是这样做不是很好的做法,如果只是为了保持良好的关注点分离的话。这正是我试图避免的,因为性能不好。这正是我试图避免的,因为性能不好。