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

如何用CSS制作不依赖背景的伪元素按钮?

制作不依赖外部背景色的自定义斜切按钮

你的问题出在之前的方案用白色伪元素模拟“裁切”效果,但这个白色必须和按钮所在的外部背景完全一致——换图片或渐变背景后,白色块和背景不匹配,自然就露馅了。要做能适配任意背景的按钮,核心是让按钮的所有视觉效果都由自身元素实现,不依赖外部背景色。

解决方案:用CSS skew变换实现内部斜切块

直接在按钮内部通过伪元素制作斜切色块,所有颜色都是按钮自身的一部分,完全不依赖外部背景:

.teno-btn {
    border: none;
    display: block;
    text-align: center;
    cursor: pointer;
    text-transform: uppercase;
    outline: none;
    position: relative;
    color: #fff;
    font-weight: 700;
    font-size: 15px;
    background-color: #000644;
    padding: 17px 40px;
    margin: 0 auto;
}
.teno-btn span {
    position: relative; 
    z-index: 1; /* 确保文字在色块上方 */
}
/* 左侧绿色斜切块 */
.teno-btn:before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 30px;
    background: #5ceb95;
    transform: skewX(45deg); /* 斜切变换 */
    transform-origin: top left;
}
/* 左侧白色斜切块 */
.teno-btn:after {
    content: "";
    position: absolute;
    left: 25px;
    top: 0;
    bottom: 0;
    width: 30px;
    background: #fff;
    transform: skewX(45deg);
    transform-origin: top left;
}
<button class="teno-btn">
    <span> Download Now </span>
</button>

方案说明

  1. 去掉了原方案的overflow: hidden,因为两个伪元素都在按钮内部,不需要隐藏外部元素
  2. 用skewX(45deg)给伪元素做斜切,通过left和width调整色块的位置和大小,实现你想要的左侧双斜块效果
  3. 所有色块都是按钮的内部元素,不管按钮放在图片、渐变还是任何背景上,都不会出现颜色冲突问题

如果想要更精细的斜切角度,只需调整skewX的度数,或者修改transform-origin来改变斜切的基准点。

内容的提问来源于stack exchange,提问作者Asma Binta Younus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:26:13