html - 了解为什么纯 CSS 视差效果适用于 div,但不适用于 body 标签?

标签 html css parallax css-transforms

我试图理解 Keith Clark 在他的网站上演示的纯 CSS 视差效果 in this article .

使用这两个 jsFiddle:CSS Parallax with divCSS Parallax with body .

第一个像描述的那样工作,第二个没有 - 并且没有出现视差效果。这两个文档之间的唯一区别是第一个文档缺少具有以下属性的中间 div.parallax 标记:

.parallax {
      perspective: 1px;
      height: 800px;
      overflow-x: hidden;
      overflow-y: auto;
      background-color:rgba(0,0,0,0.25);
 }

而第二个删除此标记并将上述样式添加到正文中:

body {
      perspective: 1px;
      height: 800px;
      overflow-x: hidden;
      overflow-y: auto;
      background-color:rgba(0,0,0,0.25);
 }

谁能告诉我为什么会这样?为什么我的文档中需要一个看似多余的标签才能产生这种效果?为什么 body 元素不能充当 div.parallax 容器元素?

最佳答案

这是因为 body 上 overflow 的值被转移到根元素,使 body 具有默认的 overflow: visible 并破坏了转换。参见 this section规范。

在根元素上设置 overflow: hidden 将防止这种行为并允许 body 充当容器。

关于html - 了解为什么纯 CSS 视差效果适用于 div,但不适用于 body 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27587751/

相关文章:

html - 嵌套容器中的整页宽度规则

html - 如何让 TFOOT 只显示在表格的末尾

javascript - 替代/替代 queryCommandState ('bold' )

html - css 图像蒙版覆盖

ios - 适用于iOS视差效果的最佳第三方库?

ios - UITextView 的视差效果使顶部的 UIImageView 在 Swift 中缩小并消失

jquery - Div inside div,背景大小调整不起作用(使用视差效果)?

javascript - 为什么 .trim() 不能与我一起使用?

html - 仅选择 div 中的第一个和最后一个链接

css - 如何设置输入宽度以匹配占位符文本宽度