在JavaScript (Jquery)中为变化的元素制作动画
Animate contents of a changing element in JavaScript (Jquery)
下面代码中的'h1'计数从0到无穷大。我如何动画每一个数字,使其淡入淡出。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<h1 id="the_numbers">0</h1>
<script>
var output = $('h1');
var isPaused = false;
var time = 0;
var t = window.setInterval(function() {
if(!isPaused) {
time++;
output.text(time);
}
}, 1000);
$('.pause').on('click', function(e) {
e.preventDefault();
isPaused = true;
});
$('.play').on('click', function(e) {
e.preventDefault();
isPaused = false;
});
</script>
使用jquery的fadeIn
和fadeOut
函数
var output = $('h1');
var isPaused = false;
var time = 0;
var t = window.setInterval(function() {
if (!isPaused) {
time++;
output.fadeOut(500, function() {
output.text(time);
});
output.fadeIn(500)
}
}, 1000);
$('.pause').on('click', function(e) {
e.preventDefault();
isPaused = true;
});
$('.play').on('click', function(e) {
e.preventDefault();
isPaused = false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<h1 id="the_numbers">0</h1>
Try this:
$(document).ready(function(){
var timer;
var which;
var number = 0;
move();
$("input[type=radio]").on("change",function(){
move();
$(".fa-play").css({color:"skyblue"});
$(".fa-pause").css({color:"red"});
})
$(".fa-pause").on("click",function(){
$(this).css({color:"skyblue"});
$(".fa-play").css({color:"red"});
clearInterval(timer);
})
$(".fa-play").on("click",function(){
move();
$(this).css({color:"skyblue"});
$(".fa-pause").css({color:"red"});
})
function move() {
if(timer)
clearInterval(timer);
which = $("input[type=radio]:checked").attr("class");
timer = setInterval(function(){
number = parseFloat($(".number").text()) + 1;
if (which == "t1") {
$(".number").hide(750,function(){
$(this).show(100).text(number);
})
}
else if (which == "t2") {
$(".number").fadeOut(750,function(){
$(this).fadeIn(100).text(number);
})
}
else {
$(".number").slideUp(750,function(){
$(this).slideDown(100).text(number);
})
}
},2000)
}
})
ul {
text-align: center;
border: 1px solid skyblue;
display: block;
width:500px;
height: 200px;
margin: 0 auto;
}
li {
display: inline-block;
}
h1 {
display: inline;
color: #fff;
text-shadow: 0px 0px 5px #000;
font-size: 50px;
}
div {
width: 100%;
}
.x {
width: 100%;
height: 100px;
margin-bottom: 20px;
}
.fa {
margin: 0 0 10px 10px;
cursor: pointer;
}
.fa-play {
color: skyblue;
}
.fa-pause {
color: red;
}
<ul>
<div>
<div class="x"><h1 class="number">0</h1></div>
<li class="fa fa-pause"></li>
<li class="fa fa-play"></li>
</div>
<li>
<input type="radio" name="style" class="t1" checked>Show/hide
</li>
<li>
<input type="radio" name="style" class="t2">Fadein/Fadeout
</li>
<li>
<input type="radio" name="style" class="t3">SlideUp/SlideDown
</li>
</ul>
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
你可以做一个css技巧来节省昂贵的fadeIn/fadeOut开销。
这里有一个小提琴:https://jsfiddle.net/e_neko/8nLox63t/
css:h1 {
transition: opacity 400ms cubic-bezier(.5,-20,.5,-20);
opacity: 1;
}
h1.fade {
opacity: 0.9;
transition: opacity 400ms cubic-bezier(.5,20,.5,20);
}
脚本:
var t = window.setInterval(function() {
if(!isPaused) {
time++;
output.toggleClass('fade');
setTimeout(function(){
output.text(time);
}, 200);
}
}, 1000);
相关文章:
- 使用svg和javascript将一个类的元素动画化为另一个类
- 如何在一个元素动画之后延迟
- 将列表元素动画制作到顶部
- 如何在山露网站上完成元素动画
- 制作AngularJS路线之间的英雄元素动画
- 设置元素动画jquery
- 我将如何修复由于上面的元素动画而移动的元素
- 修复了元素动画滚动主体在顶部
- 无法在 jquery 中获取元素动画以等待另一个元素动画
- Javascript - 从任何位置将元素动画到屏幕中心
- 在设置元素动画的过程中降低速度
- 跳转到元素动画
- jQuery鼠标后跟事件与元素动画相结合
- 使用Jquery将元素动画制作到窗口的右边缘
- Jquery/CSS带回调的顺序元素动画
- 如何在jquery中停止以前的dom元素动画
- 元素.动画,在动画完成后应用样式更改
- 在Bootstrap Modal中检测滚动使滚动上的每个元素动画化
- 当绑定值发生变化时,如何使元素动画化?
- 检测子元素动画