javascript - 如何使用 CSS 或 JavaScript 对 SVG 路径进行动画处理或过渡?

标签 javascript html css svg svg-path

我在 Adob​​e Illustrator 中创建了一个 SVG 图像,其中包含以下代码:

<svg id="logo_top" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1440 1440" enable-background="new 0 0 1440 1440"
     xml:space="preserve" height="512px" width="512px">
  <g>
    <path id="path1" d="M1140.475,774.096c4.692,3.807,12.367,5.709,23.023,5.709c10.655,0,18.326-1.902,23.023-5.709
                                     c4.691-3.805,7.039-9.764,7.039-17.885c0-8.117-2.348-14.08-7.039-17.887c-4.697-3.805-12.368-5.707-23.023-5.707
                                     c-10.656,0-18.331,1.902-23.023,5.707c-4.697,3.807-7.04,9.77-7.04,17.887C1133.435,764.332,1135.777,770.291,1140.475,774.096z" />
    <path id="path2" d="M1140.475,716.163c4.693,3.806,12.367,5.708,23.023,5.708s18.326-1.902,23.023-5.708c4.691-3.806,7.039-9.764,7.039-17.886
                                     c0-8.117-2.348-14.08-7.039-17.886c-4.697-3.806-12.367-5.708-23.023-5.708s-18.33,1.902-23.023,5.708
                                     c-4.697,3.806-7.039,9.769-7.039,17.886C1133.436,706.399,1135.777,712.357,1140.475,716.163z" />
    <path id="path3" d="M1140.475,658.23c4.693,3.805,12.367,5.707,23.023,5.707s18.326-1.902,23.023-5.707c4.691-3.807,7.039-9.764,7.039-17.887
                                     c0-8.116-2.348-14.08-7.039-17.885c-4.697-3.807-12.367-5.709-23.023-5.709s-18.33,1.902-23.023,5.709
                                     c-4.697,3.805-7.039,9.769-7.039,17.885C1133.436,648.467,1135.777,654.424,1140.475,658.23z" />
  </g>
</svg>

我想要实现的是当我将鼠标悬停在 SVG 上时,让最上面的点向上移动。到目前为止,我已经尝试过以下方法:

  1. 变换:翻译(0, 10px);

  2. position:relative;底部:10px;

  3. margin-bottom: 10px;

  4. padding-bottom: 10px;

不幸的是,以上方法都不起作用,我现在很好奇为什么 svg 元素需要如此特殊的处理并且不能像其他“正常”HTML 元素一样工作。

我知道可以使用animatetransform对多边形进行动画处理。但它似乎对我来说在路径上也不起作用。

<animateTransform attributeName="transform"
                      attributeType="XML"
                      type="rotate"
                      from="0 60 70"
                      to="360 60 70"
                      dur="10s"
                      repeatCount="indefinite"/>

为了向上移动最上面的点,我必须更改什么属性?

最佳答案

为了操作路径点,需要使用 JavaScript。以下代码达到了预期的结果:

$("#path1").css("transform", "translate(0, -100px)");

关于javascript - 如何使用 CSS 或 JavaScript 对 SVG 路径进行动画处理或过渡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836250/

相关文章:

文本上的 Javascript 计时器

javascript - 使用 Javascript 从字母数字字符串中提取字母字符

javascript - 尝试使用 javascript/jquery 将我的元素放入容器/包装器中

javascript - 使用 PHP : Fatal error: Uncaught Error: Call to undefined function mysql_connect() 创建登录页面

html - 背景图像渐变上的CSS过渡

javascript - window.location 重定向有效,但原始 URL 未显示在浏览器历史记录中

javascript - 如何使 html 元素响应其父视口(viewport)而不是浏览器视口(viewport)?

javascript - 保持按钮堆叠在右侧且位置绝对的问题

css - 一种阻止富媒体(Flash)广告更改页面上的 CSS 元素的方法?

jquery - 无法使用下拉菜单更改 View 。我能够获得下拉菜单,但单击不会更改 View