Markdown: Markdown 图片语法与 Alt 文本

一张好图胜过千言万语——在 Markdown 中插入图片只需要一行语法,但用好它有一些门道。

1. 你将学到


2. 一个技术博客作者的真实故事

(1) 痛点:无法加载的图片

James 运营一个技术博客,每篇文章都会配几张截图。刚开始他把图片放在自己的服务器上,后来发现图片链接经常失效——服务器迁移了几次,旧链接全断了。更糟的是,他的图片文件名是中文的,在某些浏览器中无法加载。读者抱怨"图挂了",文章的跳出率飙升到 70%。

(2) 解法:使用图床和规范命名

James 把所有图片迁移到 CDN 图床(如 Cloudinary),使用英文文件名,并为每张图片写好 Alt 文本。他还在 Markdown 中用引用图片的方式集中管理所有图片 URL。之后图片加载速度提升 3 倍,文章跳出率降到 35%。


3. 图片基础语法

(1) 行内图片

图片语法和链接非常相似,只是在前面加了一个 !

MARKDOWN
![Alt 文本](图片URL)

![Markdown 标志](https://markdown-here.com/img/icon256.png)
部分 说明 示例
![Alt 文本] 图片无法加载时显示的文字 ![网页截图]
(图片URL) 图片文件地址 (https://example.com/img/logo.png)

(2) 图片尺寸调整

标准 Markdown 不支持设置图片宽高。需要时用 HTML 的 <img> 标签:

MARKDOWN
![普通插入](logo.png)

<img src="logo.png" width="200" alt="设置宽度为 200px">
💡 提示: 90% 的场景标准 Markdown 图片语法就够用了。确实需要控制大小时再使用 HTML <img> 标签。

▶ 示例:插入一张本地图片

MARKDOWN
![项目架构图](./assets/architecture.png)

![截图:用户登录界面](../screenshots/login-page.png)
💡 提示: 好的 Alt 文本应该描述图片的内容和功能。对于装饰性图片(如分隔图标),Alt 文本可以为空 ![] 但不要省略。


5. 图片加链接

(1) 点击图片跳转

将图片包裹在链接语法内,实现点击图片跳转:

MARKDOWN
[![点击查看大图](thumbnail.jpg)](fullsize-image.jpg)

[![访问官网](logo.png)](https://example.com)

结构解析:

MARKDOWN
[                          ← 链接开始
  ![缩略图](thumbnail.jpg)  ← 图片(点击区域)
]                          ← 链接结束
(https://example.com)      ← 跳转目标

▶ 示例:图片链接的实际应用

MARKDOWN
## 项目徽章

[![Build Status](https://img.shields.io/github/actions/workflow/status/user/repo/ci.yml)](https://github.com/user/repo/actions)
[![npm 版本](https://img.shields.io/npm/v/package-name)](https://www.npmjs.com/package/package-name)

## 产品截图

| 功能 | 截图 |
|:-----|:-----|
| 仪表盘 | [![仪表盘缩略图](img/dashboard-thumb.png)](img/dashboard-full.png) |
| 设置页 | [![设置页缩略图](img/settings-thumb.png)](img/settings-full.png) |
💡 提示: 这是 GitHub README 中常见的"徽章(Badge)"用法。点击徽章跳转到对应服务(如 CI 状态页、npm 包页面)。


6. 引用图片

与引用链接类似,图片 URL 也可以集中管理:

MARKDOWN
正文中:
![公司 Logo][logo]
![产品截图][screenshot1]

文档末尾定义:
[logo]: https://cdn.example.com/logo.png "公司 Logo"
[screenshot1]: https://cdn.example.com/screenshots/v2/dashboard.png "新版仪表盘截图"
💡 提示: 引用图片特别适合维护大量图片的文档集。当迁移到新的图床时,只需要改文件末尾的 URL 定义。


7. 图片最佳实践

(1) 文件格式选择

格式 适用场景 优点 缺点
PNG 截图、图标、透明背景 无损、质量高 文件大
JPEG 照片、复杂色彩图 文件小 有损压缩
SVG 图标、Logo、插图 无限缩放、文件极小 不适合照片
GIF 简单动画 兼容性好 色彩少、文件大
WebP 替代 PNG/JPEG 体积小 25-35% 部分旧浏览器不支持

(2) 图片优化建议

MARKDOWN
1. 控制大小:单张图片不超过 500KB,推荐 100-300KB
2. 使用 CDN:加速全球加载
3. 英文文件名:logo.png ✅ logo-公司.png ❌
4. 合理目录:assets/images/ 或 img/
5. 写 Alt 文本:每张图片必须写描述性 Alt 文本
⚠️ 注意: 在 GitHub README 中直接引用本地图片路径(./assets/image.png)是安全的,但引用外部图床需要确保该服务稳定可靠。

▶ 示例:产品说明文档中的图片

MARKDOWN
## UI 界面展示

### 登录页面

![登录页面截图,包含邮箱和密码输入框,以及"记住我"选项](img/login-page.png)

### 仪表盘

![仪表盘界面,左侧导航栏包含 6 个菜单项,中央为数据概览卡片](img/dashboard-overview.png)

> **注:** 点击图片可查看高清大图
[![仪表盘缩略图](img/dashboard-thumb.png)](img/dashboard-full.png)

8. 完整示例:项目 README 中的图片展示

TEXT 📖 仅展示
Awesome App 项目 README 结构:

标题行:# Awesome App + 徽章图片
截图表格:移动端 | 桌面端
安装命令:npm install awesome-app
Logo 引用:[logo]: https://cdn.example.com/logo.png

预期效果:图文并茂的 GitHub README,包含项目横幅、徽章、截图展示,Logo 集中管理在文档末尾。


❓ 常见问题

Q 图片太大了,在 Markdown 中怎么缩小?
A 标准 Markdown 不支持尺寸控制。用 HTML:<img src="url" width="400" alt="描述">
Q GitHub 上图片路径怎么写?
A 用相对路径 ./assets/image.png 引用仓库内的图片。也可以用绝对 URL 引用外部图床。
Q GIF 动图能用吗?
A 能。语法与静态图片完全相同。但注意文件大小——一个大 GIF 可能 5-10MB,影响页面加载速度。
Q 图片 Alt 文本最长多少?
A 没有硬性限制,但推荐 125 字以内。屏幕阅读器通常会截断过长 Alt 文本。
Q SVG 图标怎么用?
A Markdown 直接引用 .svg 文件即可。也可以在 Markdown 中嵌入 SVG 源代码(部分解析器支持)。

📖 小节


📝 作业

  1. 基础题:在 Markdown 中插入一张图片(可以是网络图片或本地图片),写好描述性 Alt 文本。然后在浏览器中禁用图片加载,验证 Alt 文本是否正常显示。

  2. 进阶题:创建一个小项目,在 README.md 中实现"点击缩略图查看大图"功能——页面显示小图,点击后在新标签页打开原图。

  3. 挑战题:用引用图片方式维护一份"网站截图集"文档,包含至少 5 张截图,URL 集中定义在文档末尾。然后尝试将这些截图改为 WebP 格式,比较文件体积变化。

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