Search code examples
htmlcsscss-shapes

Css 3 custom trapezoid


enter image description here

Hi , I need create div which would look like one on the provided image. Notice black and grey zones. I have been experimenting with css 3 but i was able to create only differently rotated trapezoid. Is it possible to create this only with css ?

EDIT: What ive tried was this

trapezoid {

    border-bottom: 100px solid red;
    border-left: 150px solid transparent;
    border-right: 0px solid transparent;
    height: 0;

}

It produces trapezoid which is nice but its differnetly rotated and i cant figure out how to rotate it enter image description here


Solution

  • You could use a skew'ed pseudo element for this. Something like:

    div {
      height: 100px;
      background: tomato;
      padding-top: 10px;
      position: relative;
      overflow: hidden;
    }
    div:before {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 150%;
      background: gray;
      -webkit-transform-origin: top left;
      -webkit-transform: skewY(2deg);
      -moz-transform-origin: top left;
      -moz-transform: skewY(2deg);
      transform-origin: top left;
      transform: skewY(2deg);
    }
    <div></div>


    Another Approach would be:

    div{
      height:100px;
      width:90vw;
      margin:0;padding:0;
      padding-top:10px;
      background:gray;position:relative;
      }
    div:before{
      content:"";
      position:absolute;
      top:0;
      left:0;
      border-left:90vw solid transparent;
      border-top:10px solid red;
      -webkit-transform:translateZ(0);
      transform:translateZ(0);
      }
    <div></div>