以下代码通过不透明的背景模拟了一个切口,在下面的固定图像上滚动。切口的高度是动态的,可以调整大小以适合其内容。

问题:代码使用了可怕的技巧!注意,切口的内容Y在HTML中是重复的,尽管在视觉输出中仅显示一次。

事情是-黑客“行得通”。两个副本都是必需的:


如果第一个被删除,则剩余内容Y会在图像后面渲染,不再可见。
如果移除了第二个,则切口会塌陷到零高度,并且剩余的内容Y与内容Z重叠。


问题:在纯CSS中,有没有更好的替代方法?



<!DOCTYPE html>
<html>
	<head>
		<title>Simulated Backdrop Image Cutout through Opaque Background</title>
		<style>
			.opaque-background {
				background-color: black;
				color: white;
			}

			.container {
				position: relative;
			}

			.cutout {
				background-attachment: fixed;
				background-image: url(https://i.stack.imgur.com/RTFBR.jpg);
				background-repeat: repeat;
				position: absolute;
				width: 100%;
				height: 100%;
			}
		</style>
	</head>
	<body class="opaque-background">
		Content preceding (X)
		<div class="container">
			<div class="cutout">
			Content between (Y)
			</div>
			Content between (Y)
		</div>
		Content following (Z)
	</body>
</html>

最佳答案

男孩,我觉得很可恶。答案很简单,就像调整z-index一样,以便切口在内容Y后面显示。(我以为我已经尝试过了,但显然没有。)

.cutout {
    background-attachment: fixed;
    background-image: url(https://i.stack.imgur.com/RTFBR.jpg);
    background-repeat: repeat;
    position: absolute;
    width: 100%;
    height: 100%;
    z-index: -1;
}


HTML:

Content preceding (X)
<div class="container">
    <div class="cutout">
    </div>
    Content between (Y)
</div>
Content following (Z)

关于html - 固定图像背景上的CSS可变高度切口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57646457/

10-13 00:10