当前位置:首页 > 技术 > 正文内容

HTML基础语法与常用标签详解

访客 技术 2026年9月5日 1

HTML(超文本标记语言)是构建网页结构的核心语言。它通过一系列预定义的标签来描述内容的语义和层次,浏览器据此渲染出可视化的页面。与编程语言不同,HTML 本身不具备逻辑运算能力,而是作为内容的"骨架",配合 CSS 和 JavaScript 实现完整的网页功能。

HTML 文档基本结构

一个标准的 HTML5 文档必须包含以下核心部分:

<!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>
  <!-- 页面内容写在这里 -->
</body>
</html>
  • <!DOCTYPE html>:声明文档类型,强制浏览器以 HTML5 模式解析。
  • <html lang="zh-CN">:根元素,lang 属性指定页面语言,有助于搜索引擎和屏幕阅读器理解内容。
  • <head>:元信息容器,不直接显示在页面上,包含标题、编码、视口设置、外部资源链接等。
  • <title>:定义浏览器标签页或搜索引擎结果中显示的标题,对 SEO 至关重要。
  • <meta charset="UTF-8">:指定字符编码,确保中文等非 ASCII 字符正确显示。
  • <meta name="viewport">:控制移动端页面的缩放行为,是响应式设计的基础。
  • <body>:页面可见内容的容器,所有用户看到的元素都应置于其中。

常用文本标签

标题与段落

HTML 提供六级标题标签,语义层级清晰:

<h1>一级标题</h1>
<h2>二级标题</h2>
...
<h6>六级标题</h6>

<p>这是一个段落,用于组织连续文本内容。</p>

语义化标题有助于搜索引擎理解页面结构,也方便辅助技术(如读屏器)导航。

文本样式

语义化强调内容含义,而非视觉表现:

标签 语义 视觉效果
<em> 强调内容 斜体
<strong> 重要性提升 粗体
<u> 下划线(非语义) 下划线
<del> 已删除内容 删除线
<ins> 新增内容 下划线(通常为绿色)
<sup> 上标 上标
<sub> 下标 下标

避免使用 <b><i>,除非纯粹用于视觉修饰(如品牌名、外文术语)。

列表

无序列表(项目符号):

<ul>
  <li>苹果</li>
  <li>香蕉</li>
  <li>橙子</li>
</ul>

有序列表(编号):

<ol start="5">
  <li>第一步</li>
  <li>第二步</li>
</ol>

列表可嵌套,用于构建多级菜单或目录结构。

换行与分隔线

  • <br>:强制换行,常用于地址、诗歌等需要保留换行的场景。
  • <hr>:水平分隔线,表示内容主题的切换,如章节间分隔。

注释

<!-- 这是注释,浏览器不会显示,仅用于开发者阅读 -->

结构化语义标签

HTML5 引入了更具语义的容器标签,提升代码可读性与无障碍访问性:

标签 用途
<header> 页面或区块的头部,通常含 Logo、导航
<nav> 导航链接集合
<main> 页面核心内容区域(每个页面唯一)
<article> 独立可分发的内容,如博客、新闻
<section> 内容的逻辑分组,如章节、产品分类
<aside> 与主内容相关但非必需的侧边内容,如广告、推荐
<footer> 页面或区块的底部,含版权、联系方式
<div> 无语义的通用容器,用于样式或脚本分组
<span> 内联容器,用于对文本片段应用样式

语义化标签不改变默认样式,但极大提升代码的可维护性和 SEO 表现。

媒体资源嵌入

图像

<img src="images/logo.png" alt="公司Logo" width="200" loading="lazy">

关键属性:

  • src:图像路径(支持相对路径与绝对 URL)
  • alt:图像无法加载时的替代文本,对无障碍访问和 SEO 至关重要
  • width / height:设置尺寸,避免布局抖动
  • loading="lazy":延迟加载,提升首屏性能

推荐格式:

  • .jpg:照片类图像,高压缩率
  • .png:需透明背景或文字图标
  • .webp:现代格式,体积比 JPEG/PNG 小 30%+,推荐优先使用
  • .svg:矢量图形,可无限缩放,适合图标、图表

