拟合跨度渐变到背景颜色的预期大小

Fitting spans with gradients to the expected size for background colors

我正在做一个采访项目,我试图使用 html、css 和 bootstrap 重新创建 stripe.com 网站。然而,经过数周的尝试,我们还没有弄清楚如何让 span 与 stripe 网站上的内容相匹配。

这是我应该拥有的屏幕截图:

这是我目前拥有的:

我以前从未使用过 span 来构建不同颜色的背景,所以这对我来说是一个挑战。我在不同的点出现了所有跨度,但是当我这样做时,我无法在正确的位置获得正确的大小 and/or。如何使这些跨度成为它们所在 div 大小的 1/3,以及如何将它们定位在正确的位置?

body {
  background-color: #f6f9fc;
  font-family: Camphor, Open Sans, Segoe UI, sans-serif;
}

nav {
  z-index: 1;
}

.navbar-brand {
  font-size: 25px;
  /* original CSS says 62.5% */
  /* height: 25;
    width: 62;
    font-size: 62.5%; */
  font-weight: bold;
  font-style: bold;
  margin-right: 220px;
}

.nav-link {
  font-size: 17px;
  padding: 20px 20px;
  color: rgb(255, 255, 255, 0);
  font-weight: 500;
  font-family: arial;
  margin-right: 50px;
  padding-top: 20px;
  overflow: visible;
}

#pricing {
  margin-right: 100px;
}

.navbar {
  height: 50px;
  padding: auto 0;
}

#stripes {
  width: 100%;
  height: 100%;
  overflow: hidden;
  -webkit-transform: skewY(-12deg);
  transform: skewY(-12deg);
  -webkit-transform-origin: 0;
  transform-origin: 0;
  background: linear-gradient(150deg, #53f 15%, #05d5ff 70%, #a6ffcb 94%);
  position: relative;
  height: 760px;
}

#stripes span {
  height: 40px;
  z-index: -1;
  position: relative;
  overflow: hidden;
}

#stripeSpan1 {
  width: 33.33333%;
  left: -16.66666%;
  top: 40px;
  background: #4c29ff;
}

#stripeSpan2 {
  width: 33.333333%;
  right: auto;
  left: 16.66666%;
  bottom: auto;
  background: #2be7ff;
}

#stripeSpan3 {
  width: 33.333333%;
  bottom: auto;
  left: 50%;
  right: auto;
  background: #a1ffc8;
}

#stripeSpan4 {
  background: #25ddf5;
  top: 380px;
  right: -16.66666%;
  width: calc(100% / 3);
}

#stripeSpan5 {
  width: calc(100% / 3);
  bottom: 0;
  background: #1fa2ff;
}
<div class="container">
        <nav class="navbar navbar-dark navbar-expand-lg ">
            <div class='d-flex align-items-center'>
                <a class="navbar-brand " href="#">stripe</a>


                <ul class="navbar-nav align-items-center">
                    <li class="nav-item ">
                        <a class="nav-link text-light " href="#">Products</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-light" href="#">Developers</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-light" href="#">Company</a>
                    </li>
                    <li class="nav-item" id="pricing">
                        <a class="nav-link text-light" href="#">Pricing</a>
                    </li>
                    <li class="nav-item float-right">
                        <a class="nav-link text-light" href="#">Support</a>

                    <li class="nav-item float-right">
                        <a class="nav-link text-light no-wrap" href="#">Sign In →</a>
                    </li>
                    </li>

                </ul>
            </div>

        </nav>
    </div>

    <div class="header">
        <div id="stripes" aria-hidden="true">
            <span id="stripeSpan1"></span>
            <span id="stripeSpan2"></span>
            <span id="stripeSpan3"></span>
            <span id="stripeSpan4"></span>
            <span id="stripeSpan5"></span>
        </div>
        <div class="container-lg header-text">
            <span class="badge badge-success">NEW</span>
            <p class="float-right text-light">
                Itroducing the Corporate Card
            </p>
            <h2 class="text-light">
                The new standard in online payments
            </h2>
            <p class="text-light">
                Stripe is the best software platform for running an internet business. We handle billions of dollars
                every year
                for
                forward-thinking businesses around the world.
            </p>
        </div>
    </div>

可以考虑多背景来近似。只需找到正确的值即可获得良好的结果:

.stripe {
  height:300px;
  background: 
    /* Color                         position     / width height */
    linear-gradient(#25dbf3,#25dbf3) center right / 30%   70px, 
   
    linear-gradient(#1fa2ff,#1fa2ff) bottom left  / 40%   70px,
    
    linear-gradient(#5533ff,#5533ff) top left     / 30%   70px,
    linear-gradient(#4553ff,#4553ff) top left     / 60%   70px,
    linear-gradient(#4f40ff,#4f40ff) top left     / 100%  70px,
    /* main background*/
    linear-gradient(150deg, #53f 15%, #05d5ff 70%, #a6ffcb 94%);
  background-repeat:no-repeat;
  transform:skewY(-10deg);
  transform-origin:left;
}
<div class="stripe">

</div>