我有一个隐藏在主页内容后面的菜单的页面。单击按钮时,内容 ( #container
) 向左滑动,显示菜单。
<div id="container">
<button onclick="toggleNavState()">NAV TOGGLE</button>
<div id="footer">FOOTER</div>
</div>
<div id="side_nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="xxxxx">xxxxxxxxx</a></li>
<li><a href="xxxxx">xxxxxxxxx</a></li>
<li><a href="xxxxx">xxxxxxxxx</a></li>
<li><a href="xxxxx">xxxxxxxxx</a></li>
<li><a href="xxxxx">xxxxxxxxx</a></li>
<li><a href="xxxxx">xxxxxxxxx</a></li>
</ul>
<script type="text/javascript">
function toggleNavState() {
elem = document.getElementById("container");
var className1 = 'active';
var className2 = 'inactive';
elem.className = (elem.className == className1)?className2:className1;
}
#container {
width: 100%;
max-width: 100%;
height: 100%;
min-height: 520px;
position: absolute;
z-index: 1;
-webkit-transition: all 0.2s ease-out;
box-shadow: 0 0 20px #000;
background: #FFF;
}
#container.active {
right: 250px;
}
#footer {
width: 100%;;
position: fixed;
bottom: 0;
}
我在一些网站上使用过这种技术,效果很好。当我尝试添加固定页脚时出现问题。
当页脚向左滑动时,页脚应该保持固定,#container
并且它在我测试过的所有浏览器中都是如此,除了 Mobile Safari 和 Safari。
如果页脚中有一个block
级别元素,#container
则似乎是相对于视口定位的。如果block
元素被删除,它工作正常。
没有块元素:
使用块元素:
我怀疑这是一个重新绘制问题,因为当屏幕滚动到底部(MobileSafari)或调整大小(Safari)时,页脚会重新回到#container
.
此外,使用Darcy Murphy 先生的技术强制重绘也会导致页脚快速回到正确位置。
以下示例仅适用于在 Safari 中查看。您不会在其他浏览器中看到该问题。
任何人都可以解释为什么会这样吗?