目录

  1. 第一章:基础入门

    html与css经典网页实例教程
    (图片来源网络,侵删)
    • 1 你好,世界!——第一个HTML页面
    • 2 网页的骨架——HTML基本结构
    • 3 美化你的网页——CSS初体验
    • 4 经典案例一:个人简历页面
  2. 第二章:CSS核心布局

    • 1 盒子模型——理解CSS布局基石
    • 2 浮动与清除——经典多列布局
    • 3 定位——元素的精确定位
    • 4 经典案例二:企业官网首页布局
  3. 第三章:现代布局与响应式设计

    • 1 Flexbox(弹性盒模型)——一维布局神器
    • 2 Grid(网格布局)——二维布局王者
    • 3 媒体查询——实现响应式设计
    • 4 经典案例三:响应式作品集网站
  4. 第四章:进阶与美化

    • 1 变换与过渡——让网页动起来
    • 2 列表与导航栏美化
    • 3 表单美化
    • 4 经典案例四:带动画效果的登录页面
  5. 第五章:综合实战

    html与css经典网页实例教程
    (图片来源网络,侵删)
    • 1 项目:模仿一个知名网站(如:知乎、豆瓣)
    • 2 开发流程与最佳实践

第一章:基础入门

1 你好,世界!——第一个HTML页面

这是所有编程语言的传统第一步,让我们创建一个最简单的网页。

目标: 在浏览器中显示 "Hello, World!"。

代码 (index.html):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">我的第一个网页</title>
</head>
<body>
    <h1>Hello, World!</h1>
    <p>欢迎来到网页开发的世界。</p>
</body>
</html>

如何运行:

html与css经典网页实例教程
(图片来源网络,侵删)
  1. 将上述代码复制到一个文本编辑器中(如 VS Code, Sublime Text, 或记事本)。
  2. 保存文件,并将其后缀名改为 .htmlindex.html)。
  3. 用任何浏览器(如 Chrome, Firefox)打开这个文件。

讲解:

  • <!DOCTYPE html>:声明文档类型,告诉浏览器这是一个HTML5文档。
  • <html>:根元素,包裹整个页面的内容。
  • <head>:头部,包含页面的元数据(如标题、字符编码、引入的CSS/JS文件等),不会直接显示在页面上。
  • <title>,会显示在浏览器标签页上。
  • <body>:主体,包含所有在浏览器窗口中可见的内容。
  • <h1>,最重要的标题。
  • <p>:段落标签。

3 美化你的网页——CSS初体验

HTML负责结构,CSS负责样式,让我们给上面的页面加上颜色和字体。

目标: 将标题变成红色,段落文字居中。

代码 (index.html):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">我的第一个网页</title>
    <!-- 在这里引入CSS -->
    <style>
        /* 这是CSS注释 */
        h1 {
            color: red; /* 文字颜色 */
        }
        p {
            text-align: center; /* 文本居中 */
            font-family: "Microsoft YaHei", sans-serif; /* 字体 */
        }
    </style>
</head>
<body>
    <h1>Hello, World!</h1>
    <p>欢迎来到网页开发的世界。</p>
</body>
</html>

讲解:

  • <style> 标签:在 <head> 内部使用,用于编写CSS代码。
  • CSS选择器h1p 就是选择器,告诉浏览器要给哪个标签添加样式。
  • CSS声明块:花括号 内部的代码是声明块。
  • CSS属性color, text-align, font-family 都是属性。
  • CSS值red, center, "Microsoft YaHei" 等是属性的值。

4 经典案例一:个人简历页面

目标: 创建一个包含个人信息、教育背景、技能和项目经验的简历页面。

HTML结构 (resume.html):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">张三的个人简历</title>
    <style>
        /* 1. 全局样式 */
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            margin: 0;
            background-color: #f4f4f4;
            color: #333;
        }
        .container {
            width: 80%;
            margin: 20px auto;
            background-color: #fff;
            padding: 20px;
            border: 1px solid #ddd;
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
        }
        h1, h2 {
            color: #0056b3;
        }
        /* 2. 头部样式 */
        header {
            text-align: center;
            border-bottom: 1px solid #eee;
            padding-bottom: 10px;
            margin-bottom: 20px;
        }
        /* 3. 内容区域样式 */
        section {
            margin-bottom: 20px;
        }
        /* 4. 列表样式 */
        ul {
            list-style-type: square; /* 将默认圆点改为方块 */
        }
        /* 5. 链接样式 */
        a {
            color: #007bff;
            text-decoration: none;
        }
        a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1>张三</h1>
            <p>前端开发工程师 | 电话: 138-xxxx-xxxx | 邮箱: zhangsan@email.com</p>
        </header>
        <section id="about">
            <h2>个人简介</h2>
            <p>我是一名充满热情的前端开发工程师,拥有3年的Web开发经验,我热爱学习新技术,致力于创建用户友好、性能卓越的Web应用。</p>
        </section>
        <section id="skills">
            <h2>技能</h2>
            <ul>
                <li>HTML5, CSS3, JavaScript (ES6+)</li>
                <li>熟练使用Flexbox和Grid进行布局</li>
                <li>熟悉Vue.js/React框架</li>
                <li>了解Webpack等构建工具</li>
            </ul>
        </section>
        <section id="experience">
            <h2>工作经历</h2>
            <h3>ABC科技有限公司 - 前端开发工程师 (2025 - 至今)</h3>
            <p>负责公司官网和内部管理系统的前端开发与维护,优化了页面加载速度,提升了用户体验。</p>
        </section>
    </div>
