HTML怎么让图片上下移动
介绍
在网页设计中,图片是无法缺少的一个元素,但是如果网页设计中图片都处于静态状态,会显得比较单调和乏味。因此,将图片滚动起来是一种很好的做法。本文将介绍如何在HTML中让图片上下移动。
使用CSS的animation属性
CSS的animation属性可以用来实现许多动画效果,包括让图片上下移动。下面是一个简单的例子:
<!DOCTYPE html>
<html>
<head>
<style>
.img {
position: relative; /*相对定位*/
animation: up-down 2s ease-in-out infinite alternate; /*调用动画效果*/
}
@keyframes up-down { /*定义动画效果*/
0% {
top: 10px;
}
100% {
top: 50px;
}
}
</style>
</head>
<body>
<div class="img">
<img src="image.jpg">
</div>
</body>
</html>
上述代码中,div标签具有相对定位,img标签则不需要设置定位属性。CSS的animation属性指定了动画的名称(up-down),执行时间(2s),动画的运动方式(ease-in-out),动画的次数(infinite),以及交替执行(alternate)。
@keyframes规则用来定义动画的效果。0%表示动画开始时的状态,100%表示动画结束时的状态。因此,上面的代码将使图像从10px的位置上升到50px的位置。由于设置了infinite,因此动画将不断进行。
使用jQuery实现动画
除了使用CSS的animation属性实现动画外,还可以使用jQuery库来实现图像的动态效果。下面是一个jQuery代码的例子:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
animateDiv();
});
function makeNewPosition(){
// 为水平和垂直混动随机设定位置
var h = $(window).height() - 50;
var w = $(window).width() - 50;
var nh = Math.floor(Math.random() * h);
var nw = Math.floor(Math.random() * w);
return [nh,nw];
}
function animateDiv(){
var newq = makeNewPosition();
var img = $('.img');
var oldq = img.offset();
var speed = calcSpeed([oldq.top, oldq.left], newq);
img.animate({ top: newq[0], left: newq[1] }, speed, function(){
animateDiv();
});
};
function calcSpeed(prev, next) {
var x = Math.abs(prev[1] - next[1]);
var y = Math.abs(prev[0] - next[0]);
var greatest = x > y ? x : y;
var speedModifier = 0.03;
var speed = Math.ceil(greatest/speedModifier);
return speed;
}
</script>
</head>
<body>
<div class="img">
<img src="image.jpg">
</div>
</body>
</html>
上述代码中,jQuery的animate()函数设置了要运行的动画,动态地改变了图像的位置。makeNewPosition()函数用于为图像随机设定位置。calcSpeed()函数用于计算动画速度。
需要注意的是,在这个例子中,动画仅仅是垂直移动,如果想让图像水平移动,可以改变$w和$x$的值。
总结
本文介绍了如何在html中让图片上下移动。具体实现可以通过在CSS上使用animation属性或是使用jQuery库的animate()函数来实现。若需要实现更加复杂的移动效果,可以根据需求自行调整代码。