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

如何用CSS实现左侧内翻式退角效果

需求说明

我需要实现这样的效果:橙色列在紫色行的上方,且左侧带有内翻式退角。因为可能用错了术语,搜不到相关解决方案,希望能得到实现指导。我当前的代码和预期效果差距很大,代码如下:

当前代码

HTML

<div class="page foldtl">
  <h2>Headline</h2>
  <p>Lorem ipsum dolor sit amet...</p>
</div>

CSS

body {
  background: #272822;
}

.page {
  background: #fff;
  width: 250px;
  height: 330px;
  margin: 50px;
  /* Optional Gradient */
  background: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
  /* FF3.6+ */
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #e5e5e5));
  /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
  /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
  /* Opera 11.10+ */
  background: -ms-linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
  /* IE10+ */
  background: linear-gradient(top, #ffffff 0%, #e5e5e5 100%);
  /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5', GradientType=0);
  /* IE6-9 */
}

.page h2 {
  padding: 85px 0 0 20px;
  font: 400 35px/1.5 'Lilita One', Helvetica, sans-serif;
}

.page p {
  padding: 10px 20px;
  font: 12px/1.5 Helvetica, sans-serif;
  color: #4b4b4b;
}

.foldtl {
  position: relative;
  -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.8);
  -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.8);
  box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.8);
}

.foldtl:before {
  content: "";
  position: absolute;
  top: 0%;
  left: 0%;
  width: 0px;
  height: 0px;
  border-bottom: 70px solid #eee;
  border-left: 70px solid transparent;
  -webkit-box-shadow: 7px 7px 7px rgba(0, 0, 0, 0.3);
  -moz-box-shadow: 7px 7px 7px rgba(0, 0, 0, 0.3);
  box-shadow: 7px 7px 7px rgba(0, 0, 0, 0.3);
}

.foldtl:after {
  content: "";
  position: absolute;
  top: 0%;
  left: 0%;
  width: 0px;
  height: 0px;
  border-top: 69px solid #272822;
  border-right: 69px solid transparent;
}
实现方案

下面是符合需求的代码,核心是利用CSS伪元素实现左侧内翻退角,同时分层设置橙色栏和紫色栏的布局:

完整代码

HTML

<div class="container">
  <div class="orange-bar"></div>
  <div class="purple-row"></div>
</div>

CSS

body {
  background: #272822;
  padding: 50px;
}

.container {
  width: 300px;
  position: relative;
}

/* 橙色栏 - 带左侧内翻退角 */
.orange-bar {
  height: 60px;
  background: #ff7a2e;
  position: relative;
  margin-bottom: 20px;
}

.orange-bar::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  /* 构建内翻退角:左侧透明,下方为橙色栏同色,右侧为背景色形成内凹效果 */
  border-top: 25px solid transparent;
  border-right: 25px solid #ff7a2e;
  border-bottom: 25px solid #ff7a2e;
  /* 阴影增强退角的立体效果 */
  box-shadow: -2px 2px 3px rgba(0,0,0,0.1);
}

/* 紫色行 */
.purple-row {
  height: 80px;
  background: #8a2be2;
}

关键实现要点

  • 用::before伪元素给橙色栏构建左侧内翻退角,通过边框的透明色和实色组合实现内凹效果
  • 外层容器设相对定位,方便内部元素的位置控制
  • 调整边框尺寸可以改变退角的大小,阴影可以增强立体感

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:35:54