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

如何使用div创建交叉弧形盒子?求可行解决方案

实现交叉弧形盒子的两种方案

你当前用border-radius只能做出普通圆角矩形,要达成图中的交叉弧形(左右两端带对角向内凹的弧形),可以用以下两种方法:

方法一:伪元素 + 径向渐变(兼容性好)

利用伪元素和径向渐变模拟两端的弧形缺口,适配绝大多数浏览器:

<div class="curved-box"></div>
.curved-box {
  width: 300px;
  height: 50px;
  background-color: #EFB046;
  position: relative;
  overflow: hidden; /* 隐藏伪元素超出部分 */
}

/* 左侧弧形缺口 */
.curved-box::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 40px;
  height: 100%;
  /* 径向渐变:左侧中心为原点,20px内透明,外部用背景色填充 */
  background: radial-gradient(circle at left center, transparent 20px, #ffffff 20px);
}

/* 右侧弧形缺口 */
.curved-box::after {
  content: "";
  position: absolute;
  right: 0;
  top: 0;
  width: 40px;
  height: 100%;
  background: radial-gradient(circle at right center, transparent 20px, #ffffff 20px);
}

注意:把#ffffff替换成盒子所在容器的背景色,缺口效果才会自然。

方法二:clip-path 路径裁剪(代码简洁)

通过自定义多边形路径直接裁剪出弧形效果,代码更精简,但旧版浏览器(如IE)不支持:

<div class="curved-box"></div>
.curved-box {
  width: 300px;
  height: 50px;
  background-color: #EFB046;
  /* 多边形路径,数值对应弧形大小,可按需调整 */
  clip-path: polygon(
    20px 0,
    calc(100% - 20px) 0,
    100% 20px,
    100% calc(100% - 20px),
    calc(100% - 20px) 100%,
    20px 100%,
    0 calc(100% - 20px),
    0 20px
  );
}

调整提示

两种方案里的20px是控制弧形大小的关键数值,你可以根据需求修改,直到匹配图中的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:25:28