先讲透三大技术,再逐行拆解百度首页仿制源码
—— 本文既是入门教科书,也是案头工具书


目录

  1. HTML:网页的骨骼

  2. CSS:网页的皮肤与妆容

  3. JavaScript:网页的肌肉与神经

  4. 实战:百度首页极简仿制

  5. 下一步学习路线

1. HTML:网页的骨骼

定义:HTML(HyperText Markup Language)是一套标记语言,用于描述网页的结构语义
核心关键词:语义化、可访问性、SEO、层级树(DOM Tree)。

1.1 最小可运行 HTML 骨架

HTML

预览

复制

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>示例页面</title>
  </head>
  <body>
    <h1>你好,HTML</h1>
    <p>这是一段<strong>强调</strong>文本。</p>
  </body>
</html>

1.2 标签、属性、元素三件套

表格

复制

名称 说明 示例
标签 (Tag) 由 < 和 > 包围的关键词 <p>
属性 (Attribute) 修饰标签的键值对 <img src="a.png" alt="描述">
元素 (Element) 标签 + 属性 + 内容 <p class="text">内容</p>

1.3 最常用的 12 组标签速查表

表格

复制

标签 语义 常见属性 注意点
<div> 无语义容器 classid 默认块级,换行
<span> 无语义文本 classid 默认行内,不换行
<h1>~<h6> 分级标题 一个页面最好只有一个 <h1>
<p> 段落 自动上下 margin
<a> 超链接 hreftarget href="#" 会跳到页面顶部
<img> 图片 srcaltwidthheight 自闭合,无结束标签
<ul> / <ol> / <li> 无序 / 有序 / 列表项 typestart 直接子级只能是 <li>
<nav> 导航区域 提升可访问性
<header> / <footer> 页头 / 页脚 可多次出现,不仅限于页面级
<section> / <article> 区块 / 文章 对 SEO 友好
<form> / <input> / <label> 表单组合 actionmethodfor 配合 name 才能提交数据
<meta> 元信息 charsetnamecontent 写在 <head>

1.4 HTML 语义化与可访问性

  • 语义化 = 用正确的标签表达正确的含义
    例:用 <button> 而不是 <div class="btn">,用 <nav> 而不是 <div class="nav">

  • 可访问性 (a11y) = 让残障用户也能顺畅浏览
    例:所有图形必须有 alt;表单输入要有 <label>;颜色不能是传达信息的唯一手段。


<a name="css">

2. CSS:网页的皮肤与妆容

定义:CSS(Cascading Style Sheets)负责样式布局
核心关键词:选择器、层叠、盒模型、Flexbox、Grid、动画。

2.1 语法骨架

css

复制

选择器 {
  属性: 值;
  /* 注释写法 */
}

2.2 选择器大全

表格

复制

类型 示例 描述
元素选择器 p { } 选所有 <p>
类选择器 .menu { } 选 class="menu"
ID 选择器 #logo { } 选 id="logo"(唯一)
属性选择器 [type="text"] { } 选 type 为 text 的元素
伪类 a:hover { } 鼠标悬停状态
伪元素 p::before { } 在 <p> 前插入内容
组合器 ul > li 直接子级选择器

2.3 盒模型(Box Model)

复制

       ┌------------------------┐
       │        Margin          │
       │  ┌------------------┐  │
       │  │     Border       │  │
       │  │  ┌------------┐  │  │
       │  │  │   Padding  │  │  │
       │  │  │  ┌------┐  │  │  │
       │  │  │  │Content  │  │  │
       │  │  │  └------┘  │  │  │
       │  │  └------------┘  │  │
       │  └------------------┘  │
       └------------------------┘
  • content → 实际内容

  • padding → 内边距(透明)

  • border → 边框

  • margin → 外边距(透明,可负值)

2.4 布局双雄:Flexbox vs Grid

表格

复制

维度 Flexbox Grid
维度 1 维(行或列) 2 维(行 + 列)
适用 组件级 页面级
关键属性 display:flex + justify-content / align-items display:grid + grid-template-columns

2.5 过渡与动画

css

复制

button {
  background: #4e6ef2;
  transition: background .3s ease;
}
button:hover {
  background: #315efb;
}
  • transition:两帧之间平滑过渡

  • @keyframes:多帧动画


