供参考的 HTML 结构:
<div id="container">
<span id="left">
<img src=""/>
</span>
<span id="middle">
<img src=""/>
</span>
<span id="right"></span>
</div>
我用纯 CSS 为你做了这个例子。
现在让我们解释一下我是如何做到的。
我拿一个容器,设置它的尺寸和相对位置。
#container{
width: 600px;
background-color: orange;
height: 300px;
overflow: hidden;
position: relative;
}
如果您设置overflow: hidden
容器内的所有元素将被截断并且它们不能扩展到父级之外。
之后我在容器中放了 3 个跨度,它们是内联元素,所以我不能设置它们的width
or height
。为此,我将它们的display:
属性设置为inline-block
. 现在我可以给span
a维度了。
span
它们处于一个位置,absolute
因为我希望跨度能够重叠。
为此,在绝对位置使用z-index
.
3 个跨度 ID。
#left {
position: absolute;
left: -100px;
display: inline-block;
width: 300px;
background-color: red;
height: 300px;
transform: skew(-20deg, 0deg);
-ms-transform: skew(-20deg, 0deg); /* IE 9 */
-webkit-transform: skew(-20deg, 0deg); /* Safari and Chrome */
z-index: 1;
overflow: hidden;
}
#left img {
-webkit-transform: skew(20deg,0deg);
}
#middle {
position: absolute;
left: 200px;
display: inline-block;
width: 200px;
background-color: green;
height: 300px;
transform: skew(-20deg, 0deg);
-ms-transform: skew(-20deg, 0deg); /* IE 9 */
-webkit-transform: skew(-20deg, 0deg); /* Safari and Chrome */
z-index: 3;
border-right: 10px solid white;
border-left: 10px solid white;
overflow: hidden;
}
#middle img {
-webkit-transform: skew(20deg, 0deg);
margin-left: -50px;
}
#right {
position:absolute;
right:-100px;
display:inline-block;
width:400px;
background-color:gray;
height:300px;
transform:skew(-20deg,0deg);
-ms-transform:skew(-20deg,0deg); /* IE 9 */
-webkit-transform:skew(-20deg,0deg); /* Safari and Chrome */
z-index:2;
overflow:hidden;
}
正如你所看到的,有skew
形状的转换,也是overflow: hidden
因为我不希望img
跨度内部超出父区域。
当我img
在倾斜的跨度内放置一个时,它也会产生形状的倾斜。所以应用
#nameofskewedcontainer img {
-webkit-transform: skew(20deg, 0deg);
}
其中 skew 属性与应用于跨度的属性完全相反。这样我就可以保持标准形状的 img 没有歪斜。(尝试在 jsfiddle 演示中删除它并查看)
所以我希望我很清楚。对于一切发表评论!
第二个更新的解决方案:
宽度 100%
CSS->
#container {
width: 100%;
height: 300px;
overflow: hidden;
position: relative;
}
#left {
position: absolute;
left: -100px;
display: inline-block;
width: 50%;
height: 300px;
transform: skew(-20deg, 0deg);
-ms-transform: skew(-20deg, 0deg); /* IE 9 */
-webkit-transform: skew(-20deg, 0deg); /* Safari and Chrome */
z-index: 1;
overflow: hidden;
}
#left img {
transform: skew(20deg, 0deg);
-moz-transform: skew(20deg, 0deg);
-webkit-transform: skew(20deg, 0deg);
}
#middle {
position:absolute;
left: 30%;
display: inline-block;
width: 40%;
height: 300px;
transform: skew(-20deg, 0deg);
-ms-transform: skew(-20deg, 0deg); /* IE 9 */
-webkit-transform: skew(-20deg, 0deg); /* Safari and Chrome */
z-index: 3;
border-right: 10px solid white;
border-left: 10px solid white;
overflow: hidden;
}
#middle img {
transform: skew(20deg, 0deg);
-moz-transform: skew(20deg, 0deg);
-webkit-transform: skew(20deg, 0deg);
margin-left: -50px;
}
#right {
position: absolute;
right: -100px;
display: inline-block;
width: 50%;
background-color: gray;
height: 300px;
transform: skew(-20deg, 0deg);
-ms-transform: skew(-20deg, 0deg); /* IE 9 */
-webkit-transform: skew(-20deg, 0deg); /* Safari and Chrome */
z-index: 2;
}
无论如何,罗伊,请记住,在 stackoverflow 中你可以提出一些问题,但你也必须练习给你的答案。只有这样,你才能真正学到一些东西。