创建有角度的彩色横幅

Create an Angled Color Banner

您好,我正在尝试在 HTML 和 CSS 中创建以下成角度的条带外观:

只是蓝色和紫色区域,后面是白色。

我可以清楚地看到如何使用图像来实现它,但是仅 HTML/CSS 呢?

这可能吗?

在网站上使用 - www.africa.dating

我知道我应该有更多示例代码,但实际上我不确定从哪里开始,所以我只有以下 HTML:

Fiddle: http://jsfiddle.net/e2dr5udr/3/

<div id="container">
    <div id="blue"></div>
    <div id="purple"></div>
</div>

#container {
    width: 100%;
    height: 100px;
    background-color: white;
    position: absolute;
}

#blue {
    width: 100%;
    height: 100px;
    background-color: blue;
    position: absolute;
} 

#purple {
    width: 100%;
    height: 100px;
    background-color: purple;
    position: absolute;
}

谢谢

这是您想要的演示:http://jsfiddle.net/shivanraptor/c4vrLrq7/

基本上是正方形(#blue)、三角形(#triangle)、平行四边形(#parallelogram)

    #container {
        width: 100%;
        height: 100px;
        background-color: white;
        position: absolute;
    }
    
    #blue {
        width: 200px;
        height: 100px;
        background-color: blue;
        float: left;
    } 
    
    #triangle {
     width: 0;
     height: 0;
     border-left: 50px solid transparent;
     border-right: 50px solid transparent;
     border-bottom: 100px solid blue;
        float: left;
        margin-left: -50px;
        
    }
    #parallelogram {
     width: 50px;
     height: 100px;
     -webkit-transform: skew(30deg);
        -moz-transform: skew(30deg);
          -o-transform: skew(30deg);
     background: purple;
        float: left;
        margin-left: -50px;
    }
    <div id="container">
        <div id="blue"></div>
        <div id="triangle"></div>
        <div id="parallelogram"></div>
    </div>

您可以使用伪元素和一些边框操作

这将允许您只用一个元素创建它,创建这个:

.title {
  height: 1px;
  background-color: transparent;
  border-bottom: 170px solid blue;
  border-right: 170px solid transparent;
  width: 190px;
  position:relative; 
}

.title:after{
  content:"";
  position:absolute;
  height: 1px;
  top:0px;
  background-color: transparent;
  border-bottom: 170px solid purple;
  border-right: 170px solid transparent;
  width: 210px;
  z-index:-1;
  }
<div class="title"></div>

如果您不想使用这种方法,可以查看替代方法(使用背景渐变)here


使用 SkewX:

div{
  position:relative;
  height:15vh;
  width:60vw;
  overflow:hidden;
  }
div:before{
  z-index:-1;
  content:"";
  position:absolute;
  top:0;
  height:100%;
  right:50%;
  width:150%;
  border-right:10px solid green;
  background:cornflowerblue;
  -webkit-transform:skewX(45deg);
  transform:skewX(45deg);
  }
<div>123</div>

如果你想要 background-image,你可以使用 rgba() 值和 :pseudo-element。

想法是将 background-image 应用到一个 :after :pseudo-element 和 linear-gradient 与主要 div 上的 rgba() 值。

您可以通过更改 rgba(red, green, blue, alpha)

中的 alpha 值来更改 linear-gradient 的不透明度

div {
  position: relative;
  height: 200px;
  background: linear-gradient(55deg, rgba(122, 0, 201, 0.8) 75%, rgba(178, 0, 204, 0.8) 75%, rgba(178, 0, 204, 0.7) 80%, transparent 80%);
}
div:after {
  position: absolute;
  content: '';
  width: 100%;
  height: 100%;
  background: url(http://lorempixel.com/700/200);
  z-index: -1;
}
<div></div>

使用一个元素的另一种方法,skewX() 属性 用于斜坡右侧,透明度由 rgba() 背景色和伪元素边框制成:

DEMO

div{
    height:100%;
    position:relative;
    overflow:hidden;
}
div:before{
    content:'';
    position:absolute;
    top:0; right:0;
    width:100%; height:100%;
    background-color: rgba(90, 74, 199, .8);
    border-right:40px solid rgba(173, 96, 223, .8);
    
    -webkit-transform-origin:100% 100%;
    -ms-transform-origin:100% 100%;
    transform-origin:100% 100%;
    
    -webkit-transform:skewX(30deg);
    -ms-transform:skewX(30deg);
    transform:skewX(30deg);
}


/******  FOR THE DEMO  *******/

html, body{
    background: url(http://lorempixel.com/output/people-q-c-640-480-1.jpg);
    background-size:cover;
    margin:0;padding:0;
    height:100%;
<div></div>