3

我试图弄清楚如何最好地用像这样的角度形状来掩盖 div - 如果在这种情况下顶部 div 将是背景图像,并且两个 div 将是 100% 宽度:

底部带有三角形的蒙版图像

我已经看过很多关于如何用圆形遮盖图像的教程,但没有关于如何遮盖 div 的边框(如红色区域)的教程。我知道肯定有比使用位图更好的方法,但我不知所措。

最好使用剪辑路径或 SVG 来做到这一点?如果结果是他们看到红色/蓝色 div 用一条平线分隔,我并不是那么关心旧浏览器。整个红色区域将是背景图像,所以如果旧的(er)浏览器错过了那个角边框,那就这样吧。

4

2 回答 2

6

您可以使用transform(skewrotate) 来实现此效果,而无需使用clip-pathwhich has low support

.container {
  width: 500px;
  height: 300px;
  background: linear-gradient(lightblue, dodgerblue);
  position: relative;
  overflow:hidden;
}

.container:after{
  position:absolute;
  content:"";
  width:100%;
  height:100%;
  left:-50%;
  top:-50%;
  background:#D0021B;
  transform-origin: 0 100%; 
  transform:skewY(15deg);
}

.container:before{
  position:absolute;
  content:"";
  width:100%;
  height:100%;
  left:50%;
  top:-50%;
  background:#D0021B;
  transform-origin: 100% 0; 
  transform:skewY(-15deg);
}
<div class="container"></div>

对于背景图像,您应该top:50%同时应用pseudo-elements

.container {
  width: 500px;
  height: 300px;
  background: url("http://i.imgur.com/5NK0H1e.jpg");
  position: relative;
  overflow: hidden;
}
.container:after {
  position: absolute;
  content: "";
  width: 100%;
  height: 100%;
  left: -50%;
  top: 50%;
  background: linear-gradient(lightblue,dodgerblue);
  transform: skew(10deg) rotate(10deg);
}
.container:before {
  position: absolute;
  content: "";
  width: 100%;
  height: 100%;
  left: 50%;
  top: 50%;
  background:linear-gradient(lightblue,dodgerblue);
  transform: skew(-10deg) rotate(-10deg);
}
<div class="container"></div>

于 2016-04-07T14:05:53.220 回答
5

如果您打算使用clip-path属性,您应该注意目前浏览器支持非常低,因为CSS Masking Module Level 1的状态为“候选推荐”。

polygon()因此,您可以使用value使用此属性轻松制作此形状:

.wrap {
  width: 30%;
  height: 300px;
  background: #4A90E2;
}
.wrap div {
  height: 200px;
  -webkit-clip-path: polygon(0% 0%, 100% 0%, 100% 90%, 50% 100%, 0% 90%);
          clip-path: polygon(0% 0%, 100% 0%, 100% 90%, 50% 100%, 0% 90%);
  background: url('http://i.imgur.com/5NK0H1e.jpg');
  background-size:cover;
}
<div class="wrap"><div></div></div>

于 2016-04-07T14:14:28.420 回答