</body>
</html>

这个案例学到了什么?

  • 语义化标签<header>, <section>,让HTML结构更清晰。
  • 类选择器.container,通过 class 属性来精确地给特定元素添加样式。
  • ID选择器#about,通过 id 属性来唯一标识一个元素,通常用于锚点链接。
  • 后代选择器header h1,选择 header 内部的所有 h1
  • 伪类选择器a:hover,当鼠标悬停在链接上时应用的样式。

第二章:CSS核心布局

1 盒子模型

理解盒子模型是CSS布局的核心,每个HTML元素都可以看作一个盒子,它包含:

  • Content (内容):文本、图片等。
  • Padding (内边距)与边框之间的空间。
  • Border (边框):盒子边缘的线。
  • Margin (外边距):盒子与其他盒子之间的空间。

实例:

.box {
    width: 200px;
    height: 200px;
    padding: 20px;
    border: 5px solid black;
    margin: 10px;
    background-color: lightblue;
}

这个盒子的总宽度 = width (200) + padding (202) + border (52) = 250px。

2 浮动与清除

浮动是早期实现多列布局的主要方式。

目标: 创建一个两列布局。

HTML:

<div class="container">
    <div class="sidebar">侧边栏</div>
    <div class="main-content">主要内容区域</div>
</div>

CSS:

.container {
    width: 100%;
}
.sidebar {
    width: 25%;
    float: left;
    background-color: #f0f0f0;
    padding: 10px;
}
.main-content {
    width: 75%;
    float: left;
    background-color: #e0e0e0;
    padding: 10px;
}
/* 清除浮动,防止父容器高度塌陷 */
.container::after {
    content: "";
    display: block;
    clear: both;
}

讲解:

  • float: left;:让元素向左浮动,脱离正常的文档流,允许其他元素(如文字、其他浮动元素)环绕它。
  • clear: both;:清除左右两侧的浮动,防止元素被浮动元素影响。

4 经典案例二:企业官网首页布局

这个案例将综合运用盒子模型、浮动和定位,创建一个包含头部、导航、主内容区、侧边栏和底部的经典网站布局。

