HTML入门


一、HTML 是什么?为什么学它?

  • 定义:HTML(HyperText Markup Language,超文本标记语言)是用来描述网页的一种语言,它通过「标签」定义页面的结构和内容(文字、图片、链接、表单等)。
  • 注意:HTML 不是编程语言,而是「标记语言」(用标签标记内容的语义和结构),不负责样式(交给 CSS)和交互(交给 JavaScript)。
  • 作用:所有网页的基础都是 HTML,它是前端开发的「骨架」—— 没有 HTML,CSS 和 JS 就没有作用的对象。

二、HTML 文档的基本结构

一个完整的 HTML 文档有固定的结构,就像写文章要有开头、正文、结尾一样。

基础结构代码

<!DOCTYPE html>  <!-- 声明文档类型:告诉浏览器这是 HTML5 文档 -->
<html lang="zh-CN">  <!-- 根标签:整个页面的包裹容器,lang="zh-CN" 表示中文页面 -->
  <head>  <!-- 头部:存放页面的元信息(不直接显示在页面上) -->
    <meta charset="UTF-8">  <!-- 编码格式:必须写,避免中文乱码(UTF-8 是通用编码) -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  <!-- 适配移动端:让页面在手机上正常显示 -->
    <title>我的第一个 HTML 页面</title>  <!-- 页面标题:显示在浏览器标签栏 -->
  </head>
  <body>  <!-- 身体:存放页面的可见内容(所有用户能看到的东西都在这里) -->
    <h1>你好,HTML!</h1>
    <p>这是我的第一个 HTML 页面。</p>
  </body>
</html>

结构说明

  • <!DOCTYPE html>:必须放在第一行,告诉浏览器用 HTML5 标准解析页面(不写可能导致兼容性问题)。
  • <html>:根标签,所有其他标签都必须放在 <html></html> 之间。
  • <head>:存放「元数据」,比如页面标题、编码、引入的外部文件(CSS/JS)等,这些内容不会显示在页面上。
  • <body>:存放页面的「可见内容」,比如文字、图片、按钮等,用户打开页面看到的内容都在这里。

三、HTML 标签的核心规则

所有 HTML 功能都通过「标签」实现,掌握标签的规则是关键。

(1) 标签的基本格式

  • 大多数标签是「成对出现」的:<标签名>内容</标签名>(比如 <p>段落内容</p>)。
  • 少数标签是「单标签」(自闭合标签):不需要结束标签,格式为 <标签名><标签名/>(HTML5 中推荐省略 /,比如 <br><img>)。

(2)标签的属性

标签可以通过「属性」添加额外信息,格式:<标签名 属性1="值1" 属性2="值2">

  • 属性必须写在开始标签中,用空格分隔。
  • 属性值通常用双引号包裹(规范写法)。
  • 示例:<img src="cat.jpg" alt="一只猫" width="300">srcaltwidth 都是属性)。

(3)标签的嵌套

标签可以嵌套,但必须「正确嵌套」(不能交叉嵌套)。

  • 正确:<p>这是<strong>重要</strong>内容</p><strong> 完全在 <p> 内部)。
  • 错误:<p>这是<strong>错误</p></strong>(交叉嵌套,浏览器可能解析错乱)。

四、常用标签详解

按功能分类讲解,每个标签都附实际用法。

(1)文本内容类标签(呈现文字信息)

用于展示标题、段落、列表等文本内容,核心是明确文本的「语义」(比如 “这是标题” 还是 “这是段落”)。

  1. 标题标签:<h1><h6>表示不同级别的标题,<h1> 级别最高(页面中建议只出现一次,通常是网站标题),<h6> 级别最低。

```html

一级标题(最大)

二级标题

三级标题

四级标题

五级标题
六级标题(最小)

```

效果:浏览器会自动为标题添加加粗和上下间距,级别越低字体越小。

  1. 段落标签:<p>表示一个段落,浏览器会自动在段落前后添加空白(换行 + 间距)。

```html

这是第一个段落。HTML 中的多个空格或换行,在浏览器中会被解析为一个空格。

这是第二个段落。如果需要强制换行,要用 <br> 标签(后面会讲)。

```

  1. 换行标签:<br>单标签,强制换行(段落内换行用 <br>,段落间分隔用 <p>)。

```html

床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。

```

  1. 文本强调标签:<strong><em>

  2. <strong>:表示「重要内容」,浏览器默认加粗显示(有语义,不是单纯为了样式)。

  3. <em>:表示「强调内容」,浏览器默认斜体显示(同样有语义)。

