You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为已应用transform变换的元素额外添加scale缩放并支持后续移除?

实现方案

可以直接基于WebKitCSSMatrix提供的矩阵运算方法,在已有变换基础上叠加缩放,需要移除时还原预存的原始变换矩阵即可,具体实现如下:

1. 预存元素原始变换矩阵

先在事件绑定前把元素的初始变换矩阵存储到元素自身,方便后续快速还原:

// 你可以在页面初始化、或元素首次应用变换后执行该逻辑
$('.target-element').each(function() {
  const style = window.getComputedStyle(this);
  const originalMatrix = new WebKitCSSMatrix(style.transform);
  // 用jQuery的data方法存在元素实例上
  $(this).data('original-transform', originalMatrix);
});

2. 绑定鼠标事件实现缩放效果

$('.target-element')
  .on('mouseenter', function() {
    const $el = $(this);
    // 读取原始矩阵
    const origin = $el.data('original-transform');
    // 叠加缩放:三个参数分别对应X轴、Y轴、Z轴缩放比例,平面缩放Z轴传1即可
    const scaledMatrix = origin.scale(1.2, 1.2, 1);
    // 应用新变换
    this.style.transform = scaledMatrix.toString();
  })
  .on('mouseleave', function() {
    const $el = $(this);
    // 直接还原原始矩阵,即可完全移除新增的缩放效果
    this.style.transform = $el.data('original-transform').toString();
  });

额外说明

  • 如果元素的原始变换会动态更新,只要在更新原始变换后重新执行一次矩阵存储逻辑,覆盖旧值即可
  • 如需兼容非webkit内核浏览器,可以把WebKitCSSMatrix替换为标准的DOMMatrix,API用法完全一致

内容的提问来源于stack exchange,提问作者Toniq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:36:05