下面我将为你提供一个完整的、可以直接运行的仿制 W3School 网页的代码,这个版本包含了:

(图片来源网络,侵删)
- 响应式布局:在手机、平板和电脑上都能良好显示。
- 顶部导航栏:包含 W3School 的 Logo 和主导航链接。
- 侧边栏:包含所有教程的目录,并带有高亮当前页面的功能。
- 区:展示教程内容,包含代码示例和“尝试一下”按钮。
- 底部:包含版权信息和相关链接。
最终效果预览
-
桌面端:
-
移动端 (侧边栏会变成汉堡菜单):
项目结构
为了方便管理,我们建议创建以下文件结构:
w3school-clone/
├── index.html
├── css/
│ └── style.css
└── js/
└── script.js
HTML 代码 (index.html)
这是页面的骨架,包含了导航、侧边栏、主内容和页脚。

(图片来源网络,侵删)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">HTML 教程 - W3School 仿制版</title>
<link rel="stylesheet" href="css/style.css">
<!-- 引入字体图标库,这里使用 Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
</head>
<body>
<!-- 顶部导航栏 -->
<header class="topnav">
<div class="logo">
<a href="index.html">W3Schools</a>
</div>
<nav class="main-nav">
<a href="#" class="active">首页</a>
<a href="#">HTML / CSS</a>
<a href="#">JavaScript</a>
<a href="#">Python</a>
<a href="#">SQL</a>
<a href="#">更多</a>
</nav>
<div class="nav-right">
<a href="#" class="search-icon"><i class="fas fa-search"></i></a>
<a href="#" class="menu-toggle"><i class="fas fa-bars"></i></a>
</div>
</header>
<div class="container">
<!-- 侧边栏 -->
<aside class="sidebar" id="mySidebar">
<div class="sidebar-header">
<a href="javascript:void(0)" class="closebtn" onclick="closeSidebar()">×</a>
<h3>HTML / CSS</h3>
</div>
<ul class="sidebar-menu">
<li><a href="#">HTML 教程</a></li>
<li><a href="#">CSS 教程</a></li>
<li><a href="#">JavaScript 教程</a></li>
<li><a href="#">SQL 教程</a></li>
<li><a href="#">Python 教程</a></li>
<li><a href="#">PHP 教程</a></li>
<li><a href="#">Java 教程</a></li>
<li><a href="#">W3.CSS 教程</a></li>
<li><a href="#">Bootstrap 教程</a></li>
<li><a href="#">React 教程</a></li>
<li><a href="#">MySQL 教程</a></li>
<li><a href="#">NumPy 教程</a></li>
<li><a href="#"> Pandas 教程</a></li>
<li><a href="#">Django 教程</a></li>
</ul>
</aside>
<!-- 主内容区 -->
<main class="main-content">
<article>
<h1>HTML 教程</h1>
<p>HTML 是用来描述网页的一种语言。</p>
<p>HTML 指的是超文本标记语言 (Hyper Text Markup Language)。</p>
<p>HTML 不是一种编程语言,而是一种标记语言 (markup language)。</p>
<p>标记语言是一套标记标签 (markup tag)。</p>
<p>HTML 使用标记标签来描述网页。</p>
<hr>
<h2>HTML 实例</h2>
<p>亲自试一试我们的实例,看看代码是如何工作的!</p>
<div class="example">
<h3>实例</h3>
<div class="example-content">
<p>这是一个段落。</p>
</div>
<a href="#" class="tryit-btn" onclick="openTryIt()"><i class="fas fa-external-link-alt"></i> 尝试一下</a>
</div>
<h2>HTML 参考手册</h2>
<p>在 W3School,您将找到完整的 HTML 标签和属性的参考手册。</p>
<a href="#" class="reference-btn">HTML 标签参考手册</a>
</article>
</main>
</div>
<!-- 页脚 -->
<footer>
<p>© 2025 W3School 仿制版,保留所有权利。</p>
<p>W3School 简体中文版提供了对初学者友好的 Web 技术教程。</p>
</footer>
<!-- 尝试一下的弹出窗口 -->
<div id="tryitModal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeTryIt()">×</span>
<iframe src="tryit.html" frameborder="0"></iframe>
</div>
</div>
<script src="js/script.js"></script>
</body>
</html>
CSS 代码 (css/style.css)
这是页面的样式,让它看起来像 W3School。
/* --- 全局样式 --- */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-size: 16px;
line-height: 1.6;
color: #333;
background-color: #f1f1f1;
}
.container {
display: flex;
max-width: 1200px;
margin: 0 auto;
background-color: #fff;
min-height: calc(100vh - 70px - 40px); /* 减去头部和页脚高度 */
}
a {
text-decoration: none;
color: #04AA6D;
}
a:hover {
color: #00b36b;
}
h1, h2, h3 {
margin-bottom: 15px;
color: #222;
}
hr {
border: 1px solid #ddd;
margin: 20px 0;
}
/* --- 顶部导航栏 --- */
.topnav {
background-color: #04AA6D;
padding: 10px 20px;
display: flex;
justify-content: space-between;
align-items: center;
color: white;
position: sticky;
top: 0;
z-index: 100;
}
.topnav .logo a {
color: white;
font-size: 24px;
font-weight: bold;
}
.topnav .main-nav a {
color: white;
padding: 8px 16px;
text-decoration: none;
border-radius: 4px;
margin: 0 5px;
}
.topnav .main-nav a.active, .topnav .main-nav a:hover {
background-color: #00b36b;
}
.topnav .nav-right a {
color: white;
padding: 8px;
margin-left: 10px;
}
/* --- 侧边栏 --- */
.sidebar {
width: 250px;
background-color: #f1f1f1;
padding: 20px;
overflow-y: auto; /* 内容过长时出现滚动条 */
height: 100%;
}
.sidebar-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.sidebar-header .closebtn {
font-size: 28px;
cursor: pointer;
}
.sidebar-header h3 {
color: #04AA6D;
}
.sidebar-menu {
list-style-type: none;
}
.sidebar-menu li {
margin-bottom: 10px;
}
.sidebar-menu a {
color: #333;
padding: 10px;
display: block;
border-radius: 4px;
}
.sidebar-menu a:hover, .sidebar-menu a.active {
background-color: #ddd;
color: #04AA6D;
}
/* --- 主内容区 --- */
.main-content {
flex: 1;
padding: 20px;
overflow-y: auto; /* 内容过长时出现滚动条 */
}
.main-content article {
max-width: 800px;
margin: 0 auto;
}
/* --- 代码示例和按钮 --- */
.example {
background-color: #f8f9fa;
border-left: 4px solid #04AA6D;
padding: 15px;
margin: 20px 0;
}
.example h3 {
margin-top: 0;
margin-bottom: 10px;
color: #444;
}
.example-content {
background-color: #fff;
padding: 15px;
border: 1px solid #ddd;
margin-bottom: 10px;
font-family: 'Courier New', Courier, monospace;
}
.tryit-btn, .reference-btn {
display: inline-block;
background-color: #04AA6D;
color: white;
padding: 10px 20px;
border-radius: 4px;
border: none;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s;
}
.tryit-btn:hover, .reference-btn:hover {
background-color: #00b36b;
}
/* --- 页脚 --- */
footer {
background-color: #f8f9fa;
text-align: center;
padding: 20px;
color: #666;
font-size: 14px;
}
/* --- 弹出窗口 --- */
.modal {
display: none;
position: fixed;
z-index: 1000;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.5);
overflow: auto;
}
.modal-content {
background-color: #fefefe;
margin: 5% auto;
padding: 0;
border: 1px solid #888;
width: 80%;
max-width: 900px;
border-radius: 5px;
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
.modal-content iframe {
width: 100%;
height: 500px;
border: none;
display: block;
}
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
cursor: pointer;
}
.close:hover,
.close:focus {
color: black;
text-decoration: none;
}
/* --- 响应式设计 --- */
@media (max-width: 768px) {
.container {
flex-direction: column;
}
.sidebar {
width: 100%;
height: auto;
position: fixed;
top: 60px;
left: -250px; /* 默认隐藏 */
transition: 0.3s;
z-index: 999;
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}
.main-content {
margin-left: 0;
}
.main-nav {
display: none; /* 在移动端隐藏主导航 */
}
}
JavaScript 代码 (js/script.js)
用于处理移动端菜单的开关和“尝试一下”弹窗。
// 移动端侧边栏开关
function openSidebar() {
document.getElementById("mySidebar").style.left = "0";
}
function closeSidebar() {
document.getElementById("mySidebar").style.left = "-250px";
}
// “尝试一下”弹窗
function openTryIt() {
document.getElementById("tryitModal").style.display = "block";
}
function closeTryIt() {
document.getElementById("tryitModal").style.display = "none";
}
// 点击弹窗外部区域关闭弹窗
window.onclick = function(event) {
const modal = document.getElementById("tryitModal");
if (event.target == modal) {
modal.style.display = "none";
}
}
// 为菜单切换按钮添加点击事件
document.querySelector('.menu-toggle').addEventListener('click', openSidebar);
“尝试一下”功能页面 (tryit.html)
为了让“尝试一下”按钮真正可用,我们需要创建一个简单的 tryit.html 文件,这个页面将包含一个代码编辑器(左右分栏)和一个预览区。
文件路径: w3school-clone/tryit.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">尝试一下 - W3School 仿制版</title>
<style>
body { margin: 0; font-family: sans-serif; }
.try-container {
display: flex;
height: 100vh;
}
.try-editor {
flex: 1;
display: flex;
flex-direction: column;
border-right: 1px solid #ccc;
}
.try-output {
flex: 1;
}
.try-textarea {
width: 100%;
height: 100%;
padding: 10px;
font-family: 'Courier New', Courier, monospace;
font-size: 14px;
border: none;
resize: none;
outline: none;
}
.try-iframe {
width: 100%;
height: 100%;
border: none;
}
</style>
</head>
<body>
<div class="try-container">
<div class="try-editor">
<textarea id="code" class="try-textarea" spellcheck="false"><!DOCTYPE html>
<html>
<body>
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
</body>
</html></textarea>
</div>
<div class="try-output">
<iframe id="output" class="try-iframe"></iframe>
</div>
</div>
<script>
function updateOutput() {
const code = document.getElementById("code").value;
const output = document.getElementById("output").contentWindow.document;
output.open();
output.write(code);
output.close();
}
// 页面加载时执行一次
window.onload = updateOutput;
// 每次输入框内容变化时更新
document.getElementById("code").oninput = updateOutput;
</script>
</body>
</html>
如何运行
- 将以上代码分别保存到对应的文件中。
- 确保所有文件都在同一个
w3school-clone文件夹下。 - 用浏览器(如 Chrome, Firefox, Edge)打开
index.html文件。
你就可以看到一个功能完整、样式经典的 W3School 仿制网页了!你可以在此基础上进行扩展,比如添加更多的教程页面、实现更复杂的交互效果等。
