I want to create two divs which are floated left to each other, however with a slanted angled border separating them. I've attached a picture to demonstrate what I mean.
Does anyone know if something like this is possible with CSS (cutting off the content with an overflow:hidden I guess)
These divs need to contain images that get cut off by the border, here is an example :
Try this
.left, .right {
position: relative;
height: 100px;
width: 200px;
background: #000;
float: left;
}
.left:after {
content: '';
line-height: 0;
font-size: 0;
width: 0;
height: 0;
border-top: 100px solid #000;
border-bottom: 50px solid transparent;
border-left: 0px solid transparent;
border-right: 50px solid transparent;
position: absolute;
top: 0;
right: -50px;
}
.right {
margin-left: 60px;
width: 100px;
}
.right:before {
content: '';
line-height: 0;
font-size: 0;
width: 0;
height: 0;
border-top: 50px solid transparent;
border-bottom: 100px solid #000;
border-left: 50px solid transparent;
border-right: 0px solid #000;
position: absolute;
top: -50px;
left: -50px;
}
<div class="left"> </div>
<div class="right"> </div>
UPDATE with images
.left, .right {
background: #000 url('http://lorempixel.com/300/100');
position: relative;
height: 100px;
width: 250px;
float: left;
}
.left:after {
content: '';
line-height: 0;
font-size: 0;
width: 0;
height: 0;
border-top: 50px solid transparent;
border-bottom: 100px solid #fff;
border-left: 30px solid transparent;
border-right: 0 solid #fff;
position: absolute;
top: -50px;
right: 0;
}
.right {
background: #000 url('http://lorempixel.com/200/100');
width: 150px;
}
.right:before {
content: '';
line-height: 0;
font-size: 0;
width: 0;
height: 0;
border-top: 100px solid #fff;
border-bottom: 50px solid transparent;
border-left: 0px solid transparent;
border-right: 30px solid transparent;
position: absolute;
top: 0;
left: 0;
}
<div class="left"> </div>
<div class="right"> </div>
All of the solutions so far depend on having a really thick angled border to divide the photos.
To avoid this you'd make a container and skew it. Then counter skew the image in the opposite direction.
Here's a CodePen http://cdpn.io/azvsA, but the gist of it is as follows:
.container {
border-right: 10px solid white;
overflow: hidden;
transform (skewX(-20deg));
}
.image {
transform (skewX(20deg));
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With