You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SVG创建该半圆图形?寻求无需旋转的path元素实现方案

目标形状

我尝试了以下代码,但它过于复杂,且在网页中显示时存在兼容性问题。

如何用SVG创建上述形状?最好仅使用path元素,且无需进行旋转操作。

我之前的代码:

<svg
     width="28.149193mm"
     height="47.310486mm"
     viewBox="0 0 28.149193 47.310486"
     version="1.1"
     id="svg5"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:svg="http://www.w3.org/2000/svg">
    <defs
       id="defs2" />
    <g
       id="layer1"
       transform="translate(-45.804437,-101.49194)">
      <path
         style="fill:#000000;stroke:#ff0000;stroke-width:3;stroke-dasharray:none;stroke-opacity:1"
         id="path346"
         d="m -147.30242,72.453629 a 22.155243,25.149193 0 0 1 22.15524,-25.149193 22.155243,25.149193 0 0 1 22.15524,25.149193 h -22.15524 z"
         transform="rotate(-90)" />
    </g>
</svg>

简化后的解决方案:

<svg
  width="28.149193mm"
  height="47.310486mm"
  viewBox="0 0 28.149193 47.310486"
  version="1.1"
  xmlns="http://www.w3.org/2000/svg">
  <path
    style="fill:#000000;stroke:#ff0000;stroke-width:3;stroke-opacity:1"
    d="M 28.149193, 0
       L 5.99395, 0
       A 22.155243, 23.655243 0 0 0 5.99395, 47.310486
       L 28.149193, 47.310486
       Z" />
</svg>

说明:

  • 移除了冗余的<defs>和<g>元素,精简了代码结构
  • 直接在SVG的viewBox坐标系下绘制路径,完全不需要旋转、平移等变换:
    1. M 28.149193, 0:定位到形状的右上角
    2. L 5.99395, 0:绘制水平线到左侧椭圆弧的右端点(计算方式:28.149193 - 22.155243 = 5.99395)
    3. A 22.155243, 23.655243 0 0 0 5.99395, 47.310486:绘制左侧的半椭圆弧,其中rx是水平半径,ry是垂直半径(等于总高度的一半),参数确保绘制出符合要求的弧形边缘
    4. L 28.149193, 47.310486:绘制水平线回到右下角
    5. Z:闭合路径,自动连接回起点完成形状

这个版本代码更简洁,没有复杂变换带来的兼容性问题,完全满足「仅用path元素、无旋转操作」的要求。

内容的提问来源于stack exchange,提问作者ServerBloke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:07:05