当前位置:首页 > JavaScript

js实现图片上下浮动

2026-01-31 05:29:03JavaScript

使用 CSS 动画实现图片上下浮动

通过 CSS 的 @keyframesanimation 属性可以实现图片上下浮动的效果。这种方法性能较好,适合简单的动画需求。

.floating-image {
  animation: float 3s ease-in-out infinite;
}

@keyframes float {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-20px);
  }
}
<img src="your-image.jpg" class="floating-image">

使用 JavaScript 实现更复杂的浮动效果

如果需要更复杂的控制,可以使用 JavaScript 动态改变图片的位置。以下是一个使用 requestAnimationFrame 的实现方式:

const image = document.querySelector('.floating-image');
let position = 0;
let direction = 1;
const speed = 0.05;
const range = 20;

function floatImage() {
  position += speed * direction;

  if (position > range || position < -range) {
    direction *= -1;
  }

  image.style.transform = `translateY(${position}px)`;
  requestAnimationFrame(floatImage);
}

floatImage();

添加缓动效果增强动画自然感

为了使浮动更加自然,可以添加正弦函数的缓动效果:

const image = document.querySelector('.floating-image');
let time = 0;
const speed = 0.01;
const range = 20;

function floatImage() {
  time += speed;
  const position = Math.sin(time) * range;

  image.style.transform = `translateY(${position}px)`;
  requestAnimationFrame(floatImage);
}

floatImage();

响应式浮动效果

可以根据窗口大小调整浮动幅度:

const image = document.querySelector('.floating-image');
let time = 0;
const speed = 0.01;

function getRange() {
  return window.innerHeight * 0.05; // 浮动范围为视口高度的5%
}

function floatImage() {
  time += speed;
  const position = Math.sin(time) * getRange();

  image.style.transform = `translateY(${position}px)`;
  requestAnimationFrame(floatImage);
}

window.addEventListener('resize', () => {
  // 窗口大小改变时重新计算浮动范围
});

floatImage();

多图片不同步浮动效果

如果需要多个图片以不同速度浮动:

const images = document.querySelectorAll('.floating-image');

images.forEach((img, index) => {
  let time = index * 0.5; // 每个图片不同的起始时间
  const speed = 0.01 + index * 0.002; // 每个图片不同的速度
  const range = 15 + index * 5; // 每个图片不同的浮动范围

  function floatImage() {
    time += speed;
    const position = Math.sin(time) * range;

    img.style.transform = `translateY(${position}px)`;
    requestAnimationFrame(floatImage);
  }

  floatImage();
});

以上方法可以根据具体需求选择使用,CSS 动画适合简单场景,JavaScript 实现则提供更多控制和灵活性。

js实现图片上下浮动

标签: 上下图片
分享给朋友:

相关文章

css网页制作漂浮图片

css网页制作漂浮图片

使用CSS实现漂浮图片效果 通过CSS的animation属性和@keyframes规则可以轻松实现图片漂浮效果。以下是几种常见实现方式: 基础漂浮动画 通过关键帧定义图片的垂直移动,模拟漂浮感:…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document…

vue实现图片

vue实现图片

Vue 实现图片展示的方法 在 Vue 中实现图片展示可以通过多种方式完成,以下是一些常见的方法: 使用 img 标签直接引入 通过 img 标签的 src 属性直接引入本地或远程图片: <…

vue实现放大图片

vue实现放大图片

实现图片放大功能的方法 在Vue中实现图片放大功能,可以通过多种方式实现。以下是几种常见的方法: 使用CSS transform属性 通过CSS的transform: scale()属性实现图…

vue图片实现多选

vue图片实现多选

Vue 图片多选实现方法 在 Vue 中实现图片多选功能可以通过以下几种方式完成,具体取决于项目需求和复杂度。 使用 v-model 和数组存储选中状态 通过 v-model 绑定一个数组来记录选…

vue实现图片编辑

vue实现图片编辑

Vue实现图片编辑的方法 使用第三方库vue-cropper 安装vue-cropper库: npm install vue-cropperjs 在Vue组件中使用: <template&g…