当前位置:首页 > 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
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现dh

js实现dh

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

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…

js实现刷新页面

js实现刷新页面

刷新页面的方法 在JavaScript中,可以通过多种方式实现页面刷新。以下是几种常见的方法: 使用 location.reload() 调用 location.reload() 方法可以重新加载当…

js实现截图

js实现截图

使用HTML2Canvas库实现截图 HTML2Canvas是一个流行的JavaScript库,可以将网页元素或整个页面转换为Canvas图像。安装方式: npm install html2canv…