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

如何用CSS绘制半圆?寻求单div实现的最优方案

单个DIV实现半圆的几种CSS方案

不用遮挡法,仅靠单个<div class="semi-circle"></div>就能实现半圆,推荐以下几种高效方案:

方案1:border-radius 实现(最常用、性能最优)

通过控制宽高比例和圆角半径,直接生成半圆,支持四个方向:

/* 上半圆 */
.semi-circle {
  width: 200px;
  height: 100px;
  background: #000;
  /* 圆角值等于高度,左右上圆角设置为高度,下圆角为0 */
  border-radius: 100px 100px 0 0;
}

/* 下半圆 */
.semi-circle.bottom {
  border-radius: 0 0 100px 100px;
}

/* 左半圆 */
.semi-circle.left {
  width: 100px;
  height: 200px;
  border-radius: 100px 0 0 100px;
}

/* 右半圆 */
.semi-circle.right {
  width: 100px;
  height: 200px;
  border-radius: 0 100px 100px 0;
}

方案2:clip-path 实现(灵活度高)

利用CSS裁剪路径直接对正方形div进行裁剪,精准控制半圆位置:

/* 上半圆 */
.semi-circle {
  width: 200px;
  height: 200px;
  background: #000;
  /* 裁剪圆心在顶部中点,半径50% */
  clip-path: circle(50% at 50% 0);
}

/* 下半圆 */
.semi-circle.bottom {
  clip-path: circle(50% at 50% 100%);
}

/* 左半圆 */
.semi-circle.left {
  clip-path: circle(50% at 0 50%);
}

/* 右半圆 */
.semi-circle.right {
  clip-path: circle(50% at 100% 50%);
}

方案3:radial-gradient 实现(适合渐变背景)

如果需要带渐变效果的半圆,用径向渐变直接绘制:

.semi-circle {
  width: 200px;
  height: 100px;
  /* 圆心在底部中点,黑色区域占50%,剩余透明 */
  background: radial-gradient(circle at 50% 100%, #000 50%, transparent 50%);
}

以上方案均无需额外遮挡元素,仅用单个div即可完成,代码简洁且性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:10:31