如何添加固定工具栏snap.js
How to add fixed toolbar snap.js
我在将固定的 header 添加到 snap.js 时遇到了一些问题,这是我目前所拥有的:
<div class="snap-drawers">
<div class="snap-drawer snap-drawer-left">
<div>
<h4>My App</h4>
<ul>
<li><a href="/#/">Nav 1</a></li>
<li><a href="/#/">Nav 2</a></li>
<li><a href="/#/">Nav 3</a></li>
</ul>
</div>
</div>
<div class="snap-drawer snap-drawer-right"></div>
</div>
<div id="content" class="snap-content">
<div style="height:1000px">
</div>
</div>
<div id="toolbar">
<div>
<a href="#" id="open-left"></a>
<h1>My Toolbar</h1>
</div>
<div id="navbar">
<h1>My Navbar</h1>
</div>
</div>
工作示例https://jsfiddle.net/2bg2jrs5/
根据这个问题 https://github.com/jakiestfu/Snap.js/issues/47 我只能通过将固定的 header 移出 snap-content 容器来让它工作。但是现在 header 不会与左侧抽屉的其余部分一起滑动 'in sync'(参见示例)。
您只需将 #toolbar
移动到 #container
内,如下所示:
<div id="content" class="snap-content">
<div id="toolbar">
<div>
<a href="#" id="open-left"></a>
<h1>My Toolbar</h1>
</div>
<div id="navbar">
<h1>My Navbar</h1>
</div>
</div>
<div style="height:1000px">
</div>
</div>
检查fiddle:https://jsfiddle.net/ano8g6en/1/
事实证明,您需要将工具栏放在 snap-content 容器之外才能使其真正 固定 定位。问题是工具栏不再与抽屉一起拖动,这在 GitHub 问题中得到确认。因此,我编写了一些 js 修复程序,以根据需要将工具栏移入和移出 snap-content 容器。
var snapper = new Snap({
element: document.getElementById('content'),
disable: 'right',
hyperextensible: false
});
/* fixed header fix */
snapper.on('start', function () {
if (snapper.state().state !== "left")
document.getElementById('content').appendChild(document.getElementById('toolbar'));
});
snapper.on('animated', function () {
if (snapper.state().state !== "left")
document.getElementsByTagName('body')[0].appendChild(document.getElementById('toolbar'));
});
/* end fixed header fix */
已更新 fiddle https://jsfiddle.net/2bg2jrs5/1/
我在将固定的 header 添加到 snap.js 时遇到了一些问题,这是我目前所拥有的:
<div class="snap-drawers">
<div class="snap-drawer snap-drawer-left">
<div>
<h4>My App</h4>
<ul>
<li><a href="/#/">Nav 1</a></li>
<li><a href="/#/">Nav 2</a></li>
<li><a href="/#/">Nav 3</a></li>
</ul>
</div>
</div>
<div class="snap-drawer snap-drawer-right"></div>
</div>
<div id="content" class="snap-content">
<div style="height:1000px">
</div>
</div>
<div id="toolbar">
<div>
<a href="#" id="open-left"></a>
<h1>My Toolbar</h1>
</div>
<div id="navbar">
<h1>My Navbar</h1>
</div>
</div>
工作示例https://jsfiddle.net/2bg2jrs5/
根据这个问题 https://github.com/jakiestfu/Snap.js/issues/47 我只能通过将固定的 header 移出 snap-content 容器来让它工作。但是现在 header 不会与左侧抽屉的其余部分一起滑动 'in sync'(参见示例)。
您只需将 #toolbar
移动到 #container
内,如下所示:
<div id="content" class="snap-content">
<div id="toolbar">
<div>
<a href="#" id="open-left"></a>
<h1>My Toolbar</h1>
</div>
<div id="navbar">
<h1>My Navbar</h1>
</div>
</div>
<div style="height:1000px">
</div>
</div>
检查fiddle:https://jsfiddle.net/ano8g6en/1/
事实证明,您需要将工具栏放在 snap-content 容器之外才能使其真正 固定 定位。问题是工具栏不再与抽屉一起拖动,这在 GitHub 问题中得到确认。因此,我编写了一些 js 修复程序,以根据需要将工具栏移入和移出 snap-content 容器。
var snapper = new Snap({
element: document.getElementById('content'),
disable: 'right',
hyperextensible: false
});
/* fixed header fix */
snapper.on('start', function () {
if (snapper.state().state !== "left")
document.getElementById('content').appendChild(document.getElementById('toolbar'));
});
snapper.on('animated', function () {
if (snapper.state().state !== "left")
document.getElementsByTagName('body')[0].appendChild(document.getElementById('toolbar'));
});
/* end fixed header fix */
已更新 fiddle https://jsfiddle.net/2bg2jrs5/1/