首页 > web前端 > css教程 > 为什么'transform-origin”在 Firefox 中的 SVG 组上不起作用?

为什么'transform-origin”在 Firefox 中的 SVG 组上不起作用?

Barbara Streisand
发布: 2024-11-22 05:26:11
原创
429 人浏览过

Why Doesn't `transform-origin` Work on SVG Groups in Firefox?

Firefox 中 SVG 组上的 transform-origin 设置不起作用

无法在 Firefox 中让 transform-origin 生效 (v.18 ,未测试其他版本) 是一个常见问题。WebKit 浏览器按预期工作。您尝试将 origin 设置为组的中心,但到目前为止所有尝试都失败了。

以下为相关代码:

#test {
  -webkit-transform-origin: 50% 50%;
  transform-origin: center center;
  -webkit-animation: prop 2s infinite;
  animation: prop 2s infinite;
}

@-webkit-keyframes prop {
  0% {
    -webkit-transform: scale(1, 1);
  }
  20% {
    -webkit-transform: scale(1, .8);
  }
  40% {
    -webkit-transform: scale(1, .6);
  }
  50% {
    -webkit-transform: scale(1, .4);
  }
  60% {
    -webkit-transform: scale(1, .2);
  }
  70% {
    -webkit-transform: scale(1, .4);
  }
  80% {
    -webkit-transform: scale(1, .6);
  }
  90% {
    -webkit-transform: scale(1, .8);
  }
  100% {
    -webkit-transform: scale(1, 1);
  }
}

@keyframes prop {
  0% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
  20% {
    transform: matrix(1, 0, 0, .8, 0, 0);
  }
  40% {
    transform: matrix(1, 0, 0, .6, 0, 0);
  }
  50% {
    transform: matrix(1, 0, 0, .4, 0, 0);
  }
  60% {
    transform: matrix(1, 0, 0, .2, 0, 0);
  }
  70% {
    transform: matrix(1, 0, 0, .4, 0, 0);
  }
  80% {
    transform: matrix(1, 0, 0, .6, 0, 0);
  }
  90% {
    transform: matrix(1, 0, 0, .8, 0, 0);
  }
  100% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
}
登录后复制
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128px" height="128px" viewBox="0 0 16 16">
    <g>
登录后复制

解决方案

该问题是由于 SVG 形状的绘制方式。为了让 Firefox 正确应用 transform-origin,原始 SVG 形状的中心必须在坐标 0, 0。

  1. 绘制原始 SVG 形状,使其中心在坐标 0, 0:
<svg x="0px" y="0px" width="400px" height="400px" viewBox="0 0 400 400">
    <rect>
登录后复制
  1. 围绕原始形状添加一个组并将其平移到所需的位置:
<svg x="0px" y="0px" width="400px" height="400px" viewBox="0 0 400 400">
    <g transform="translate(150, 100)">
        <rect>
登录后复制

现在,您可以在该组上应用 CSS 过渡,这应该可以在 Firefox 中正常工作。

以上是为什么'transform-origin”在 Firefox 中的 SVG 组上不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板