```html

警告:请勿触摸电源,否则可能 导致触电

```

  1. 列表标签:有序列表 <ol>、无序列表 <ul>、列表项 <li>

  2. 无序列表 <ul>:列表项前默认是圆点(常用于导航、选项等无顺序的内容)。

  3. 有序列表 <ol>:列表项前默认是数字(常用于步骤、排名等有顺序的内容)。
  4. 列表项 <li>:必须嵌套在 <ul><ol> 中,表示每个列表项。

```html

我的爱好:

  • 打篮球
  • 听音乐
  • 写代码

学习步骤:

  1. 学习 HTML
  2. 学习 CSS
  3. 学习 JavaScript

```

(2)媒体与链接类标签(展示图片、视频、链接)

  1. 图片标签:<img>单标签,用于插入图片,核心属性:

  2. src:图片的路径(必须写,否则图片无法显示)。

  3. alt:图片加载失败时显示的替代文本(必须写,用于无障碍访问和 SEO)。
  4. width/height:图片的宽度 / 高度(单位是像素,只写一个会自动等比例缩放)。

```html

一只黑色的猫

随机风景图 ```

注意:src 路径错误时,浏览器会显示一个破碎图片图标,并显示 alt 的文字。

  1. 超链接标签:<a>用于跳转页面或链接到资源,核心属性:

  2. href:链接的目标地址(必须写,值可以是:网页 URL、本地 HTML 文件路径、邮箱、电话等)。

  3. target:指定链接打开方式(_self 是默认值,在当前窗口打开;_blank 在新窗口打开)。

```html

访问百度

查看关于我们页面

联系我们

拨打 10086

跳转到第一章

第一章:HTML 基础

```

注意:href 如果暂时没有目标,可以写 href="#"(表示空链接,点击不会跳转)。

  1. 视频标签:<video>用于插入视频,核心属性:

  2. src:视频路径(本地或网络地址)。

  3. controls:显示播放控件(必须加,否则视频无法操作)。
  4. width:视频宽度。
  5. autoplay:自动播放(部分浏览器需要配合 muted 静音才能生效)。

```html

```

(3)结构容器类标签(划分页面区域)

用于将页面划分为不同区域(如头部、导航、正文、底部),核心是「语义化」—— 用有含义的标签替代无意义的 <div>

  1. 通用容器:<div><span>

  2. <div>:块级容器(独占一行,可用于大区域划分,如导航栏、内容区)。

  3. <span>:行内容器(不独占一行,用于包裹小段文本,如高亮某个词)。

    (两者本身无语义,主要用于配合 CSS 控制样式)

```html

用户信息

姓名:张三

年龄:25

```

  1. 语义化结构标签(HTML5 新增,推荐优先使用)这些标签本身有明确含义,让代码更易读,同时帮助搜索引擎和屏幕阅读器理解页面结构。
标签 含义 示例场景
<header> 页面或区域的头部 网站 Logo、标题、导航栏
<nav> 导航区域 首页、关于我们、联系我们等链接
<main> 页面的核心内容(唯一) 文章正文、商品列表
<article> 独立的内容块(可单独存在) 一篇文章、一条评论
<section> 页面中的一个区块(主题相关) 章节、商品详情中的规格区
<aside> 侧边栏(与主内容相关但非核心) 作者信息、相关推荐
<footer> 页面或区域的底部 版权信息、联系方式

示例:一个简单的页面结构

```html

语义化页面示例

我的博客

HTML 语义化的重要性

语义化标签能让代码更清晰...

© 2023 我的博客 版权所有

```

(4)表单类标签(收集用户输入)

用于创建登录框、注册页、搜索框等,核心是 <form> 容器 + 各种输入控件。

  1. 表单容器:<form>所有表单控件都必须放在 <form> 中,用于提交数据,核心属性:

  2. action:数据提交的目标地址(后端接口 URL)。

  3. method:提交方式(getpostget 适合简单数据,post 适合敏感数据如密码)。

  4. 输入控件:<input>单标签,通过 type 属性控制输入类型,常用类型:

type 值 作用 示例代码
text 单行文本输入框(默认) <input type="text" placeholder="请输入姓名">(placeholder 是提示文字)
password 密码框(输入内容隐藏为圆点) <input type="password" placeholder="请输入密码">
radio 单选框(多个互斥,需相同 name) <input type="radio" name="gender" value="male"> 男
checkbox 复选框(可多选,需相同 name) <input type="checkbox" name="hobby" value="basketball"> 篮球
file 文件上传 <input type="file" accept="image/*">(accept 限制文件类型)
submit 提交按钮(触发表单提交) <input type="submit" value="注册">(value 是按钮文字)
reset 重置按钮(清空表单内容) <input type="reset" value="重置">
button 普通按钮(需配合 JS 用) <input type="button" value="点击">
  1. 其他表单控件

  2. <textarea>:多行文本输入框(如留言板)。

  3. <select> + <option>:下拉选择框。
  4. <label>:绑定表单元素(点击 label 文字会聚焦到对应控件,提升体验)。

