Skip to content Skip to sidebar Skip to footer

Trapezium Responsive Div With Css Or Jquery

I have to build this website and I am faced with a unique challenge of alternating Trapezium Divs. I have never come across anything like this before and I have no idea how to achi

Solution 1:

You could use the SkewX transform to skew a div's before element:

div {
  height: 50px;
  display: inline-block;
  background: lightgray;
  padding: 10px;
  line-height: 50px;
  text-align: center;
  position: relative;
  transition: all 0.6s;
  z-index:1;
}
div:before {
  content: "";
  position: absolute;
  height: inherit;
  background: inherit;
  top: 0;
  left: 30%;
  height: 70px;
  width: 100%;
  -webkit-transform: skewX(45deg);
  -moz-transform: skewX(45deg);
  transform: skewX(45deg);
  z-index: -1;
}
div:hover {
  background: tomato;
}
<div>Some text here</div>

You could do this for many different trapeziums:

html,
body {
  margin: 0;
  padding: 0;
  text-align: center;
}
body {
  background: blue;
}
div {
  height: 50px;
  display: inline-block;
  background: lightgray;
  line-height: 50px;
  text-align: center;
  position: relative;
  transition: all 0.6s;
  cursor: pointer;
  z-index: 1;
}
.right:before {
  content: "";
  position: absolute;
  height: inherit;
  background: inherit;
  top: 0;
  left: 50%;
  height: 100%;
  width: 100%;
  -webkit-transform: skewX(45deg);
  -moz-transform: skewX(45deg);
  transform: skewX(45deg);
  z-index: -1;
}
div:hover {
  background: tomato;
}
.left {
  margin-left: 50px;
}
.right {
  margin-right: 50px;
}
.left:after {
  content: "";
  position: absolute;
  height: inherit;
  background: inherit;
  top: 0;
  left: -50%;
  height: 100%;
  width: 100%;
  -webkit-transform: skewX(-45deg);
  -moz-transform: skewX(-45deg);
  transform: skewX(-45deg);
  z-index: -1;
}
<divclass="right">Some Text saying</div><br/><br/><divclass="left">how much I love the</div><br/><br/><divclass="left right">MINIONS!</div>

Solution 2:

SVG

If you define multiple trapzoids in svg you can reuse them inside divs to get the shape you desire. Defining a template of shapes makes the shapes reusable. To reuse them simply define a <use xlink:href="#targetid"> element

.example {
  width: 400px;
  height: 200px;
  border: 2px solid pink;
}
.template {
  display: none;
}
<svgclass="template"xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink"><def><polygonid="trapzoid"points="0,20 100,0 100,100 0,80" /><polygonid="trapzoid2"points="20,0 80,0 100,100, 0,100" /></def></svg><divclass="example"><svgwidth="100%"height="100%"preserveAspectRatio="none"viewBox="0 0 100 100"xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink"><usexlink:href="#trapzoid" /></svg></div><divclass="example"><svgwidth="100%"height="100%"preserveAspectRatio="none"viewBox="0 0 100 100"xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink"><usexlink:href="#trapzoid2" /></svg></div>

Post a Comment for "Trapezium Responsive Div With Css Or Jquery"