视频与音频

视频

<video width="640" controls preload="metadata" poster="cover.jpg">
  <source src="video.mp4" type="video/mp4">
  <source src="video.webm" type="video/webm">
  您的浏览器不支持视频播放。
</video>

音频

<audio controls>
  <source src="audio.mp3" type="audio/mpeg">
  <source src="audio.ogg" type="audio/ogg">
  您的浏览器不支持音频播放。
</audio>

使用 <source> 标签提供多种格式,确保兼容性。关键属性:

  • controls:显示播放控件
  • autoplay:自动播放(移动端通常被禁止)
  • loop:循环播放
  • preload:预加载策略(none/metadata/auto

内嵌网页

<iframe src="https://example.com" width="600" height="400" frameborder="0"></iframe>

注意:内嵌第三方内容可能带来安全与性能风险,需谨慎使用。

SVG 图形

直接在 HTML 中绘制矢量图形:

<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
  <circle cx="50" cy="50" r="40" fill="blue" />
</svg>

优点:可缩放、轻量、可动画、可 CSS 样式控制。

画布(Canvas)

<canvas id="myCanvas" width="300" height="200"></canvas>

Canvas 是一个位图绘制区域,需通过 JavaScript 进行动态绘图,常用于游戏、数据可视化。

超链接与锚点

使用 <a> 标签创建链接:

<a href="https://www.example.com" target="_blank" rel="noopener">外部链接</a>
<a href="#section2">跳转到章节2</a>

<h2 id="section2">章节2</h2>

关键属性:

  • href:目标地址
  • target="_blank":在新标签页打开
  • rel="noopener":安全属性,防止新页面访问原页面的 window.opener
  • #anchor:页面内锚点跳转,需配合 id 使用

表单元素

表单是用户与网站交互的核心:

<form action="/submit" method="POST">
  <label for="username">用户名:</label>
  <input type="text" id="username" name="username" required placeholder="请输入用户名">

  <label for="email">邮箱:</label>
  <input type="email" id="email" name="email">

  <label for="age">年龄:</label>
  <input type="number" id="age" name="age" min="18" max="100">

  <label>
    <input type="checkbox" name="agree" required>
    我同意用户协议
  </label>

  <label for="country">国家:</label>
  <select id="country" name="country">
    <option value="cn">中国</option>
    <option value="us">美国</option>
  </select>

  <button type="submit">提交</button>
</form>

关键标签与属性:

  • <form>:表单容器,method(GET/POST)和 action(提交地址)必设
  • <label>:绑定输入控件,提升可访问性,点击标签即可聚焦输入框
  • input[type="..."]:支持多种类型(text、email、password、date、range、file 等)
  • required:必填校验
  • placeholder:占位提示
  • <select> + <option>:下拉选择
  • <textarea>:多行文本输入
  • <button type="submit">:触发表单提交

表格

用于展示结构化数据:

<table>
  <caption>学生成绩表</caption>
  <thead>
    <tr>
      <th>姓名</th>
      <th>数学</th>
      <th>英语</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>85</td>
      <td>92</td>
    </tr>
    <tr>
      <td rowspan="2">李四</td>
      <td>78</td>
      <td>88</td>
    </tr>
    <tr>
      <td>82</td>
      <td>90</td>
    </tr>
  </tbody>
</table>

关键标签:

  • <thead><tbody>:语义化分组
  • <th>:表头单元格,默认加粗居中
  • <td>:数据单元格
  • rowspancolspan:跨行/跨列合并

焦点与可访问性

用户可通过 Tab 键在可聚焦元素间切换:

  • 默认可聚焦元素:<a><button><input><select><textarea>
  • tabindex="0":使非默认元素可聚焦
  • tabindex="-1":可编程聚焦,但不参与 Tab 顺序
  • autofocus:页面加载时自动聚焦

良好的焦点管理是无障碍设计的重要部分,确保键盘用户能顺畅操作页面。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。