完整表单示例(注册页)

<form action="/register" method="post">
  <!-- 姓名 -->
  <label for="username">姓名:</label>  <!-- for 对应 input 的 id,点击文字聚焦输入框 -->
  <input type="text" id="username" name="username" placeholder="请输入姓名" required>  <!-- required 表示必填 -->
  <br><br>

  <!-- 密码 -->
  <label for="password">密码:</label>
  <input type="password" id="password" name="password" placeholder="请输入密码" required>
  <br><br>

  <!-- 性别(单选框) -->
  性别:
  <input type="radio" id="male" name="gender" value="male" checked>  <!-- checked 表示默认选中 -->
  <label for="male"></label>
  <input type="radio" id="female" name="gender" value="female">
  <label for="female"></label>
  <br><br>

  <!-- 爱好(复选框) -->
  爱好:
  <input type="checkbox" id="hobby1" name="hobby" value="reading">
  <label for="hobby1">阅读</label>
  <input type="checkbox" id="hobby2" name="hobby" value="coding">
  <label for="hobby2">编程</label>
  <br><br>

  <!-- 城市(下拉选择框) -->
  <label for="city">城市:</label>
  <select id="city" name="city">
    <option value="">请选择</option>  <!-- 默认选项 -->
    <option value="beijing">北京</option>
    <option value="shanghai">上海</option>
  </select>
  <br><br>

  <!-- 个人简介(多行文本) -->
  <label for="intro">个人简介:</label><br>
  <textarea id="intro" name="intro" rows="4" cols="30" placeholder="请输入个人简介"></textarea>  <!-- rows 行数,cols 列数 -->
  <br><br>

  <!-- 提交和重置按钮 -->
  <input type="submit" value="注册">
  <input type="reset" value="重置">
</form>

五、HTML 语义化

前面多次提到「语义化」,这里单独强调:

  • 语义化:用有明确含义的标签(如 <header><nav><article>)而非全用 <div> 来描述内容。
  • 好处:
  • 代码可读性高:开发者能快速理解页面结构(比如看到 <nav> 就知道是导航)。
  • SEO 友好:搜索引擎(如百度、谷歌)能更好地识别内容,提升页面排名。
  • 无障碍访问:屏幕阅读器(帮助盲人浏览网页的工具)能通过语义标签正确解读内容。
  • 反例:全用 <div class="header"> 代替 <header>,虽然能实现同样的结构,但丢失了语义。

六、实战练习

结合上面的知识,动手写一个页面,包含以下内容:

  1. 页头(标题 + 导航)。
  2. 个人信息(姓名、照片、简介)。
  3. 爱好列表(无序列表)。
  4. 联系表单(姓名输入框、留言框、提交按钮)。

参考代码(可直接复制到 .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>
  <!-- 页头 -->
  <header>
    <h1>欢迎来到我的个人主页</h1>
    <nav>
      <a href="#info">个人信息</a> | 
      <a href="#hobby">我的爱好</a> | 
      <a href="#contact">联系我</a>
    </nav>
  </header>

  <!-- 核心内容 -->
  <main>
    <!-- 个人信息 -->
    <section id="info">
      <h2>个人信息</h2>
      <img src="https://picsum.photos/200/200" alt="我的照片" width="200">
      <p>姓名:小明</p>
      <p>职业:前端开发学习者</p>
      <p>简介:我正在学习 HTML、CSS 和 JavaScript,希望成为一名优秀的前端工程师。</p>
    </section>

    <!-- 我的爱好 -->
    <section id="hobby">
      <h2>我的爱好</h2>
      <ul>
        <li>看技术文档</li>
        <li>写代码</li>
        <li>打篮球</li>
      </ul>
    </section>

    <!-- 联系表单 -->
    <section id="contact">
      <h2>联系我</h2>
      <form>
        <label for="name">你的名字:</label>
        <input type="text" id="name" placeholder="请输入你的名字">
        <br><br>
        <label for="message">留言:</label><br>
        <textarea id="message" rows="3" cols="30" placeholder="请输入想对我说的话"></textarea>
        <br><br>
        <input type="submit" value="发送">
      </form>
    </section>
  </main>

  <!-- 页脚 -->
  <footer>
    <p>© 2023 我的个人主页 | 版权所有</p>
  </footer>
</body>
</html>

推荐初学者可以访问https://www.w3school.com.cn/获取更多详细。

0 条评论

发表评论

暂无评论,欢迎发表您的观点!