我想创建一个简单的网页,使用2列设计,使用HTML / CSS / Javascript / jQuery的一些组合,其中一列包含带有多个链接的导航菜单,然后单击链接更改内容另一栏。现在最好的办法是什么?
很久以前,我学会了用框架做到这一点,一个框架中的菜单和另一个框架中的内容,以及形式为<a href="something.html" target="name-of-content-area">
的锚标签包围的菜单项。我想这种方式还有可能吗?
有些人建议将菜单和内容区域设为div而不是框架,然后在内容div中放置iframe。然后按照刚才描述的相同方式完成菜单项链接。
还有其他人建议仅使用div - 没有框架或iframe - 并使用Javascript更改内容区域中的内容,即锚标记采用类似<a href="#" onclick=func>
的形式,其中func动态更改内容中的内容区域。
最后,有些人建议仅使用div并在菜单中使用按钮而不是锚标签,并再次使用附加到按钮的Javascript来调整内容区域内容。
我想我错过了更多的选择。是否有一个普遍接受的现代最佳实践,如果它是我列出的那个之一,哪一个,为什么?如果没有一个最佳实践,使用每个替代“好”选项的情况或原因是什么?
答案 0 :(得分:2)
有多种方法可以做到这一点:
选项1和2是不言自明的。 2超过1的优点是书签和浏览器历史记录非常简单。很多人现在正朝着3转向。
这是一个简单的JSFiddle,我把它放在一起作为选项3的一个例子。它很难看,是的,我没有打扰造型。
这是HTML:
<html>
<head>
<title>Two-pane navigation</title>
</head>
<body>
<div id="content">
<div id="navigation">
<h1>Navigation</h1>
<ul>
<li><a href="#page1" class="page-link">Page 1</a></li>
<li><a href="#page2" class="page-link">Page 2</a></li>
</ul>
</div>
<div id="pages">
<div id="page1" class="page">
<h1>Page 1</h1>
<p>This is all the lovely content on page 1.</p>
<p>Let's add a bunch of stuff to make it scroll.</p>
<p style="font-size: 72px">.<br/>.<br/>.<br/>.<br/>.<br/>.</p>
<p>This is at the bottom of the page.</p>
</div>
<div id="page2" class="page">
<h1>Page 2</h1>
<p>This is all the lovely content on page 2.</p>
</div>
</div>
</div>
</body>
</html>
JavaScript(假设加载了JQuery):
$(document).ready(function() {
$(".page-link").on("click", function(e) {
$(".page").fadeOut(250);
setTimeout(function() { $($(e.currentTarget).attr("href")).fadeIn(250); }, 250);
});
});
CSS:
#navigation {
position: fixed;
width: 250px;
height: 100%;
border-right: 1px solid black;
}
#pages {
margin-left: 270px; /* 250px + 20px of actual margin */
}
.page {
position: relative;
display: none;
overflow: scroll;
}
正如@RobG上面所说,浏览器认为它当前都是一页。但是,使用类似JQuery BBQ的内容,可以毫不费力地重新添加(例如,请参阅here)。
为什么选择div超过帧?原因有多种。