将每个选项卡实现为不同的 HTML 层并让按钮控制哪个层显示在顶部会更好吗?按下选项卡按钮时动态(重新)生成 HTML 会更好吗?
我倾向于生成一次内容并按需显示/隐藏它,特别是如果大部分工作是在浏览器中完成的,并且在与页面上的元素交互时没有向服务器发出同步请求。见脚注 1
显示选项卡的内容时...
假设每个选项卡的内容生成速度很快,您可以通过仅在第一次请求选项卡时为其创建内容来提高应用程序的效率。这样,如果从未访问过该选项卡,则不会使用任何资源。
隐藏选项卡的内容时...
使用多媒体时,您可能需要在隐藏内容时执行其他操作。例如,视频不会因为您隐藏它而停止播放。对于您的音频应用程序,您可能需要停止播放当前序列。
有许多选项卡控件可用,例如jQuery UI 选项卡(免费)和滑动选项卡(许可但价格低廉)。
其他场景
选项卡应该用于在主要内容块之间切换,例如文档(例如浏览器选项卡)和/或经常使用的功能(例如,具有联系信息选项卡和工作历史选项卡的人事表格)。其他场景可能更适合对话(模态或非模态)。
使用音频示例,如果您有一个标有“节奏”的按钮,我希望它会在我当前视图的顶部打开一个小对话框窗口,而不是将我带到一个新选项卡。Roland 的工作站键盘使用这种范例。主要内容替换当前视图,但设置/配置窗口通常会在现有视图顶部弹出。
jQuery UI也有一个用于此目的的对话框插件。如果您精通 JavaScript 并针对较新的浏览器,编写自己的简单对话框并不难。
1 对于交互式客户端-服务器关系,动态生成内容可能仍然是完全可以接受的,但它引入了额外的考虑,例如将浏览器中的内容与服务器上的数据模型(如果有)同步,提交不需要的表单字段(增加请求的大小)、整体页面大小等。