CSS - 带有切角和边框颜色的矩形 div

hat*_*hed 3 html css css-shapes

我正在尝试实现如图所示的形状:
有 2 个带有切角的矩形 div,1 个 div 位于另一个 div 后面。

在此处输入图片说明

但是角落似乎不正确,我找不到显示形状边界的方法。

.wrapper {
  display: flex;
  justify-content: center;
}

.connect {
  width: 254px;
  height: 50px;
  background: red;
  background: #FF2D5069;
  border-top: 2px solid #FF2175;
  position: absolute;
  bottom: 0;
  z-index: 5;
}

.connect::before {
  content: '';
  position: absolute;
  bottom: 0;
  right: -2px;
  border-top: 52px solid white;
  border-left: 42px solid transparent;
}

.connect::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: -2px;
  border-top: 52px solid white;
  border-right: 42px solid transparent;
}

.connect-behind {
  width: 300px;
  height: 44px;
  background: red;
  background: #FF2D5069;
  border-top: 2px solid #FF2175;
  position: absolute;
  bottom: 0;
}

.connect-behind::before {
  content: '';
  position: absolute;
  bottom: 0;
  right: -2px;
  border-top: 46px solid white;
  border-left: 26px solid transparent;
}

.connect-behind::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: -2px;
  border-top: 46px solid white;
  border-right: 26px solid transparent;
}
Run Code Online (Sandbox Code Playgroud)
  <div class="wrapper">
    <div class="connect"></div>
    <div class="connect-behind"></div>
  </div>
Run Code Online (Sandbox Code Playgroud)

我参考了其他线程的使用behindafter解决方案,但它似乎不适用于我的问题。请帮忙,谢谢。

G-C*_*Cyr 6

您可以使用透视和变换:

可能的例子(对于信息:用网格代替绝对)

.wrapper {
  display: grid;
  justify-content: center;
  align-items: end;
  height: 300px;
  perspective: 50px;
}

.connect,
.connect-behind {
  transform: rotatex(50deg);
  background: red;
  margin: 0 auto;
  background: #FF2D5069;
  border-top: 2px solid #FF2175;
  grid-row: 1;
  grid-column: 1;
  transform-origin: bottom center;
}

.connect-behind {
  width: 300px;
  height: 44px;
}

.connect {
  width: 254px;
  height: 50px;
  ;
}
Run Code Online (Sandbox Code Playgroud)
<div class="wrapper">
  <div class="connect"></div>
  <div class="connect-behind"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

border在形状周围绘制一个,drop-shadow可能很有用

.wrapper {
  display: grid;
  justify-content: center;
  align-items: end;
  height: 300px;
  perspective: 50px;
   filter:
   drop-shadow( 1px  0px 0 )
   drop-shadow(-1px  0px 0 )
   drop-shadow( 0px  1px 0 )
   drop-shadow( 0px -1px 0 );
}

.connect,
.connect-behind {
  transform: rotatex(50deg);
  background: red;
  margin: 0 auto;
  background:white;
  grid-row: 1;
  grid-column: 1;
  transform-origin: bottom center; 
  background:#ffa500;
}

.connect-behind {
  width: 254px;
  height: 50px; 
  border-left:solid 2px;
  border-right:solid 2px;
}

.connect {
  background:#ed1c24;
  width: 300px;
  height: 44px;
  ;
}
Run Code Online (Sandbox Code Playgroud)
<div class="wrapper">
  <div class="connect"></div>
  <div class="connect-behind"></div>
</div>
Run Code Online (Sandbox Code Playgroud)