如何制作类似这样的东西?
我尝试使用三个带有“position: absolute”属性的div(其中两个带有“transformation: skew(...)”属性)。它可以工作,但不是完美的。例如,在IE中,顶部和底部的div之间有一些空隙(我无法将一个放在另一个上面,因为颜色会变暗),左侧和右侧也会倾斜(虽然这可能可以通过添加两个白色的div来修复)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<style type="text/css">
html {
display: table;
margin: auto;
}
body{
display: table-cell;
}
.container {
padding: 15px;
margin-bottom: 30px;
position: relative;
}
.mask {
background: rgba(0, 0, 0, 0.78);
position: absolute;
z-index: 99;
}
.mask-top {
top: 0;
left: 0;
width: 100%;
height: 70%;
}
.mask-left {
width: 43%;
height: 30%;
left: 0;
bottom: 0;
margin-left: -24px;
transform: skew(-16deg);
}
.mask-right {
width: 43%;
height: 30%;
right: 0;
bottom: 0;
margin-right: -24px;
transform: skew(16deg);
}
</style>
</head>
<body>
<div class="container">
<img src="http://i.imgur.com/cnvTRdz.png"/>
<div class="mask mask-top"></div>
<div class="mask mask-left"></div>
<div class="mask mask-right"></div>
</div>
</body>
</html>
http://jsfiddle.net/sw4tr5bc/2/
除了不支持IE的CSS遮罩外,还有更好的方法吗?
更新:
这是可行的解决方案(使用SVG,如答案中建议的)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<style type="text/css">
html {
display: table;
margin: auto;
}
body{
display: table-cell;
}
.container {
padding: 15px;
margin-bottom: 30px;
position: relative;
}
.mask {
position: absolute;
z-index: 99;
top: 0;
left: 0;
}
</style>
</head>
<body>
<div class="container">
<img src="http://i.imgur.com/JlWbC0z.png"/>
<svg class="mask" width="100%" height="100%" viewbox="0 0 798 798">
<path d="M0 0 L0 798 L270 798 L340 570 L455 570 L520 798 L798 798 L798 0 L0 0 Z" fill="black" opacity="0.78"></path>
</svg>
</div>
</body>
</html>