提问者:小点点

使用CSS抄近路


我想“削减”一个div的左上角,就像你把一页的角折下来一样。

我想用纯CSS做,有什么方法吗?


共3个答案

匿名用户

如果父元素具有纯色背景,则可以使用伪元素创建效果:

null

div {
    height: 300px;
    background: red;
    position: relative;
}

div:before {
    content: '';
    position: absolute;
    top: 0; right: 0;
    border-top: 80px solid white;
    border-left: 80px solid red;
    width: 0;
}
<div></div>

匿名用户

如果您需要一个透明的裁剪边缘,您可以使用一个旋转的伪元素作为div的背景,并将其定位以裁剪出所需的角:

null

body {
  background: url(http://i.imgur.com/k8BtMvj.jpg);
  background-size: cover;
}
div {
  position: relative;
  width: 50%;
  margin: 0 auto;
  overflow: hidden;
  padding: 20px;
  text-align: center;
}
div:after {
  content: '';
  position: absolute;
  width: 1100%; height: 1100%;
  top: 20px; right: -500%;
  background: rgba(255,255,255,.8);
  transform-origin: 54% 0;
  transform: rotate(45deg);
  z-index: -1;
}
<div>
  ... content ...<br/>... content ...<br/>... content ...<br/>... content ...<br/>... content ...<br/>... content ...<br/>... content ...<br/>... content ...<br/>... content ...<br/>... content ...<br/>
</div>

匿名用户

使用剪辑路径是一种新的,正在兴起的替代方法。 它开始得到越来越多的支持,现在正变得有很好的文件记录。 由于它使用SVG来创建形状,因此它的响应速度是开箱即用的。

  • 剪辑路径生成器

null

div {
  width: 200px;
  min-height: 200px;
  -webkit-clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 25%, 75% 0);
  clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 25%, 75% 0);
  background: lightblue;
}
<div>
  <p>Some Text</p>
</div>