本文目录导读:
的布局,而不使用 iframe,可以通过 HTML、CSS 和 JavaScript 来完成,以下是一个基本的实现方案:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>左侧导航栏点击右侧显示内容</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="container"> <div class="sidebar"> <ul> <li><a href="#" data-content="page1">页面 1</a></li> <li><a href="#" data-content="page2">页面 2</a></li> <li><a href="#" data-content="page3">页面 3</a></li> </ul> </div> <div class="content"> <div id="page1" class="page">这是页面 1 的内容。</div> <div id="page2" class="page">这是页面 2 的内容。</div> <div id="page3" class="page">这是页面 3 的内容。</div> </div> </div> <script src="script.js"></script> </body> </html>
/* styles.css */ body { font-family: Arial, sans-serif; margin: 0; padding: 0; } .container { display: flex; height: 100vh; } .sidebar { width: 200px; background-color: #333; color: white; padding: 20px; } .sidebar ul { list-style-type: none; padding: 0; } .sidebar li { margin-bottom: 10px; } .sidebar a { color: white; text-decoration: none; } .sidebar a:hover { text-decoration: underline; } .content { flex-grow: 1; padding: 20px; overflow-y: auto; } .page { display: none; } .page.active { display: block; }
// script.js document.addEventListener('DOMContentLoaded', function() { const links = document.querySelectorAll('.sidebar a'); const pages = document.querySelectorAll('.page'); links.forEach(link => { link.addEventListener('click', function(event) { event.preventDefault(); const contentId = this.getAttribute('data-content'); pages.forEach(page => { page.classList.remove('active'); }); document.getElementById(contentId).classList.add('active'); }); }); // 默认显示第一个页面内容 if (pages.length > 0) { pages[0].classList.add('active'); } });
1、HTML 结构:
- 使用一个div
容器包含两个子div
,一个作为导航栏(sidebar),另一个作为内容显示区(content)。
- 导航栏内有一个无序列表,每个列表项包含一个链接,链接的data-content
属性指向对应内容的id
。
- 内容显示区包含多个div
,每个div
代表一个页面内容,初始时都隐藏(通过 CSS 控制)。
2、CSS 样式:
- 使用 Flexbox 布局将导航栏和内容显示区并排显示。
- 导航栏设置固定宽度和背景颜色,内容显示区占据剩余空间。
- 使用.page
类隐藏所有页面内容,使用.active
类显示当前页面内容。
3、JavaScript 逻辑:
- 监听所有导航链接的点击事件,阻止默认行为(即页面跳转)。
- 根据点击的链接的data-content
属性找到对应的内容div
,并显示它(添加.active
类)。
- 隐藏其他所有页面内容(移除.active
类)。
- 页面加载时默认显示第一个页面内容。
这样,你就可以实现一个左侧导航栏点击后右侧显示对应内容的布局,而无需使用 iframe。