当前位置:首页 > 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 实现平滑动画效果:

#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';
});

响应式宽度调整

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

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 实现变宽

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

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promis…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

jquery.js

jquery.js

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

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: fu…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise…