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

CSS如何实现单侧圆形、另一侧带斜角的胶囊形状?

斜分割双色胶囊样式实现方案

需求参考

目标实现效果:
目标形状效果
当前待优化的实现效果:
当前实现效果

原有方案的问题

你当前通过旋转两个半圆块拼接胶囊的思路存在两个天然缺陷:

  • 旋转属性会作用在元素所有内容上,内部文字必然跟着倾斜,就算给文字单独加反向旋转抵消,对齐调试成本极高
  • 两个旋转块的拼接边是规则直角边,很难自然做出斜向分割线,硬调border属性容易出现边缘锯齿、拼接缝隙

实现代码

直接用整体胶囊容器+斜切分栏的思路实现,全程不需要旋转元素,从根源避免文字歪斜问题,斜分割线边缘顺滑无毛刺。

/* 整体胶囊容器 */
.capsule {
  width: 100px;
  height: 50px;
  border-radius: 25px; /* 圆角为高度的1/2,实现两端半圆效果 */
  display: flex;
  overflow: hidden;
  font-size: 18px;
  font-weight: 700;
  color: #fff;
}
/* 左侧橙色色块 */
.capsule-left {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #FDA725;
  /* 右侧做斜切,调整85%这个值可以改斜线斜率 */
  clip-path: polygon(0 0, 100% 0, 85% 100%, 0 100%);
  padding-right: 6px; /* 挪开文字避开切边 */
}
/* 右侧灰色色块 */
.capsule-right {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #CED2D9;
  /* 左侧做斜切,和左侧切边角度完全匹配 */
  clip-path: polygon(15% 0, 100% 0, 100% 100%, 0 100%);
  margin-left: -15%; /* 负边距让两个色块重叠,消除拼接缝隙 */
  padding-left: 6px; /* 挪开文字避开切边 */
}
<div class="capsule">
  <div class="capsule-left">5</div>
  <div class="capsule-right">10</div>
</div>

调整说明

如果需要修改斜分割线的倾斜角度,只要同步调整三个值即可:

  1. 左侧clip-path里的右下点X轴百分比(示例代码中为85%)
  2. 右侧clip-path里的左上点X轴百分比(示例代码中为15%,和左侧值相加为100%即可)
  3. 右侧的负margin值(和右侧clip-path的左上点X轴百分比保持一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:36:25