HTML结构 (company.html):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">某某科技有限公司</title>
    <style>
        /* 重置默认样式 */
        * { margin: 0; padding: 0; box-sizing: border-box; }
        body { font-family: "Microsoft YaHei", sans-serif; }
        .wrapper {
            width: 1000px;
            margin: 0 auto;
            background-color: #fff;
        }
        /* 头部 */
        header {
            background-color: #333;
            color: white;
            text-align: center;
            padding: 20px;
        }
        /* 导航 */
        nav {
            background-color: #444;
            overflow: hidden; /* 清除浮动 */
        }
        nav a {
            float: left;
            display: block;
            color: white;
            text-align: center;
            padding: 14px 16px;
            text-decoration: none;
        }
        nav a:hover { background-color: #555; }
        /* 主内容区 */
        .main-content {
            padding: 20px;
            overflow: hidden; /* 清除浮动 */
        }
        .article {
            float: left;
            width: 70%;
            padding: 20px;
            background-color: #f9f9f9;
        }
        /* 侧边栏 */
        .aside {
            float: right;
            width: 25%;
            padding: 20px;
            background-color: #e9e9e9;
        }
        /* 底部 */
        footer {
            background-color: #333;
            color: white;
            text-align: center;
            padding: 10px;
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <header>
            <h1>某某科技有限公司</h1>
        </header>
        <nav>
            <a href="#">首页</a>
            <a href="#">关于我们</a>
            <a href="#">产品服务</a>
            <a href="#">联系我们</a>
        </nav>
        <div class="main-content">
            <div class="article">
                <h2>公司新闻</h2>
                <p>这里是公司的最新动态和新闻资讯...</p>
            </div>
            <aside class="aside">
                <h3>快速链接</h3>
                <ul>
                    <li><a href="#">加入我们</a></li>
                    <li><a href="#">常见问题</a></li>
                    <li><a href="#">合作伙伴</a></li>
                </ul>
            </aside>
        </div>
        <footer>
            <p>&copy; 2025 某某科技有限公司 版权所有</p>
        </footer>
    </div>
</body>
</html>

这个案例学到了什么?

  • CSS Reset* { margin: 0; padding: 0; },清除浏览器默认的内外边距。
  • box-sizing: border-box;:让 widthheight 属性包含 paddingborder,使布局计算更直观。
  • margin: 0 auto;:实现水平居中。
  • overflow: hidden;:作为清除浮动的常用技巧之一。
  • 整体布局思路:从外到内,从上到下,逐层构建。

第三章:现代布局与响应式设计

1 Flexbox(弹性盒模型)

Flexbox 是一维布局模型,非常适合在容器中对齐和分布空间。

目标: 创建一个水平居中、垂直居中的导航栏。

CSS:

.nav-container {
    display: flex; /* 启用Flexbox */
    justify-content: center; /* 主轴(水平)居中 */
    align-items: center; /* 交叉轴(垂直)居中 */
    background-color: #333;
    height: 60px; /* 需要容器有明确的高度 */
}
.nav-container a {
    color: white;
    padding: 10px 20px;
    text-decoration: none;
    margin: 0 10px; /* 项目之间的间距 */
}

2 Grid(网格布局)

Grid 是二维布局模型,可以同时控制行和列,非常适合复杂的页面布局。

目标: 创建一个经典的“圣杯布局”(Header, Main, Sidebar, Footer)。

CSS:

.grid-container {
    display: grid;
    /* 定义三列:侧边栏200px,内容区自适应,主内容区1fr */
    grid-template-columns: 200px 1fr; 
    grid-template-rows: 60px 1fr 50px; /* 定义三行 */
    height: 100vh; /* 视口高度 */
}
.header { grid-column: 1 / -1; /* 从第1列跨越到最后一列 */ }
.sidebar { grid-column: 1; grid-row: 2; }
.main { grid-column: 2; grid-row: 2; }
.footer { grid-column: 1 / -1; grid-row: 3; }

3 媒体查询

媒体查询是实现响应式设计的关键,它允许你根据设备的特性(如屏幕宽度)应用不同的CSS样式。

目标: 在小屏幕上,将侧边栏移到主内容区下方。

CSS:

/* 默认样式:PC端 */
.container {
    display: flex;
}
.sidebar {
    width: 25%;
}
.main {
    width: 75%;
}
/* 当屏幕宽度小于等于768px时(平板或手机) */
@media (max-width: 768px) {
    .container {
        flex-direction: column; /* 改为纵向排列 */
    }
    .sidebar, .main {
        width: 100%; /* 宽度占满 */
    }
}

4 经典案例三:响应式作品集网站

这个案例将使用Flexbox和Grid构建一个在不同设备上都能良好展示的作品集。

HTML (portfolio.html):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">我的作品集</title>
    <style>
        /* 基础样式 */
        * { box-sizing: border-box; }
        body { font-family: sans-serif; margin: 0; }
        .portfolio-container {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
            padding: 20px;
        }
        .portfolio-item {
            border: 1px solid #ccc;
            border-radius: 8px;
            overflow: hidden;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
            transition: transform 0.3s ease;
        }
        .portfolio-item:hover {
            transform: translateY(-10px);
        }
        .portfolio-item img {
            width: 100%;
            height: 200px;
            object-fit: cover;
        }
        .portfolio-content {
            padding: 15px;
        }
        /* 响应式调整 */
        @media (max-width: 768px) {
            .portfolio-container {
                grid-template-columns: 1fr; /* 在小屏幕上单列显示 */
            }
        }
    </style>
</head>
<body>
    <div class="portfolio-container">
        <div class="portfolio-item">
            <img src="https://via.placeholder.com/400x200" alt="项目1">
            <div class="portfolio-content">
                <h3>电商网站重设计</h3>
                <p>这是一个为某品牌电商网站进行的UI/UX重设计项目,旨在提升用户购物体验。</p>
            </div>
        </div>
        <div class="portfolio-item">
            <img src="https://via.placeholder.com/400x200" alt="项目2">
            <div class="portfolio-content">
                <h3>移动端App设计</h3>
                <p>一款帮助用户记录日常饮食和运动习惯的健康类App设计。</p>
            </div>
        </div>
        <div class="portfolio-item">
            <img src="https://via.placeholder.com/400x200" alt="项目3">
            <div class="portfolio-content">
                <h3>企业品牌视觉识别</h3>
                <p>为一家初创科技公司设计的全套品牌视觉识别系统,包括Logo、VI手册等。</p>
            </div>
        </div>
    </div>
</body>
</html>

这个案例学到了什么?

  • viewport meta标签:确保在移动设备上正确缩放。
  • display: gridgrid-template-columns: repeat(auto-fit, minmax(300px, 1fr));:这是创建响应式网格的“圣杯”组合,它会自动根据容器宽度调整列数。
  • object-fit: cover;:让图片在保持宽高比的同时填充整个容器,防止变形。
  • transitionhover:添加简单的悬停动画效果,提升交互体验。

第四章:进阶与美化

1 变换与过渡

让元素动起来,增加页面的活力。

  • transition:定义属性变化的过渡效果。
    .box {
        width: 100px;
        height: 100px;
        background-color: blue;
        transition: width 0.5s, transform 0.5s; /* 宽度和变换属性在0.5秒内过渡 */
    }
    .box:hover {
        width: 200px;
        transform: rotate(45deg); /* 旋转45度 */
    }
  • transform:对元素进行2D或3D变换,如平移、旋转、缩放。

4 经典案例四:带动画效果的登录页面

这个案例将使用CSS动画和过渡来创建一个现代感十足的登录界面。

HTML (login.html):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">登录页面</title>
    <style>
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        .login-container {
            background-color: white;
            padding: 40px;
            border-radius: 10px;
            box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
            width: 400px;
            text-align: center;
            animation: slideIn 0.5s ease-out;
        }
        @keyframes slideIn {
            from {
                opacity: 0;
                transform: translateY(-30px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        .login-container h2 {
            color: #333;
            margin-bottom: 20px;
        }
        .input-group {
            margin-bottom: 20px;
            text-align: left;
        }
        .input-group label {
            display: block;
            margin-bottom: 5px;
            color: #555;
        }
        .input-group input {
            width: 100%;
            padding: 12px;
            border: 1px solid #ddd;
            border-radius: 5px;
            box-sizing: border-box;
            transition: border-color 0.3s;
        }
        .input-group input:focus {
            border-color: #2575fc;
            outline: none;
        }
        button {
            width: 100%;
            padding: 12px;
            background-color: #2575fc;
            color: white;
            border: none;
            border-radius: 5px;
            font-size: 16px;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        button:hover {
            background-color: #1a5bb8;
        }
    </style>
</head>
<body>
    <div class="login-container">
        <h2>欢迎登录</h2>
        <form action="#">
            <div class="input-group">
                <label for="username">用户名</label>
                <input type="text" id="username" name="username" required>
            </div>
            <div class="input-group">
                <label for="password">密码</label>
                <input type="password" id="password" name="password" required>
            </div>
            <button type="submit">登录</button>
        </form>
    </div>
</body>
</html>

这个案例学到了什么?

  • linear-gradient:创建背景渐变效果。
  • display: flex:实现完美居中。
  • @keyframesanimation:定义和调用关键帧动画,实现页面加载时的滑入效果。
  • focus 伪类:提升表单的可用性,当用户点击输入框时给出视觉反馈。
  • border-radius:创建圆角,让设计更柔和。

第五章:综合实战

1 项目:模仿一个知名网站

这是检验学习成果的最佳方式,选择一个你喜欢的网站,如知乎、豆瓣、Apple官网等,尝试用你学到的知识去模仿它的首页布局。

开发流程:

  1. 分析:打开目标网站,使用浏览器开发者工具(F12)分析其布局结构,它使用了什么布局方式(Flexbox, Grid, 还是浮动)?颜色方案是什么?字体是什么?
  2. 拆解:将页面拆分成几个主要部分(Header, Navigation, Hero Section, Feature List, Footer等)。
  3. 搭建HTML骨架:根据拆解结果,写出对应的HTML结构,优先使用语义化标签。
  4. 编写CSS样式:从上到下,逐个部分进行样式设计。
    • 先写全局样式(颜色、字体、box-sizing)。
    • 再写每个独立组件的样式。
    • 最后处理响应式布局。
  5. 调试与优化:在不同设备上测试,修复布局错乱问题,优化动画和交互。

2 开发流程与最佳实践

  • 移动优先:先为小屏幕设备设计,再逐步增强,为大屏幕添加更多内容。
  • 模块化思维:将页面拆分成可复用的组件(如按钮、卡片、导航栏),用CSS类来管理它们。
  • 使用CSS预处理器:如Sass或Less,可以让你使用变量、嵌套、混合等高级功能,让CSS更易于维护。
  • 代码整洁:保持良好的代码缩进和注释习惯。
  • 善用开发者工具:Chrome DevTools是你的好朋友,用它来检查元素、调试样式、测试响应式布局。

总结与资源

这份教程涵盖了从基础到进阶的HTML与CSS核心知识点,并通过5个经典案例串联起来,真正的学习来自于大量的实践,请务必亲手敲下每一个案例的代码,并尝试进行修改和创新。

推荐学习资源:

祝你在前端开发的道路上越走越远!