- 前端
【免费下载链接】icons
Official open source SVG icon library for Bootstrap.
caret-down-square(向下插入符方块)是 Bootstrap Icons 图标库中 Carets 分类下的一个基础方向指示图标,官方常与 -fill 实心版本搭配使用,用于折叠面板、下拉菜单、手风琴等场景的展开指示。本文以该图标的文档页 docs/content/icons/caret-down-square.md 为骨架,结合仓库内的 SVG 源码、字体映射表与 Hugo 渲染模板,完整讲解它的图形结构、安装方式、四种引用方法以及字体码点换算,让读者拿到即可在项目中落地使用。
图标概览与文档元数据
该图标在文档体系中对应两个页面:普通轮廓版 caret-down-square.md 与实心填充版 caret-down-square-fill.md。两个文档页的 frontmatter 定义了完全一致的分类与标签信息:
title: Caret down square categories: - Carets tags: - caret - arrow - triangle- 分类(categories):
Carets,即"插入符"图标家族,与caret-down、caret-up-square、caret-left-fill等同属一组,语义上都表示方向性指示。 - 标签(tags):
caret、arrow、triangle三个关键词共同描述图标形态——本质是一个三角形箭头(triangle/arrow),以插入符(caret)风格呈现并放入方形底框中。
在 docs/layouts/icons/single.html 中可以看到,这类 Markdown 页面是图标详情页的渲染源:模板读取 frontmatter 中的title作为页面标题,并把tags、categories直接渲染为详情页的元信息列表。也就是说,这份"简短"的文档并非孤立的占位符,而是驱动整张图标详情页(大图预览、示例区、下载按钮、码点表格等)的数据入口。
SVG 源码解析:轮廓版与实心版的结构差异
轮廓版 caret-down-square.svg
文件 icons/caret-down-square.svg 的完整内容如下:
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-down-square" viewBox="0 0 16 16"> <path d="M3.626 6.832A.5.5 0 0 1 4 6h8a.5.5 0 0 1 .374.832l-4 4.5a.5.5 0 0 1-.748 0z"/> <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/> </svg>它由两个path组成:
- 箭头三角(第一个 path):起点
M3.626 6.832,向右上方绘制到A.5.5的圆弧约束,勾勒出"顶部宽、底部收窄"的向下插入符。注意其中l-4 4.5与-.748的配合使三角形底边对称,形成指向正下方的箭头。 - 外框(第二个 path):
M0 2a2 2 0 0 1 2-2h12...用标准的 2px 圆角矩形路径绘制 16×16 的外框,内层再画一圈细线边框(a1 1圆弧),得到"双层描边"的描边方块视觉效果。
关键属性说明:
viewBox="0 0 16 16":图标基于 16×16 的设计网格绘制(与整个 Bootstrap Icons 库保持一致,见 README.md 中"designed on a 16x16px grid"的说明)。fill="currentColor":填充色跟随文字颜色,这是图标能随text-*工具类变色的关键。class="bi bi-caret-down-square":SVG 内嵌了字体类名,便于与图标字体方式交叉识别。
实心版 caret-down-square-fill.svg
文件 icons/caret-down-square-fill.svg 则把所有图形合并到单个 path:
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-down-square-fill" viewBox="0 0 16 16"> <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm4 4a.5.5 0 0 0-.374.832l4 4.5a.5.5 0 0 0 .748 0l4-4.5A.5.5 0 0 0 12 6z"/> </svg>对比可见:fill 版的方框为实心填充(z闭合后直接铺满),白色箭头三角通过M4 4起笔、a.5.5圆弧约束向内"挖空"形成。这种单 path 结构在字体化时更利于字形轮廓统一,也是官方推荐"实心版与轮廓版配对使用"的底层原因。
安装与引入:npm / Composer 两种方式
根据 README.md 的说明,Bootstrap Icons 发布到 npm 与 Packagist,SVG 源文件均经过处理,具体渲染由使用方决定。
npm(推荐):
npm i bootstrap-iconsComposer(PHP 项目):
composer require twbs/bootstrap-icons安装完成后,node_modules/bootstrap-icons下即包含icons/(单个 SVG)、font/(图标字体与 CSS)、bootstrap-icons.svg(SVG sprite)等产物。
四种标准使用方式
文档体系(由 README.md 的 Usage 一节定义)支持四种引入路径,均适用于 caret-down-square:
1. 内嵌 SVG(Copy HTML)
直接把图标详情页"Copy HTML"区块给出的 SVG 源码粘贴进页面,如:
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-down-square" viewBox="0 0 16 16"> <path d="M3.626 6.832A.5.5 0 0 1 4 6h8a.5.5 0 0 1 .374.832l-4 4.5a.5.5 0 0 1-.748 0z"/> <path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1z"/> </svg>内嵌方式可自由控制width/height,并直接受益于currentColor的继承特性。
2.<img>标签引用
<img src="icons/caret-down-square.svg" alt="Caret down square" width="32" height="32">注意:通过<img>引入时无法用 CSS 修改填充色(SVG 以独立文档加载,不继承父元素颜色),需要换色应改用内嵌或字体方式。
3. SVG sprite(雪碧图)
引用根目录下的 bootstrap-icons.svg 中的符号:
<svg class="bi" width="32" height="32" fill="currentColor"> <use xlink:href="bootstrap-icons.svg#caret-down-square"/> </svg>sprite 方式与内嵌 SVG 一样支持currentColor换色,且多个图标只产生一次网络请求。
4. CSS 图标字体(Icon font)
这是详情页模板主推的方式。引入 font/bootstrap-icons.css(或 SCSS 版 font/bootstrap-icons.scss)后:
<i class="bi bi-caret-down-square"></i> <i class="bi bi-caret-down-square-fill"></i>CSS 内部通过::before伪元素注入字形:
.bi-caret-down-square-fill::before { content: "\f22a"; } .bi-caret-down-square::before { content: "\f22b"; }字体方式便于用font-size控制尺寸、用color控制颜色,是 Bootstrap 组件生态中最常见的用法。
字体码点:从 JSON 映射到 CSS / JS / HTML
每个图标在 font/bootstrap-icons.json 中都有唯一的十进制码点:
"caret-down-square-fill": 61994, "caret-down-square": 61995十进制 61994 与 61995 换算为十六进制分别是0xF22A与0xF22B。详情页模板 docs/layouts/icons/single.html 会读取该 JSON,把码点渲染成四种形态:
| 形态 | 写法 | 示例(轮廓版) |
|---|---|---|
| Unicode | U+XXXX | U+F22B |
| CSS | \XXXX | \f22b |
| JS | \uXXXX | \uf22b |
| HTML | &#xXXXX; |  |
这四种写法在自定义字体场景(如把bi-caret-down-square字形嵌入手写@font-face的私有字体)中可直接复用,与 CSS 中的content: "\f22b"完全对应。
图标详情页如何生成:Hugo 模板中的渲染链路
caret-down-square.md 本身只有 8 行 frontmatter,但它在构建时被 docs/layouts/icons/single.html 渲染为完整的图标详情页。模板中的关键逻辑:
- 大图预览:
$localSvgPath := printf "/icons/%s.svg" .File.TranslationBaseName按页面文件名拼出/icons/caret-down-square.svg,用readFile读入并直接输出 SVG,形成 10em 尺寸的预览区; - 示例区:同一份 SVG 被渲染到 Heading、内联文本、链接、按钮、输入组等多种 Bootstrap 组件场景,验证图标在不同字号、不同
color下的表现; - 下载:
<a href="{{ $svgPath }}" download>提供单个 SVG 的直接下载; - 码点表:
resources.Get "font/bootstrap-icons.json"反序列化后按页面名索引出码点并转大写十六进制输出。
也就是说,本文档页在站内等价于 caret-down-square 图标的"官方使用说明书",本文已将其中的信息完整继承并落到仓库实现细节上。
与 Carets 家族其他图标的搭配
同分类下(docs/content/icons 中以caret-前缀命名的文档)还包括caret-down、caret-up、caret-left、caret-right及各自的-square、-fill变体。caret-down-square与caret-up-square常成对用于折叠面板的展开/收起指示,与caret-down-fill相比多了一层方框语义,视觉上更接近"按钮"而非纯箭头。选择时可按以下原则:
- 纯箭头指示 →
caret-down/caret-down-fill; - 需要方框承载的方向按钮 →
caret-down-square/caret-down-square-fill; - 需要实心强调 → 使用
-fill版本。
小结
caret-down-square 是 Bootstrap Icons 中结构清晰、用途明确的一个方向指示图标。本文从它的文档 frontmatter 出发,借助 icons/caret-down-square.svg、font/bootstrap-icons.json、font/bootstrap-icons.css 与 docs/layouts/icons/single.html 等仓库文件,完整还原了它的路径结构、码点体系与渲染链路。实际项目中,内嵌 SVG 与图标字体是最灵活、最常用的两种接入方式,而码点表则是在自定义字体或程序化引用时的底层依据。
- 前端
【免费下载链接】icons
Official open source SVG icon library for Bootstrap.
相关推荐
Bootstrap Icons 的 arrow-down-left-square 图标:SVG 结构、码点与六种引用方式实战指南
Bootstrap Icons 的 arrow down left square 图标:SVG 结构、码点与六种引用方式实战指南 导读 arrow down l
前端Bootstrap Icons 的 arrow-down-right-square 图标详解:SVG 源码、字体内码与使用实战
Bootstrap Icons 的 arrow down right square 图标详解:SVG 源码、字体内码与使用实战 本篇技术指南以 Bootstra
前端Bootstrap Icons 图标解析:align-top(顶对齐)图标的 SVG 结构、字体码点与使用指南
Bootstrap Icons 图标解析:align top(顶对齐)图标的 SVG 结构、字体码点与使用指南 align top 是 Bootstrap Ic
前端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考