动画飞机穿过屏幕
animate airplane across screen
我正在尝试为横跨屏幕的平面设置动画 - 出左侧 - 返回右侧。我怎样才能在连续循环中实现这一点?所以它无限期地飞过屏幕,从左侧离开并从右侧飞回来。
我的代码:
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
#animate {
position: relative;
background-image: url(https://www.turbotobias.dk/wp-content/uploads/2019/03/Fly-med-banner-TurboTobias-Graphics2.svg);
width: 500px;
height: 500px;
}
<div id="animate"></div>
$(document).ready(function(e) {
width = "+=" + $(document).width();
$("#animate").animate({
left: width
}, 5000, function() {
// Animation complete.
});
});
您可以通过递归调用执行动画的方法来创建循环。下面的代码片段首先将平面从屏幕向右移动页面宽度。然后它动画到图像的负宽度。完成后,它会等待 2 秒,然后递归调用相同的方法。
function animatePlane ( $plane, pageWidth ) {
$plane.css('left', pageWidth);
$plane.animate({
left: $plane.width() * -1
}, 5000, function(){
setTimeout(function(){
animatePlane($plane, pageWidth);
}, 2000);
});
}
$(document).ready(function() {
animatePlane($('#animate'), $(document).width());
});
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
#animate {
position: absolute;
top: 0;
left: 0;
background-image: url(https://www.turbotobias.dk/wp-content/uploads/2019/03/Fly-med-banner-TurboTobias-Graphics2.svg);
width: 663px;
height: 168px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="animate"></div>
CSS唯一解
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
#animate {
position: absolute;
top: 0;
left: 100vw;
background-image: url(https://www.turbotobias.dk/wp-content/uploads/2019/03/Fly-med-banner-TurboTobias-Graphics2.svg);
width: 663px;
height: 168px;
animation: slideLeft 5s 2s infinite;
}
@keyframes slideLeft {
from { left: 100vw; }
to { transform: translateX(-200vw); }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="animate"></div>
css版本使用关键帧与动画配对属性建立动画。它在屏幕外启动图像,在动画之间等待 2 秒,持续时间为 5 秒。
实际上,您完全可以使用 CSS 动画来完成此操作。您需要使用飞机的两张图片来创建循环效果。
要制作动画,请对两张图像使用左侧从 0% 到 100% 的关键帧。然后将其中一张图片偏移屏幕宽度减去图片宽度以创建环绕效果。
如果你不在乎环绕效果,你可以从-500px到100%,它会循环,只需要使用1个平面。
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
.plane {
position: absolute;
background-image: url(https://www.turbotobias.dk/wp-content/uploads/2019/03/Fly-med-banner-TurboTobias-Graphics2.svg);
width: 500px;
height: 500px;
animation-duration: 5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
#plane1 {
animation-name: fly;
}
#plane2 {
animation-name: fly;
margin-left: -100%;
}
@keyframes fly {
from {
left: 0;
}
to {
left: 100%;
}
}
<div id="plane1" class="plane"></div>
<div id="plane2" class="plane"></div>
我正在尝试为横跨屏幕的平面设置动画 - 出左侧 - 返回右侧。我怎样才能在连续循环中实现这一点?所以它无限期地飞过屏幕,从左侧离开并从右侧飞回来。
我的代码:
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
#animate {
position: relative;
background-image: url(https://www.turbotobias.dk/wp-content/uploads/2019/03/Fly-med-banner-TurboTobias-Graphics2.svg);
width: 500px;
height: 500px;
}
<div id="animate"></div>
$(document).ready(function(e) {
width = "+=" + $(document).width();
$("#animate").animate({
left: width
}, 5000, function() {
// Animation complete.
});
});
您可以通过递归调用执行动画的方法来创建循环。下面的代码片段首先将平面从屏幕向右移动页面宽度。然后它动画到图像的负宽度。完成后,它会等待 2 秒,然后递归调用相同的方法。
function animatePlane ( $plane, pageWidth ) {
$plane.css('left', pageWidth);
$plane.animate({
left: $plane.width() * -1
}, 5000, function(){
setTimeout(function(){
animatePlane($plane, pageWidth);
}, 2000);
});
}
$(document).ready(function() {
animatePlane($('#animate'), $(document).width());
});
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
#animate {
position: absolute;
top: 0;
left: 0;
background-image: url(https://www.turbotobias.dk/wp-content/uploads/2019/03/Fly-med-banner-TurboTobias-Graphics2.svg);
width: 663px;
height: 168px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="animate"></div>
CSS唯一解
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
#animate {
position: absolute;
top: 0;
left: 100vw;
background-image: url(https://www.turbotobias.dk/wp-content/uploads/2019/03/Fly-med-banner-TurboTobias-Graphics2.svg);
width: 663px;
height: 168px;
animation: slideLeft 5s 2s infinite;
}
@keyframes slideLeft {
from { left: 100vw; }
to { transform: translateX(-200vw); }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="animate"></div>
css版本使用关键帧与动画配对属性建立动画。它在屏幕外启动图像,在动画之间等待 2 秒,持续时间为 5 秒。
实际上,您完全可以使用 CSS 动画来完成此操作。您需要使用飞机的两张图片来创建循环效果。
要制作动画,请对两张图像使用左侧从 0% 到 100% 的关键帧。然后将其中一张图片偏移屏幕宽度减去图片宽度以创建环绕效果。
如果你不在乎环绕效果,你可以从-500px到100%,它会循环,只需要使用1个平面。
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
.plane {
position: absolute;
background-image: url(https://www.turbotobias.dk/wp-content/uploads/2019/03/Fly-med-banner-TurboTobias-Graphics2.svg);
width: 500px;
height: 500px;
animation-duration: 5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
#plane1 {
animation-name: fly;
}
#plane2 {
animation-name: fly;
margin-left: -100%;
}
@keyframes fly {
from {
left: 0;
}
to {
left: 100%;
}
}
<div id="plane1" class="plane"></div>
<div id="plane2" class="plane"></div>