向容器添加 45 度角

Bec*_*cky 0 html css css-shapes

我有一个容器元素,我想弄清楚是否可以将它塑造成两个 45 度角。像这样:

在此处输入图片说明

它现在只是一个矩形:

在此处输入图片说明

<div id="home-img-text">
        <div id="home-img-text-container">
            <div id="home-img-text-description">WRECKING <br>& DEMOLITION <br> DONE RIGHT.</div>
        </div>
    </div>
#home-img-text-container {
    background: rgba(0,0,0,.8);
    padding: 30px 20px;
}
#home-img-text-description {
    color: #FFF;
    font-size: 2.5em;
    line-height: 1.4em;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我该怎么做呢?

更新:

.home-img-text {
    position: absolute;
    left: 10%;
    top: 25%;
}
#home-img-text-container1, #home-img-text-container2 {
    position: relative;
    margin-bottom: 20px;
    background: rgba(0,0,0,.8);
    opacity: 0;
    transition:1s; -webkit-transition:1s;
    overflow: hidden;
}
#home-img-text-container1.fadeDisplay {
    opacity: 1;
    transform: translateX(30px); -webkit-transform: translateX(30px);
}
#home-img-text-container2.fadeDisplay {
    opacity: 1;
    transform: translateX(30px); -webkit-transform: translateX(30px);
}

#home-img-text-description {
    position: relative;
    margin: 40px 0px;  
    padding: 30px 20px;
    color: #FFF;
    font-size: 2.5em;
    line-height: 1.4em;
}
#home-img-text-description2 {
    color: #FFF;
    font-size: 2em;
    line-height: 1.4em;
    padding: 30px 20px;
}
/*----Adding this ---*/

#home-img-text-description:before {
  position: absolute;
  content: '';
  height: 40px;
  width: 100%;
  left: 0px;
  background: inherit;
}

#home-img-text-description:before {
  top: -40px;
  transform: skewX(45deg);
  transform-origin: right bottom;
}
Run Code Online (Sandbox Code Playgroud)

Har*_*rry 5

使用两个向相反方向倾斜(45 度)的伪元素也是产生这种形状的好选择。使用这个选项的好处是它与使用边框方法创建的形状不同在右上角和右下角生成透明切口

clip-path由于IE 缺乏支持,我不会推荐(有或没有 SVG)。

#home-img-text{
  overflow: hidden;
}  
#home-img-text-container {
  position: relative;
  background: rgba(0, 0, 0, .8);
  padding: 30px 20px;
  margin: 40px 0px;
}
#home-img-text-container:after,
#home-img-text-container:before {
  position: absolute;
  content: '';
  height: 40px;
  width: 100%;
  left: 0px;
  background: inherit;
}
#home-img-text-container:before {
  top: -40px;
  transform: skewX(45deg);
  transform-origin: right bottom;
}
#home-img-text-container:after {
  bottom: -40px;
  transform: skewX(-45deg);
  transform-origin: right top;
}
#home-img-text-description {
  color: #FFF;
  font-size: 2.5em;
  line-height: 1.4em;
}
body {
  background-image: radial-gradient(circle at center, chocolate, sandybrown);
  min-height: 100vh;
}
Run Code Online (Sandbox Code Playgroud)
<div id="home-img-text">
  <div id="home-img-text-container">
    <div id="home-img-text-description">WRECKING
      <br>& DEMOLITION
      <br>DONE RIGHT.</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是一个在形状的所有侧面都有边框的版本:

#home-img-text{
  border-left: 2px solid;
  overflow: hidden;
}  
#home-img-text-container {
  position: relative;
  padding: 30px 20px;
  margin: 40px 0px;
  background: rgba(0, 0, 0, .8);
  border-right: 2px solid;
}
#home-img-text-container:after,
#home-img-text-container:before {
  position: absolute;
  content: '';
  height: 38px;
  width: 100%;
  left: 0px;
  background: inherit;
  border: 2px solid;
}
#home-img-text-container:before {
  top: -40px; /* -(height + border-top) */
  border-width: 2px 3px 0px 0px;
  transform: skewX(45deg);
  transform-origin: right bottom;
}
#home-img-text-container:after {
  bottom: -40px; /* -(height + border-bottom) */
  border-width: 0px 3px 2px 0px;
  transform: skewX(-45deg);
  transform-origin: right top;
}
#home-img-text-description {
  color: #FFF;
  font-size: 2.5em;
  line-height: 1.4em;
}

body {
  background-image: radial-gradient(circle at center, chocolate, sandybrown);
  min-height: 100vh;
}
Run Code Online (Sandbox Code Playgroud)
<div id="home-img-text">
  <div id="home-img-text-container">
    <div id="home-img-text-description">WRECKING
      <br>& DEMOLITION
      <br>DONE RIGHT.</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)


如果您需要添加图像(无论是否作为背景),它将需要额外的几个元素,并且该元素具有固定的高度。但正如前面提到的,即使需要额外的元素,这种方法也有其优势。

#home-img-text {
  position: relative;
  padding: 40px 0px; /* top/bottom padding equal to height of the two skewed elements, don't set left/right padding  */
  overflow: hidden;
}
#home-img-text-container {
  height: 170px; /* height of image - 2 * height of skewed element */
  padding: 0px 20px; /* don't set any top/bottom padding */
  background: linear-gradient(rgba(0, 0, 0, .8), rgba(0, 0, 0, .8)),url(http://lorempixel.com/800/250/nature/1);
  background-position: 0px 0px, 0px -40px; /* 0px 0px, 0px -(height of skewed element) */
}
#home-img-top,
#home-img-bottom {
  position: absolute;
  content: '';
  height: 40px;
  width: 100%;
  left: 0px;
  overflow: hidden;  
}
#home-img-top {
  top: 0px;
  transform: skewX(45deg);
  transform-origin: right bottom;
}
#home-img-bottom {
  bottom: 0px;
  transform: skewX(-45deg);
  transform-origin: right top;
}
#home-img-top:before,
#home-img-bottom:before {
  position: absolute;
  content: '';
  height: 100%;
  width: 100%;
  left: 0px;
  background: linear-gradient(rgba(0, 0, 0, .8), rgba(0, 0, 0, .8)), url(http://lorempixel.com/800/250/nature/1);
}
#home-img-top:before {
  top: 0px;
  background-position: 0px 0px,0px 0px;
  transform: skewX(-45deg);
  transform-origin: right bottom;
}
#home-img-bottom:before {
  bottom: 0px;
  background-position: 0px 0px, 0px -210px; /* 0px -(height of image - height of skewed element) */
  transform: skewX(45deg);
  transform-origin: right top;
}
#home-img-text-description {
  color: #FFF;
  font-size: 2.5em;
  line-height: 1.4em;
}
body {
  background-image: radial-gradient(circle at center, chocolate, sandybrown);
  min-height: 100vh;
}
Run Code Online (Sandbox Code Playgroud)
<div id="home-img-text">
  <div id="home-img-top"></div>
  <div id="home-img-text-container">
    <div id="home-img-text-description">WRECKING
      <br>& DEMOLITION
      <br>DONE RIGHT.</div>
  </div>
  <div id="home-img-bottom"></div>
</div>
Run Code Online (Sandbox Code Playgroud)