【问题标题】:Create an Angled Color Banner创建有角度的彩色横幅
【发布时间】:2015-04-02 18:53:25
【问题描述】:

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

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

我显然可以看到如何使用图像来做到这一点,但仅 HTML/CSS 呢?

这可能吗?

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

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

小提琴: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;
}

谢谢

【问题讨论】:

  • 如果你知道如何用 CSS 画梯形,你就会知道答案
  • 我记得上周看到几个类似的朋友。不是指责缺乏努力,而是你碰巧遇到他们吗?
  • 见我的answer here
  • @Harry:我记得最近回答了另一个问题,方法也略有不同。我也会看看能不能把那个挖出来。

标签: html css css-shapes


【解决方案1】:

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

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

.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;
  }
&lt;div class="title"&gt;&lt;/div&gt;

如果不想使用这种方式,可以查看替代方式(使用背景渐变)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);
  }
&lt;div&gt;123&lt;/div&gt;

【讨论】:

  • np 在。很高兴我能提供帮助。
【解决方案2】:

这是你想要的演示: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>

【讨论】:

    【解决方案3】:

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

    我们的想法是将background-image 应用于:after :pseudo-element,并将linear-gradientrgba() 值应用于主div

    您可以通过更改 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;
    }
    &lt;div&gt;&lt;/div&gt;

    【讨论】:

      【解决方案4】:

      另一种方法是使用一个元素,即斜坡右侧的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%;
      &lt;div&gt;&lt;/div&gt;

      【讨论】:

      • 与到目前为止给出的所有答案一样,但猜测选择将取决于其他因素(例如 div 中存在的其他内容/文本等)。 Border hack 不会让添加文本变得容易,渐变会使文本溢出到透明/白色也是。
      猜你喜欢
      • 2015-06-29
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多