多重倾斜矩形

Multiple skew rectangle

我正在尝试用 CSS

制作类似的东西

应该可以吗?

这就是我差点得到的

a {
  font-weight: 700;
  color: #fff;
  padding: 0px 20px 0px 18%;
  background: #00aeef;
  text-transform: uppercase;
  position: relative;
}

a::after {
  content: " ";
  position: absolute;
  display: block;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  z-index: -1;
  background: #00aeef;
  transform-origin: bottom left;
  -ms-transform: skew(-30deg, 0deg);
  -webkit-transform: skew(-30deg, 0deg);
  transform: skew(-30deg, 0deg);
}
<a href="#">Teste</a>

那么怎么才能像布局那样做多重倾斜呢?

您可以在伪元素中使用渐变更改背景颜色;

a {
  font-weight: 700;
  color: #fff;
  padding: 0px 20px 0px 18%;
  text-transform: uppercase;
  background:#00aeef;
  position: relative;
}

a::after {
  content: " ";
  position: absolute;
  width: 40px;
  height: 100%;
  top: 0;
  left: 100%;
  z-index: -1;
  background: 
  linear-gradient(to right, #00aeef 10px,
        transparent 11px,transparent 15px,
        #00aeef 16px,#00aeef 30px,
        transparent 31px,transparent 35px,
        #00aeef 36px,#00aeef 40px
        );
  transform-origin:top left;
  transform: skewX(-30deg)
}
<a href="#">Teste</a>

你也可以用一个元素来实现,考虑到多重背景,不需要伪元素和变换:

a {
  font-weight: 700;
  color: #fff;
  padding: 0px 60px 0px 18%;
  text-transform: uppercase;
  background: 
  linear-gradient(#00aeef,#00aeef) left/calc(100% - 40px) 100% no-repeat,
  linear-gradient(115deg, #00aeef 10px,
        transparent 11px,transparent 15px,
        #00aeef 16px,#00aeef 25px,
        transparent 26px,transparent 30px,
        #00aeef 31px,#00aeef 35px,
        transparent 35px, transparent 100%) right/40px 100% no-repeat;
}
<a href="#">Teste</a>

通过使用 borderbox-shadow 对您自己的代码进行少量更新,我能够达到预期的结果,请查看下面的工作代码段:)

a {
  font-weight: 700;
  color: #fff;
  padding: 0px 50px 0px 18%;
  background: #00aeef;
  text-transform: uppercase;
  position: relative;
}

a:after {
  content: " ";
  position: absolute;
  display: block;
  width: 10px;
  height: 100%;
  top: 0;
  right: 0;
  z-index: 1;
  background: #00aeef;
  transform-origin: bottom left;
  -ms-transform: skew(-30deg, 0deg);
  -webkit-transform: skew(-30deg, 0deg);
  transform: skew(-30deg, 0deg);
  border-left: 5px solid white;
  border-right: 5px solid white;
  box-shadow: 5px 0 0 0 #00aeef;
}
<a href="#">Teste</a>