为了账号安全,请及时绑定邮箱和手机立即绑定

如何水平翻转 SVG?

如何水平翻转 SVG?

慕婉清6462132 2023-10-10 18:06:24
我正在尝试水平翻转以下 SVG:<svg 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 36.1 25.8" enable-background="new 0 0 36.1 25.8" xml:space="preserve">     <g>         <line fill="none" stroke="#FFFFFF" stroke-width="3" stroke-miterlimit="10" x1="0" y1="12.9" x2="34" y2="12.9"></line>         <polyline fill="none" stroke="#FFFFFF" stroke-width="3" stroke-miterlimit="10" points="22.2,1.1 34,12.9 22.2,24.7   "></polyline>     </g></svg>我尝试过transform="scale(1, -1) translate(0, -100)"其他变体,它所做的只是删除向量。我这里也有一个 CodePen:https://codepen.io/bick/pen/eYNQaqX谢谢!
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

自行在负水平方向上缩放会将组移动到其自己的视图框之外:transform="scale(-1 1)"


因此,您需要同时将组平移回负水平方向:transform="scale(-1 1) translate(-36.1 0)"


body {

  background: #000;

}

<svg viewBox="0 0 36.1 25.8">

  <g transform="scale(-1 1) translate(-36.1,0)">

    <line fill="none" stroke="#FFFFFF" stroke-width="3" stroke-miterlimit="10" x1="0" y1="12.9" x2="34" y2="12.9"></line>

    <polyline fill="none" stroke="#FFFFFF" stroke-width="3" stroke-miterlimit="10" points="22.2,1.1 34,12.9 22.2,24.7"></polyline>

  </g>

</svg>

这也可以通过 CSS 使用transform-origin.


body {

  background: #000;

}


.arrow {

  transform: scale(-1, 1);

  transform-origin: center;

}

<svg viewBox="0 0 36.1 25.8">

  <g class="arrow">

    <line fill="none" stroke="#FFFFFF" stroke-width="3" stroke-miterlimit="10" x1="0" y1="12.9" x2="34" y2="12.9"></line>

    <polyline fill="none" stroke="#FFFFFF" stroke-width="3" stroke-miterlimit="10" points="22.2,1.1 34,12.9 22.2,24.7"></polyline>

  </g>

</svg>


查看完整回答
反对 回复 2023-10-10
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信