geo*_*310 3 css css3 image-clipping image-masking css-shapes
我如何使用HTML和CSS制作一个div,其中包含一个被剪裁和屏蔽的图像,使其看起来如下所示:
我一直试图找到一种方法来做这个约2个小时现在无处可去所以我只是希望有人可以指出我正确的方向.具体到这里,我希望剪切图像使得顶部的两个角是圆形的,并将其嵌入具有四个圆角和1/4底部填充的div元素中,两个元素都被转换为使其看起来是右边缘比左边更远离观察者.
为了创建这样的效果,图像保持不变,但外形具有这种透视效果,您可以使用类似于下面的演示.
div.inner {/*gives top section effect, also crops the image*/
position: absolute;
top: 0;
left: 0;
border-radius: 20px 20px 0 0;
height: 200px;
width: 300px;
overflow: hidden;
border: 10px solid red;
transform: skewY(5deg);
}
.inner img {/*removes transform skew from image*/
transform: skewY(-5deg);
transform-origin: top left;
height:100%;width:100%;
}
.wrap {
display: inline-block;
height: 200px;
width: 300px;
position: relative;
/*for demo only*/
margin: 100px 100px;
}
.wrap:after { /*give bottom section the effect*/
content: "";
position: absolute;
bottom: -50%;
left: 0;
height: 100%;
width: calc(100% + 20px);
transform: skewY(-10deg);
transform-origin: bottom right;
background: red;
z-index: -1;
border-radius: 20px;
}Run Code Online (Sandbox Code Playgroud)
<div class="wrap">
<div class="inner">
<img src="http://lorempixel.com/500/500" />
</div>
</div>Run Code Online (Sandbox Code Playgroud)
为了创造效果,我不得不加入这个wrapperdiv.这允许使用伪元素(:aftercss)来生成形状的下半部分:
+----------------------------+
| |
| _______/ <-- curved corner
| ------/
| ------/
\-----/
/\
\_____ also curved corner
Run Code Online (Sandbox Code Playgroud)
然后innerdiv用于生成形状的上部.使用skew声明,形状允许:after元素的相反,使红色形状的右手侧向下.
在overflow:hidden确保了不适合这个内的图像的任何部分inner的div将被裁剪(在border-radius:20px 20px 0 0;确保只有上角是受影响).
最后要注意的是.inner imgcss.由于我已经偏斜了.innerdiv,因此重要的是"疏忽"图像,使其保持矩形.这就是为什么这里有一个'反倾斜'(transform: skewY(-5deg);).
这是我尝试使用透视图.
感谢@vals指出perspective可以作为一部分使用transform.
* {
box-sizing: border-box;
}
figure {
perspective: 1000px;
width: 420px;
margin: 5em auto;
height: 350px;
background: red;
text-align: center;
padding: 10px;
border-radius: 25px;
transform: perspective(1200px) rotateY(50deg);
}
img {
border-radius: 20px 20px 0 0;
}Run Code Online (Sandbox Code Playgroud)
<figure>
<img src="http://lorempixel.com/400/200/sports/1/" alt="" />
</figure>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |