继CSS3 动画在页面滚动时打破固定定位之后,我创建了一个测试用例(仅限 webkit)。代码也在下面复制。
我想要的是一个固定的标题和相对定位的内容。内容相对定位的原因是因为段落内部有一些元素是绝对定位的;虽然我在这个例子中省略了它们。
当然,添加position:relative
到<p>
(没有 a z-index
)会导致内容堆叠在不希望的标题顶部。即如果CSS只是
#header {
background-color:#f00;
height:50px;
width:100px;
position:fixed;
}
p {
width:100px;
padding-top:50px;
position:relative;
}
然后文本在标题上可见。所以我们z-index:1
在标题中添加一个来解决这个问题。但是,这仍然没有解决旋转图像溢出标题的问题。我会认为一个简单overflow:hidden
的标题会起作用。似乎直到页面滚动,固定标题也滚动。
它似乎是 and 的存在z:index
,overflow:hidden
虽然auto
andscroll
也破坏了布局,我想知道为什么?
z-index:1
我可以在标题上使用 a而不是在标题z-index:-1
上,<p>
但这仍然不能解释为什么z:index
,overflow
和 CSS3 动画的组合会导致固定标题滚动。
最后(当然)删除可怕的旋转动画使标题按预期固定。请注意,我永远不会在页面上显示该动画,它只是为了突出问题:-)
显示问题的代码(仅适用于 webkit 浏览器)
HTML
<div id="header">
<div id="spinner"></div>
</div>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit essecillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br/>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit essecillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
CSS
body, p {
margin:0;
}
#header {
background-color:#f00;
height:50px;
width:100px;
position:fixed;
z-index:1;
overflow:hidden;
}
#spinner {
background:url(http://lorempixel.com/40/40/abstract/1/);
height:44px;
width:44px;
margin:2px 0 0 2px;
-webkit-animation: spin 2s infinite linear;
}
@-webkit-keyframes spin {
0% {-webkit-transform:rotate(0deg)}
50% {-webkit-transform:rotate(720deg)}
100%{-webkit-transform:rotate(1440deg)}
}
p {
width:100px;
padding-top:50px;
position:relative;
}