当前位置:首页 > JavaScript

js 实现 伸缩

2026-03-14 01:59:20JavaScript

使用 CSS Transition 实现伸缩效果

通过 CSS 的 transition 属性和 JavaScript 操作元素的 class 或样式,可以实现平滑的伸缩动画效果。

const element = document.getElementById('target');
element.addEventListener('click', () => {
  element.classList.toggle('expanded');
});
#target {
  width: 100px;
  height: 100px;
  background-color: blue;
  transition: all 0.3s ease;
}

#target.expanded {
  width: 200px;
  height: 200px;
}

使用 CSS Animation 实现伸缩效果

通过定义关键帧动画,可以实现更复杂的伸缩效果。

const element = document.getElementById('target');
element.addEventListener('click', () => {
  element.style.animation = 'scale 1s forwards';
});
@keyframes scale {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}

#target {
  width: 100px;
  height: 100px;
  background-color: red;
}

使用 JavaScript 直接操作样式

通过 JavaScript 直接修改元素的样式属性,结合定时器实现伸缩效果。

const element = document.getElementById('target');
let isExpanded = false;

element.addEventListener('click', () => {
  const targetWidth = isExpanded ? 100 : 200;
  const targetHeight = isExpanded ? 100 : 200;

  let currentWidth = parseInt(element.style.width) || 100;
  let currentHeight = parseInt(element.style.height) || 100;

  const interval = setInterval(() => {
    if (isExpanded ? currentWidth <= 100 : currentWidth >= 200) {
      clearInterval(interval);
      isExpanded = !isExpanded;
      return;
    }

    currentWidth += isExpanded ? -5 : 5;
    currentHeight += isExpanded ? -5 : 5;

    element.style.width = `${currentWidth}px`;
    element.style.height = `${currentHeight}px`;
  }, 16);
});

使用 Web Animations API

现代浏览器支持 Web Animations API,提供了更强大的动画控制能力。

const element = document.getElementById('target');
element.addEventListener('click', () => {
  element.animate([
    { transform: 'scale(1)' },
    { transform: 'scale(1.5)' },
    { transform: 'scale(1)' }
  ], {
    duration: 1000,
    iterations: 1
  });
});

使用 GSAP 库实现高级伸缩动画

GSAP 是一个强大的 JavaScript 动画库,可以实现复杂的伸缩效果。

js 实现 伸缩

gsap.to("#target", {
  scale: 1.5,
  duration: 0.5,
  yoyo: true,
  repeat: 1
});

以上方法提供了从简单到复杂的多种实现方式,可以根据项目需求选择最适合的方案。CSS Transition 适合简单的状态切换,Web Animations API 和 GSAP 则适合更复杂的动画需求。

标签: 伸缩js
分享给朋友:

相关文章

vue实现伸缩

vue实现伸缩

Vue实现伸缩功能的方法 使用CSS过渡和Vue的v-if或v-show 通过CSS的transition属性结合Vue的条件渲染指令(v-if或v-show)可以实现元素的伸缩效果。定义一个CSS类…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…