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

如何用CSS实现单角倾斜+对角圆角渐变?解决伪元素遮挡文本问题

如何用CSS实现如图所示的设计?

我尝试了多种方法,但伪元素的渐变会覆盖主文本。以下是我编写的代码:

span {
    border: 2px solid #FFC402;
    border-radius: 15px 0px 0px 15px;
    padding: 6px;
    font-size: 18px;
    display: inline-block;
    background: linear-gradient(90deg, #7a6bac 20%, #e83680 100%);
    position:relative;
    box-sizing: border-box;
}

span:after{
      content:"";
      width: 15px;
      height:90%;
      position:absolute;
      right:-8px;
      top:-2px;
      background: linear-gradient(90deg, #7a6bac 20%, #e83680 100%);
       transform: skew(-20deg);
       border-top: 2px solid #FFC402;
       border-right: 2px solid #FFC402;
       box-sizing: border-box
}

解决方案

问题核心是伪元素默认层级高于父元素内的文本,所以会覆盖内容。只需调整伪元素层级,并优化细节即可解决:

span {
    border: 2px solid #FFC402;
    border-radius: 15px 0 0 15px;
    padding: 6px 12px; /* 增加右侧内边距,避免文本贴近斜角 */
    font-size: 18px;
    display: inline-block;
    background: linear-gradient(90deg, #7a6bac 20%, #e83680 100%);
    position: relative;
    box-sizing: border-box;
    color: #fff; /* 可选:让文本在渐变背景上更清晰 */
}

span:after{
    content: "";
    width: 18px;
    height: calc(100% + 4px); /* 匹配父元素边框总高度 */
    position: absolute;
    right: -10px;
    top: -2px;
    background: linear-gradient(90deg, #7a6bac 20%, #e83680 100%);
    transform: skew(-20deg);
    border: 2px solid #FFC402;
    border-left: none; /* 去掉左侧边框,避免和父元素边框重叠 */
    box-sizing: border-box;
    z-index: -1; /* 关键:将伪元素置于文本下方 */
}

修改说明

  • z-index: -1:把伪元素层级降到文本下方,彻底解决覆盖问题
  • 调整伪元素高度和边框:让斜角部分的边框和父元素完全衔接,视觉更统一
  • 增加右侧内边距:避免文本和斜角区域过于拥挤,提升排版舒适度

内容的提问来源于stack exchange,提问作者Мухаммед Али

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:13:20