gpt4 book ai didi

html - 带孔的半透明覆盖层/掩模

转载 作者:可可西里 更新时间:2023-11-01 13:05:39 25 4
gpt4 key购买 nike

如何制作这样的东西?

enter image description here

我尝试使用 3 个带有 position: absolute 的 div(其中 2 个带有 transformation: skew(...))。它有效但并不完美。例如在 IE 中顶部和底部 div 之间有一些空间(我不能把一个放在另一个上面因为颜色会变暗),左右两侧也倾斜(虽然它可能可以通过添加两个白色来修复此处为 div)

enter image description here

<!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 Masking。

更新:

这是工作解决方案(使用 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>

http://jsfiddle.net/sw4tr5bc/3/

最佳答案

只需制作一个内联 SVG 并将其放在您的图像上,例如看看this SVG :

<svg width="200" height="200">
<path d="M0 0 L200 0 L200 200 L150 200 L150 150 L100 150 L100 200 L0 200 L0 0 Z" fill="black" />
</svg>

这应该从 IE9 开始工作(当然它在所有现代浏览器中工作)。

这看起来并不是您想要实现的结果,但这只是一个方向。事实上,要成功地将它应用到您的案例中,您只需更改上面 SVG 中的几个数字。

过程的一些解释:

M0 0 - put the start of your path to x=0 y=0
L200 0 - line to x=200 y=0; then with some more lines you just draw your figure until you return by L0 0 to the beginning
fill="black" sets the color of the figure

所以最后你可以使用这个简单的符号构建任何路径。然后您可以在 SVG 上使用不透明度使背景图片可见。

另外,为了改进您的代码并避免污染 HTML,您可以将此 SVG 作为数据 URI 放入您的 CSS 中,例如see my another answer它还使用 SVG 来解决 CSS 问题,以了解如何做到这一点。请记住,如果您还希望此 CSS 方法在 IE9 中工作,则需要将其编码为 URL。无论如何,这只是一 block 糖,它也可以像内联 HTML SVG 一样毫无问题地工作。

关于html - 带孔的半透明覆盖层/掩模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33584427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com