Search code examples
htmlcsscss-shapes

CSS3 Transform Skew One Side


Is it possible to create "CSS3 Transform Skew One Side"

I found one solution, but it's not useful to me, because I need to use a image for background (not color)

#skewOneSide {
    border-bottom: 40px solid #FF0000;
    border-left: 50px solid rgba(0, 0, 0, 0);
    height: 0;
    line-height: 40px;
    width: 100px;
}

Even this JsFiddle is not useful as well (skewed area should be transparent)


Solution

  • Try this:

    To unskew the image use a nested div for the image and give it the opposite skew value. So if you had 20deg on the parent then you can give the nested (image) div a skew value of -20deg.

    .container {
      overflow: hidden;
    }
    
    #parallelogram {
      width: 150px;
      height: 100px;
      margin: 0 0 0 -20px;
      -webkit-transform: skew(20deg);
      -moz-transform: skew(20deg);
      -o-transform: skew(20deg);
      background: red;
      overflow: hidden;
      position: relative;
    }
    
    .image {
      background: url(http://placekitten.com/301/301);
      position: absolute;
      top: -30px;
      left: -30px;
      right: -30px;
      bottom: -30px;
      -webkit-transform: skew(-20deg);
      -moz-transform: skew(-20deg);
      -o-transform: skew(-20deg);
    }
    <div class="container">
      <div id="parallelogram">
        <div class="image"></div>
      </div>
    </div>

    The example:

    http://jsfiddle.net/diegoh/mXLgF/1154/