使用 CSS 变换在悬停时缩放 SVG 矩形

Posted

技术标签:

【中文标题】使用 CSS 变换在悬停时缩放 SVG 矩形【英文标题】:Scaling SVG rect on hover using CSS transform 【发布时间】:2012-10-22 03:19:01 【问题描述】:

似乎在悬停时对 html 或 SVG 元素应用相同的 CSS 变换不会产生相同的效果。正如您在下面的小提琴中看到的那样,prect 在缩放时的行为方式不同,这正是我的问题。

http://jsfiddle.net/rKD7T/2/

如何使rect 的行为与p 完全相同并正确缩放?

我尝试使用矩阵缩放rect - 考虑到原点 - 但它似乎也不起作用,或者我做错了。

我想在这里坚持使用 CSS 解决方案,但也可以选择 JS 解决方案。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

这似乎是对的。

<div>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
</div>

<svg>
    <g transform="translate(20, 40)">
    <rect x="-20" y="-40"  />
    <g transform="translate(55, 0)" >
    <rect x="-20" y="-40"  />
    </g>
    <g transform="translate(110, 0)" >
    <rect x="-20" y="-40"  />
    </g>
    <g transform="translate(165, 0)" >
    <rect x="-20" y="-40"  />
    </g>
    </g>
</svg>

It works 在 Firefox trunk 中,但似乎不适用于 Firefox 16。我还没有测试 Firefox Beta 或 Aurora 以查看它何时修复。

【讨论】:

谢谢,缩放确实看起来是一样的。但是,rect 在悬停后不会收回其初始比例。 他们确实在 Windows 7 上使用 Firefox 主干为我收回了原来的规模。 没错,我想它还没有完全兼容。谢谢! 能否在 svg 框上添加平滑过渡效果。 @dharendrabisht 您应该将其作为一个单独的问题提出。

以上是关于使用 CSS 变换在悬停时缩放 SVG 矩形的主要内容,如果未能解决你的问题,请参考以下文章

具有变换比例 CSS 属性的卡片块在悬停时失去其边界半径

理解SVG坐标系统和变换: transform属性

Firefox 变换比例图像错误。使用悬停变换过渡时,图像会闪烁自身的一个小版本

Firefox中带有缩放变换的CSS过渡效果后的图像移动/跳跃

以光标位置为变换原点缩放 SVG

使用变换时,悬停时的 CSS 动画停留在最后一个关键帧:旋转