如何让倾斜不影响梯度css

How to make skew not affect gradient css

我正在尝试将渐变应用于倾斜 div 但渐变从倾斜开始的地方开始,并且无论我使用什么角度,它都不会应用我正在寻找的渐变。

这是我要复制的渐变

但我得到了一个非常不同的结果...颜色不对,而且我右侧的颜色太绿了。您可以注意到在上图中,渐变从底部的小楔形开始,但我的渐变从整个底部开始。

    .main {
      height: 80vh;
      background-color: white;
    }
    
    .skew-div {
      height: 100%;
      width: 100%;
      position: absolute;
      top: 0;
      background: linear-gradient(180deg, #1D2345 0%, #242766 27.88%, #294B7C 52.91%, #2E6E92 76.86%, #40CE9C 104.51%);;
      transform: skewY(-12deg);
      transform-origin: 0;
    }
    <div class="main">
      <div class="skew-div">
      </div>
    </div>

如果不将图像作为背景,这是否可行?

使用剪辑路径

.main {
  height: 80vh;
  background-color: white;
  position:relative;
}

.skew-div {
  height: 100%;
  width: 100%;
  position: absolute;
  top: 0;
  background: linear-gradient(180deg, #1D2345 0%, #242766 27.88%, #294B7C 52.91%, #2E6E92 76.86%, #40CE9C 104.51%);
  clip-path: polygon(0 0, 100% 0, 100% 70%, 0 100%);
}
<div class="main">
  <div class="skew-div">
  </div>
</div>

您可以使用 clip-path 属性

.main {
  height: 80vh;
  background-color: white;
}

.skew-div {
  height: 100%;
  width: 100%;
  position: absolute;
  top: 0;
  background: linear-gradient(180deg, #1D2345 0%, #242766 27.88%, #294B7C 52.91%, #2E6E92 76.86%, #40CE9C 104.51%);
  ;
  clip-path: polygon(0 0, 100% 0, 100% 75%, 0% 100%);
}
<div class="main">
  <div class="skew-div">
  </div>
</div>

您可以使用 clip-path 属性 而不是 transform: skewY()transform 有时会突然产生一些令人困惑的问题。这就是为什么你有时应该使用 属性 来逃避。否则使用正确的 Browser Vendor Prefixes.

如果您觉得配置有任何困难 clip-path 属性 那么您可以使用这个第 3 方网站生成剪辑路径值 => https://bennettfeely.com/clippy/