使用Jquery动画进行简单的css更改
Using Jquery animate for simple css changes
我想用.animate而不是.css来做这件事。当我把它改为animate时,它会出现故障,无法正常工作
$(window).scroll(function() {
var scrollTop = $(window).scrollTop();
if (scrollTop != 0) {
$('#test_box').css({
"background-color": "red",
"height": '400px'
});
} else {
$('#test_box').css({
"background-color": "blue",
"height": "200px"
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="test_box" style="height: 200px; width: 200px; background-color: red;"></div>
对于增加div高度和减少div高度的动画效果,请使用
transition: height 2s;
这样可以使过渡平稳。
这是一把可能有用的小提琴。
Fiddle
--帮助:)
以下带有background-color
动画的代码只有在还包括jQuery-UI
库的情况下才能工作(仅用于颜色效果)
$(window).scroll(function() {
var scrollTop = $(window).scrollTop();
if (scrollTop != 0) {
$('#test_box').animate({
"background-color": "red",
"height": '400px'
},500);
} else {
$('#test_box').animate({
"background-color": "blue",
"height": "200px"
},500);
}
});
.animate()方法允许我们在任何数字CSS属性上创建动画效果。查看更多参考资料http://api.jquery.com/animate/
它不会改变背景颜色。
示例:这里只有height&width属性正在更改。。
代码已更新。。使用jqueryui,颜色也会改变。。。
$(window).scroll(function() {
var scrollTop = $(window).scrollTop();
if (scrollTop != 0) {
$('#test_box').animate({
"background-color": "red",
"height": '1500px',
"width": '200px'
});
} else {
$('#test_box').animate({
"background-color": "blue",
"height": "700px",
"width": '500px'
});
}
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<div id="test_box" style="height: 900px; width: 200px; background-color: red;"></div>
要使动画良好工作,必须增加div的高。因为如果页面可以滚动,CCD_ 4将起作用。
小提琴示例
您需要一个额外的库来支持jQuery的颜色动画。这个看起来很不错:
- http://www.bitstorm.org/jquery/color-animation/
为了使动画顺利运行,您可能需要使用.stop(true, false)
函数清除队列。
$(window).scroll(function() {
var cssObj = $(window).scrollTop() === 0 ? {
backgroundColor: 'blue',
height: 200
} : {
backgroundColor: 'red',
height: 400
};
$('#test_box').stop(true, false).animate(cssObj, {
duration: 1000,
easing: 'linear'
});
});
演示
我必须说,正如其他人提到的那样,使用CSS转换更容易。只需切换一个css类就可以给#test_box
一个状态,比如说"scrolled"。
$(window).scroll(function() {
$('#test_box').toggleClass('scrolled', $(window).scrollTop() !== 0);
});
相关文章:
- CSS更改类样式管理面板
- 使用CSS更改悬停时多个元素的属性
- 如何访问svg内部id并让CSS更改该id的填充颜色
- 有人知道如何在本地存储javascript函数所做的css更改吗
- javascript css更改问题
- 如何使按钮CSS更改只有IF表单字段有效
- 如何在jquery中使用fadeTo等动画标记以及css更改语句
- CSS更改后调用javascript函数
- 滚动界面CSS-更改黑色背景上的颜色
- 使用css更改所选菜单项的颜色
- 立即读取元素'CSS更改后的视觉属性
- jQuery:CSS更改后,何时查询新的外部高度
- 在循环中使用JS和CSS更改对象的旋转
- CSS 更改样式垂直响应菜单
- 如何使用 JavaScript 或 CSS 更改选择标签中的选项宽度
- Chrome 中的突变对象无法检测属性和 CSS 更改
- 使用 jquery.animate() 和 jquery.scroll() 反转由动画效果引起的 CSS 更改
- 阿尔肖日历特定日期 css 更改颜色
- 检测页面大小并在宽度低于 500px 时进行 css 更改
- 表单字段选择时的 CSS 更改