在SVG路径上同时使用缩放变换和平移 [英] Use transform with scale and translate together on a svg path

查看:0
本文介绍了在SVG路径上同时使用缩放变换和平移的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经阅读了关于这个主题的几个帖子,也许会有一些答案。无论我是不理解它,还是它不适合我的问题,这是我的问题:

我有一个路径(在SVG中),我想将鼠标悬停在它上面并从它的中心展开。然后我考虑了几个选项(比如使用关键帧的动画或使用DOM)。我尝试使用Transform来解决它,但是如果我使用Scale(),它会使路径的坐标远离其中心,并且如果我尝试使用Translate()​重新定位路径,它无法识别这两种操作。

我尝试使用&Transform-Origin:Center;(就像某人在另一个主题上的答案一样),但它改变了一切。我可以同时应用这两种方法的唯一方法是将​与缩放和平移一起使用路径标记中的Transform。但在这种情况下,我无法应用悬停。

抱歉,如果已经有答案了。为了避免复制所有代码,我复制了一个SVG标记内的简单框的示例。在我写下的这个示例中,我甚至不能使用缩放操作。

<head> 
    <style>
        ​#sbox {​
            transition-duration: 2s
        }
        ​
        ​#sbox:hover {​
            transform: scale(2) translate(-50,-50);
        }

    </style>

</head>
  
<body> 
    <svg id="svg1" x="0px" y="0px" viewBox="0 0 1200 1200">
        <path id='sbox' d="M 264.9 271.3 L 343.3 271.3 L 343.3 396.1 L 264.9 396.1 L 264.9 271.3 Z" fill='blue'/>
    </svg>
</body>

推荐答案

您可以使用Transform-Origin和Transform-Box将矩形居中。

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
#sbox {
    transition-duration: 2s;
    transform-origin: center;
    transform-box:fill-box;
}

#sbox:hover {
    transform: scale(2);
}
    <svg id="svg1" x="0px" y="0px" viewBox="0 0 1200 1200">
        <path id='sbox' d="M 264.9 271.3 L 343.3 271.3 L 343.3 396.1 L 264.9 396.1 L 264.9 271.3 Z" fill='blue'/>
    </svg>

这篇关于在SVG路径上同时使用缩放变换和平移的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