以下是w3schools的原始工作示例
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body, html {
height: 100%;
}
.parallax {
/* The image used */
background-image: url('img_parallax.jpg');
/* Full height */
height: 100%;
/* Create the parallax scrolling effect */
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
</style>
</head>
<body>
<div class="parallax"></div>
<div style="height:1000px;background-color:red;font-size:36px">
Scroll Up and Down this page to see the parallax scrolling effect.
This div is just here to enable scrolling.
Tip: Try to remove the background-attachment property to remove the scrolling effect.
</div>
<div class="parallax"></div>
</body>
</html>
如果我将视差div包含在另一个内部,则效果会完全被破坏。这是代码。
<div class>
<div class="parallax"></div>
</div>
您可以在此处进行此实验:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_parallax_percent
正如我们所看到的,视差效应被彻底摧毁了。但这只发生在以百分比设置视差等级的高度时。如果将parallax类的height属性更改为像素,即使使用额外的div容器,视差效果也会再次开始工作
height: 1000px;
为什么会这样? 有没有办法使用百分比获得视差效果,即使在显示的另一个div元素内?
答案 0 :(得分:2)
这是直截了当的。
为什么它使用px
值而非values
?
这是因为在设置百分比值时,浏览器会根据父级的高度来计算元素的高度,所以你将div包装在heightless
之内,因此height:100%
对div没有影响在那里,但它没有高度,所以它没有出现。
它首先起作用,因为它的父体是height:100%
表示取其父级高度的体,即html也具有height:100%
,它从视口中获取高度。
答案 1 :(得分:1)
很简单。您将<div class="parallax"></div>
的高度设置为没有高度的父<div></div>
的高度。所以,孩子没有高度。
这就是为什么它以像素为单位设置时的工作原理。知道了吗?
如果您需要任何帮助,请输入更多详细信息!
只要你的&#34;为什么&#34; ,这就是答案。