<a name="javascript">

3. JavaScript:网页的肌肉与神经

定义:JavaScript 让网页可交互
核心关键词:变量、函数、事件、DOM、异步、模块化。

3.1 语言基石

表格

复制

概念 示例 说明
let / const const name = 'baidu'; 块级作用域,避免 var 提升
模板字符串 Hello ${name} 支持换行与插值
箭头函数 () => {} 词法 this,简洁写法
解构赋值 const { a, b } = obj; 快速提取属性
模块导入 import style from './index.css'; ES Modules

3.2 DOM 操作三步曲

  1. 选中元素

    JavaScript

    复制

    const el = document.querySelector('.btn');
  2. 监听事件

    JavaScript

    复制

    el.addEventListener('click', handler);
  3. 修改内容 / 样式

    JavaScript

    复制

    el.textContent = '已登录';
    el.style.backgroundColor = '#0f0';

3.3 事件流(捕获 → 目标 → 冒泡)

复制

window   document   <html>   <body>   <div>   <button>
   ↑        ↑          ↑        ↑        ↑        ↑
捕获阶段 → 目标阶段 → 冒泡阶段
  • event.stopPropagation() 阻止冒泡

  • event.preventDefault() 阻止默认行为(如 <a> 跳转)

3.4 异步编程

表格

复制

方式 示例 场景
回调 fs.readFile(cb) 容易回调地狱
Promise fetch(url).then(res => res.json()) 链式调用
async/await const data = await fetch(url) 同步写法,异步执行

<a name="实战">

4. 实战:百度首页极简仿制

在掌握 HTML、CSS、JavaScript 的宏观概念后,我们用一个示例,把知识点落到指尖。

4.1 文件结构

复制

baidu-clone-demo/
├─ index.html
├─ css/index.css
└─ img/
   ├─ baidu.png
   └─ ai.png

4.2 HTML 源码 + 逐行注释

HTML

预览

复制

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <!-- 1. 字符编码 -->
    <meta charset="UTF-8">
    <!-- 2. 移动端视口 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>仿写百度首页</title>
    <!-- 3. 外链样式 -->
    <link rel="stylesheet" href="css/index.css">
  </head>
  <body>
    <!-- 4. 顶部导航 -->
    <nav class="menu">
      <ul>
        <li>新闻</li>
        <li>地图</li>
        <li>网盘</li>
        <li>
          <img src="img/ai.png" alt="AI图标" width="14" height="14">
        </li>
        <li>更多</li>
      </ul>
      <div class="btn">
        <span class="set">设置</span>
        <span class="login">登录</span>
      </div>
    </nav>

    <!-- 5. Logo 区域 -->
    <div class="imgbox">
      <img src="img/baidu.png" alt="百度logo" width="270">
    </div>

    <!-- 6. 交互脚本 -->
    <script src="js/index.js"></script>
  </body>
</html>

4.3 CSS 源码 + 逐条注释

css

复制

/* === 重置 === */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* === 顶部导航 === */
.menu {
  display: flex;               /* Flexbox 布局 */
  align-items: center;         /* 垂直居中 */
  justify-content: space-between;
  padding: 16px 24px;
  font-size: 13px;
}

.menu ul {
  display: flex;               /* 横向排列 li */
  list-style: none;
  gap: 22px;                   /* 间距 */
}

.menu a {
  color: #333;
  text-decoration: none;
}

.menu a:hover {
  color: #1e50a2;
}

/* === 按钮 === */
.btn .login {
  background: #4e6ef2;
  color: #fff;
  padding: 4px 10px;
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.2s;
}

.btn .login:hover {
  background: #315efb;
}

/* === Logo 居中 === */
.imgbox {
  text-align: center;
  margin-top: 120px;
}

5下一步学习路线

表格

复制

阶段 关键词 推荐资源
语义化 & SEO <nav><section>、meta 标签 Google SEO Starter Guide
布局进阶 Grid、响应式、媒体查询 Grid Garden
性能优化 Critical CSS、懒加载、压缩 web.dev/fast
无障碍 ARIA、键盘导航 a11y-101.com
现代工具链 Vite、TypeScript、ESLint Vite 官方文档

当你能看懂每一行代码的「为什么」时,前端的大门才算真正推开。祝你编码愉快!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