【问题标题】:Rotating an SVG element using css :hover only leads to element flickering使用 css :hover 旋转 SVG 元素只会导致元素闪烁
【发布时间】:2021-06-24 10:41:12
【问题描述】:

完整代码请查看https://codepen.io/fcc-danielw/pen/oNBLjrj

相关部分如下图:

<svg width="235" height="381" viewBox="0 0 235 381" fill="none" xmlns="http://www.w3.org/2000/svg">
...
<g id="images">
          <g id="img1">
            <rect id="Rectangle 10" x="37" y="158" width="71" height="71" rx="3" fill="#C4C4C4" fill-opacity="0.25" />
            <mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="38" y="159" width="70" height="70">
              <rect id="Rectangle 9" x="38" y="159" width="70" height="70" rx="3" fill="#C4C4C4" />
            </mask>
            <g mask="url(#mask0)">
              <g id="mountains">
                <path id="Polygon 1" d="M58.5 187L89.2439 229.75H27.7561L58.5 187Z" fill="#C4C4C4" />
                <path id="Polygon 2" d="M94.5 187L125.244 229.75H63.7561L94.5 187Z" fill="#C4C4C4" />
              </g>
            </g>
          </g>
...
</g>
...
</svg>
#img1 {
      transform: rotate(0deg);
    }
    #img1:hover {
      transform: rotate(45deg);
      transform-origin: 50% 50%;
      transform-origin: 35px 35px;
    }

由于某种原因,当悬停在#img1 上时,它并没有按预期旋转,而是开始闪烁。这里有什么问题?我做错了什么?

【问题讨论】:

    标签: css svg rotation rotatetransform


    【解决方案1】:

    元素不闪烁,悬停效果只是重复了几次。 您可以通过使用过渡来停止此操作。

    你的#img元素CSS应该是这样的

    #img1 {
      transform: rotate(0deg);
      transition: 9s;
    }
    

    【讨论】:

    • 绝对摆脱闪烁(即使我不完全理解为什么)。我希望它会到位,但它的行为非常奇怪:s4.gifyu.com/images/ani_2f4fb2cfe164354a0.gif
    • 我认为你可以使用动画,它会做你想做的事情:)
    • 那是因为你改造了原点
    • 不转换原点会导致事情变得更糟?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多