当前位置:首页 > JavaScript

js 实现变宽

2026-01-31 16:04:29JavaScript

使用 CSS 和 JavaScript 动态调整元素宽度

通过 JavaScript 动态修改元素的 style.width 属性可以实时改变宽度。以下是一个基础实现示例:

const element = document.getElementById('targetElement');
element.style.width = '200px'; // 设置固定宽度
element.style.width = '50%';   // 设置百分比宽度

动画效果实现平滑变宽

结合 CSS 过渡和 JavaScript 实现平滑动画效果:

js 实现变宽

#targetElement {
  transition: width 0.3s ease-in-out;
}
document.querySelector('#resizeButton').addEventListener('click', () => {
  const element = document.getElementById('targetElement');
  element.style.width = element.offsetWidth === 200 ? '400px' : '200px';
});

响应式宽度调整

根据窗口大小动态调整宽度:

js 实现变宽

function responsiveResize() {
  const element = document.getElementById('targetElement');
  element.style.width = window.innerWidth > 768 ? '80%' : '100%';
}

window.addEventListener('resize', responsiveResize);
responsiveResize(); // 初始化执行

拖拽调整宽度

实现拖拽手柄改变宽度的交互:

const resizer = document.getElementById('dragHandle');
let startX, startWidth;

resizer.addEventListener('mousedown', (e) => {
  startX = e.clientX;
  startWidth = parseInt(document.defaultView.getComputedStyle(resizer.parentElement).width, 10);
  document.documentElement.addEventListener('mousemove', doDrag);
  document.documentElement.addEventListener('mouseup', stopDrag);
});

function doDrag(e) {
  resizer.parentElement.style.width = (startWidth + e.clientX - startX) + 'px';
}

function stopDrag() {
  document.documentElement.removeEventListener('mousemove', doDrag);
  document.documentElement.removeEventListener('mouseup', stopDrag);
}

使用 requestAnimationFrame 优化性能

对于高频宽度变化场景,使用动画帧优化:

function animateWidth(element, targetWidth) {
  const startWidth = element.offsetWidth;
  const duration = 500;
  const startTime = performance.now();

  function updateWidth(timestamp) {
    const elapsed = timestamp - startTime;
    const progress = Math.min(elapsed / duration, 1);
    const currentWidth = startWidth + (targetWidth - startWidth) * progress;
    element.style.width = `${currentWidth}px`;

    if (progress < 1) {
      requestAnimationFrame(updateWidth);
    }
  }

  requestAnimationFrame(updateWidth);
}

标签: 变宽js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…