网站资料 · 技术情报 · 相似站点

docs.emmet.io

暂未发现付费内容

分类: 编程开发

标签:docs.emmet.io
访问网站

更新时间:2026-10-07 09:27 语言:未知(默认) 网站访问:正常

站内浏览 0 次 访问跳转 0 次
Emmet Documentation 首页完整截图
编辑评测

网站深度测评

Emmet Documentation是什么网站?

Emmet Documentation 是 Emmet 官方推出的使用文档站点,面向写 HTML/CSS 的开发者,用来学习和查阅 Emmet 的缩写语法、操作命令与配置方式。

它主要提供什么

  • 缩写语法:元素类型、隐式标签名、Lorem Ipsum 生成器、CSS 缩写。
  • 操作命令:Expand Abbreviation、Balance、Wrap with Abbreviation、Toggle Comment、Merge Lines、Update Image Size 等。
  • CSS 相关功能:厂商前缀、渐变、模糊搜索、Reflect CSS Value、图片转 data:URL。
  • 配置与定制:snippets.json、preferences.json、syntaxProfiles.json,以及过滤器(如 Yandex BEM/OOCSS)。
  • 速查表:Cheat Sheet,方便快速查找写法。

谁在什么情况下用它

  • 刚接触 Emmet,想知道 ul#nav>li.item$*4>a{Item $} 这类写法怎么展开成 HTML。
  • 已经会用基础缩写,但想查某个命令的快捷键或用途。
  • 需要按团队规范定制 Emmet,比如改片段、改输出语法、加过滤器。

和同类资源比,侧重点在哪

它更像“官方参考手册”,而不是教程或插件下载页。相比编辑器自带的 Emmet 帮助,这里内容更完整,覆盖语法、命令、配置和速查表;适合当查询工具,不适合当作从零入门的系统课程。

下一步可以做什么

先看首页的演示和 Cheat Sheet,遇到具体命令再进对应章节查。需要定制时,直接看 Customization 部分的三个配置文件说明。

如何用Emmet缩写语法快速生成HTML结构?

用 Emmet 缩写语法生成 HTML 结构,核心就两步:写一段类似 CSS 选择器的缩写,然后执行 “Expand Abbreviation”(多数编辑器里按 Tab 键)把它展开成完整标签。

基本写法

  • 元素直接写标签名,如 div、ul、a。
  • 用 # 写 id,用 . 写 class:div#nav、p.item。
  • 用 > 表示子元素,用 + 表示同级兄弟:ul>li、h1+p。
  • 用 * 表示重复次数:li*4 生成 4 个 li。
  • 用 {} 填文本内容,$ 会按顺序自动编号:ul#nav>li.item$*4>a{Item $}。

一个完整例子

输入:

ul#nav>li.item$*4>a{Item $}

执行 Expand Abbreviation 后,会展开成带 id="nav" 的 ul,里面 4 个带递增 class 的 li,每个 li 里有一个 a,文字依次是 Item 1 到 Item 4。文档首页的示例就是这段缩写。

展开后还能做什么

文档列出的动作可以配合使用,让生成和修改结构更快:

  • Balance:向外逐层选中当前标签,方便整体调整。
  • Next/Previous Edit Point:在标签之间的关键位置跳转。
  • Select Next/Previous Item:快速选中同级元素。
  • Toggle Comment:给整个标签加或去掉注释。
  • Wrap with Abbreviation:用一段缩写把已有内容包起来。

什么情况下用它

  • 手写重复列表、导航、表格结构时,用 * 和 $ 一次生成。
  • 需要按设计稿快速搭骨架时,先用缩写生成层级,再填内容。
  • 已有代码想加外层容器时,用 Wrap with Abbreviation 而不是手动补标签。

想改默认输出

Emmet 的生成规则可以通过 snippets.json、preferences.json、syntaxProfiles.json 定制,比如改标签默认属性或输出格式。文档还提供 Cheat Sheet,适合查具体语法。

Emmet 也被集成在多种编辑器里;如果用的是 VS Code,内置的 Emmet 支持同样使用这套缩写语法。

Emmet如何为CSS自动添加浏览器厂商前缀?

Emmet 通过 “CSS Abbreviations + Vendor Prefixes” 机制为 CSS 自动补全浏览器厂商前缀:你写标准属性,Emmet 在展开缩写时按可配置规则生成带前缀的声明。

具体怎么用

在支持 Emmet 的编辑器里输入类似 CSS 缩写并执行 “Expand Abbreviation”:

  • 输入 trs(transition 的常用缩写)展开时,Emmet 可按配置生成 -webkit-transition、-moz-transition、-ms-transition、-o-transition 和标准 transition。
  • 输入 brs(border-radius)等属性时,也会按规则补全厂商前缀。
  • 渐变(Gradients)属于 Emmet 文档中单独列出的能力,会生成带厂商前缀的渐变写法,而不只是标准 linear-gradient()。

前缀规则在哪里配置

Emmet 的前缀行为不是写死在展开逻辑里,而是放在可自定义的配置文件中:

  • preferences.json:控制 Emmet 的全局行为偏好,厂商前缀相关选项在这里调整。
  • snippets.json:定义缩写展开成什么代码;如果某个属性的前缀写法需要改,可在这里覆盖。
  • syntaxProfiles.json:控制输出格式,例如标签/属性写法风格。

所以“自动加前缀”并不是无条件对所有属性都加,而是取决于当前配置和该属性在 Emmet 数据中的定义。

适合谁、什么场景用

  • 写需要兼容旧版 WebKit/Gecko/IE 的 CSS 时,用 Emmet 展开缩写能少手写多行前缀。
  • 团队统一前缀策略时,把 preferences.json、snippets.json 纳入项目配置,避免每个人生成的前缀不一致。
  • 只面向现代浏览器、不需要旧前缀的项目,可以调整或关闭相关配置,避免生成冗余代码。

和其他工具的区别

Emmet 的厂商前缀是编辑器内缩写展开的一部分,发生在你输入 CSS 缩写的时刻;而 Autoprefixer 这类工具通常在构建阶段根据 browserslist 自动补前缀。前者适合手写 CSS 时快速展开,后者适合按目标浏览器范围批量处理已有样式。两者可以并存,但配置来源和生效时机不同。

下一步

打开 Emmet 文档中的 CSS Abbreviations 和 Vendor prefixes 两节,确认你所用编辑器加载的是哪份 preferences.json / snippets.json,再按项目需要调整前缀列表。

如何自定义Emmet的snippets.json和preferences.json?

Emmet 的自定义分两层:snippets.json 决定“缩写展开成什么”,preferences.json 决定“Emmet 的行为怎么变”。两者都通过编辑器里的 Emmet 配置项加载,而不是直接改插件安装目录里的文件。

snippets.json:定义和扩展缩写

用途是添加自己的缩写,或覆盖内置缩写的输出。Emmet 官方文档把它列在 Customization 下,与 preferences.json、syntaxProfiles.json 并列。

典型结构是分语法(html、css 等)的键值对:

{
  "html": {
    "snippets": {
      "mycard": "div.card>h2{标题}+p{正文}"
    }
  }
}

在支持自定义 snippets 路径的编辑器里,把该文件路径填进 Emmet 设置即可;也可以直接在编辑器的 Emmet 设置中写内联对象。

需要覆盖内置行为时,用同名 key 覆盖,例如自定义 ! 或 html:5 的输出模板。

preferences.json:调整行为

用途是改变展开结果的格式和解析规则,常见项包括:

  • "css.propertyEnd"、"css.valueSeparator":CSS 输出格式
  • "html.attrQuotes"、"html.selfClosingStyle":HTML 属性引号与自闭合风格
  • "output.format"、"output.formatLeafNode":是否输出格式化后的缩进

写法同样是 JSON 对象,路径配置方式与 snippets 一致。

使用情境

  • 团队统一代码风格:把 preferences.json 放进项目并纳入版本控制,成员在编辑器里指向同一份配置。
  • 项目有固定组件结构:把常用卡片、表单、列表结构写成 snippets,减少重复敲标签。
  • 需要临时试验:先用编辑器内联设置验证,稳定后再抽成文件。

选择条件

如果只是想少打几个标签,先加 snippets;如果展开结果的引号、缩进、自闭合方式不符合项目规范,改 preferences;如果涉及不同语法的输出模板差异,再考虑 syntaxProfiles.json。

下一步

  1. 确认所用编辑器支持自定义 snippets/preferences 路径(VS Code 在 Emmet 设置里,Sublime、Atom 等各有对应配置项)。
  2. 新建两个 JSON 文件,先各写一条最小配置验证生效。
  3. 验证通过后再逐步迁移团队常用缩写与格式规则。

Emmet 官方文档还提供 Cheat Sheet 和 Actions 列表,可在写缩写前先确认内置语法,避免重复定义。

Emmet的Expand Abbreviation、Balance和Wrap with Abbreviation等操作分别怎么用?

Emmet 把“手写整段 HTML/CSS”换成“写缩写再展开”,Expand Abbreviation、Balance、Wrap with Abbreviation 是其中最常用的三个操作,分别对应“生成代码”“选中结构”“包裹结构”。

Expand Abbreviation:把缩写展开成代码

用途是把 CSS 风格的表达式动态解析为 HTML 或 CSS。例如输入 ul#nav>li.item$*4>a{Item $},执行 Expand Abbreviation(通常按 Tab 键),就会生成带 4 个列表项和链接的 <ul id="nav"> 结构。

适合场景:新建页面骨架、批量生成重复列表项、写 CSS 缩写(如渐变、厂商前缀)。它和普通 snippet 的区别是:不用预先定义,输出会随你输入的缩写变化。

Balance:向外选中匹配的标签

用途是从光标位置向外逐层选中匹配的标签对。资料演示中连续执行 Balance(Cmd-D)会一层层扩大选区。

适合场景:想整体复制、删除或移动某个 <div>、<section> 时,不用手动找闭合标签,直接按层级选中。嵌套越深越省事。

Wrap with Abbreviation:用缩写包裹选中内容

用途是先选中一段代码,再输入一个缩写,把选中内容包进这个缩写生成的结构里。例如选中若干行文本,输入 div.wrapper>p,就能把它们包进新的容器。

适合场景:给已有内容加外层容器、把散落的元素批量放进列表项或链接里。

其他常配合使用的操作

  • Go to Matching Pair:在开闭标签之间跳转。
  • Go to Edit Point:在标签名、属性值等重要位置间快速移动(Next/Previous Edit Point)。
  • Select Item:按语法单元选中内容(Select Next/Previous Item)。
  • Toggle Comment:快速注释整个标签。
  • Update Image Size:根据图片路径自动补上宽高。
  • Evaluate Math Expression、Increment/Decrement Number:在样式里直接算数、改数值。

怎么选

你想做的事 用哪个
从零生成 HTML/CSS 结构 Expand Abbreviation
选中已有代码的某个完整标签 Balance
给已有内容套一层新结构 Wrap with Abbreviation
在标签内部快速定位修改点 Go to Edit Point

这些操作在支持 Emmet 的编辑器里通过命令面板或快捷键调用,具体键位因编辑器而异;官方文档提供了 Cheat Sheet 和 Actions 列表,可以对照自己编辑器的绑定来设置。

Emmet支持哪些CSS缩写和渐变语法?

Emmet 的 CSS 缩写支持供应商前缀和渐变写法。按官方文档,这两类分别对应 “CSS Abbreviations” 下的 “Vendor prefixes” 和 “Gradients” 两个条目。

CSS 缩写的基本用途

在 CSS 文件里输入类似属性的简写,再用 “Expand Abbreviation” 动作展开,就能得到完整声明。文档把 CSS Abbreviations 单独列为一类,说明它和 HTML 缩写是两套解析规则。

供应商前缀

Emmet 的 “Vendor prefixes” 功能用于生成带浏览器前缀的属性。写缩写时会按需补出 -webkit-、-moz-、-ms-、-o- 等前缀版本,省去逐个手写。适合需要兼容旧浏览器、或写过渡属性、变换、动画等常带前缀的场景。

渐变语法

“Gradients” 是 Emmet 对 CSS 渐变缩写的专门支持,用来快速生成 linear-gradient、radial-gradient 一类声明,并同样处理前缀。例如需要给按钮加一个从上到下的背景渐变时,用渐变缩写展开比手写整段 background: linear-gradient(...) 更快,也更容易保持前缀一致。

相关能力

文档在 Actions 中还列出 “Reflect CSS Value”,用于把一个属性的值同步到其他带前缀的属性上,配合前缀和渐变使用可以减少重复修改。

怎么查具体写法

Emmet 的缩写语法随版本变化,最稳妥的是看官方 Cheat Sheet 和 Customization 里的 snippets.json、preferences.json、syntaxProfiles.json:前者给现成缩写,后三者说明如何自定义或覆盖默认行为。若要确认某个渐变或前缀缩写的当前写法,以 Emmet Documentation 的 Cheat Sheet 为准。

如何自定义 Emmet 的 snippets、preferences 和 syntaxProfiles

Emmet 的自定义能力来自三个配置文件:snippets.json 用来定义或覆盖代码片段,preferences.json 用来调整行为偏好,syntaxProfiles.json 用来控制不同语法的输出格式。三者都通过编辑器的 Emmet 配置入口加载,适合需要统一团队缩写习惯、适配特定框架写法或改变输出缩进与属性风格的场景。如果只是日常写 HTML/CSS,默认配置通常够用;一旦发现某个缩写展开结果不符合项目规范,就应该从这三个文件入手。

三个配置文件分别管什么

文件 作用 典型改动
snippets.json 定义缩写到输出的映射,可新增或覆盖已有片段 把 ! 展开成团队统一的 HTML 骨架
preferences.json 调整 Emmet 的全局行为偏好 改变属性输出顺序、是否输出自闭合斜杠
syntaxProfiles.json 针对某种语法(如 html、xml)设定输出格式 让 HTML 输出使用单引号属性、指定缩进

三者的关系是:snippets.json 决定“展开成什么”,preferences.json 决定“整体怎么表现”,syntaxProfiles.json 决定“某种语法下怎么排版”。改错文件往往表现为“改了没生效”,所以先确认要改的是哪一层。

用 snippets.json 定义或覆盖片段

snippets.json 的核心是键值对:键是缩写,值是展开后的内容。Emmet 会先解析你输入的缩写,再查这张表决定输出。

例如想让 ! 生成一个带特定 lang 和视口设置的骨架,就在 snippets.json 的 html 段里覆盖 doc 或 ! 对应的条目。覆盖已有片段时,键名必须与内置片段一致,否则会变成新增而不是替换。

需要注意两点:

  • 片段值里可以包含 ${1}、${2} 这类占位符,展开后光标会依次停在这些位置,和内置片段的行为一致。
  • 如果新增的缩写与内置缩写重名,你的定义会覆盖内置定义;想保留内置行为又想加新写法,换一个不冲突的键名。

用 preferences.json 调整行为偏好

preferences.json 存放的是影响 Emmet 整体行为的选项,而不是具体某个缩写的输出。它适合处理“所有展开结果都要这样”的需求,比如属性书写风格、是否保留某些默认行为。

判断该不该放这里的方法:如果这个改动对每一个缩写展开都成立,放 preferences.json;如果只对某类标签或某种语法成立,放 syntaxProfiles.json 或 snippets.json。

用 syntaxProfiles.json 控制语法输出格式

syntaxProfiles.json 按语法名组织配置,常见的是 html 和 xml。它决定的是输出格式层面的规则,例如:

  • 属性值使用单引号还是双引号
  • 空元素是否输出自闭合斜杠
  • 缩进用空格还是制表符、缩进几格

因为它是按语法生效的,所以同一份配置里可以给 html 和 xml 设定不同规则。改完后,用同一个缩写分别在两种语法的文件里展开,就能验证是否按预期分流。

验证与常见卡点

改完配置后,用一条能体现改动的缩写做验证,而不是凭感觉判断。例如改的是属性引号风格,就展开一个带属性的标签,直接看输出。

常见卡点:

  • 改了没生效:先确认编辑器是否重新加载了配置文件,很多编辑器需要重启或重新打开配置入口才会读取新内容。
  • 覆盖失败:覆盖内置片段时键名拼写必须完全一致,大小写和层级都要对上。
  • 放错文件:把只该影响 HTML 的规则写进了 preferences.json,结果影响了其他语法。
  • JSON 语法错误:配置文件是 JSON,多一个逗号或少一个引号都会导致整份配置不被加载,改动后先确认文件能被正常解析。

该从哪里开始

如果目标是统一团队的 HTML 骨架,从 snippets.json 覆盖 ! 开始;如果目标是统一输出风格(引号、缩进、自闭合),从 syntaxProfiles.json 开始;如果某个行为对所有语法都该变,再考虑 preferences.json。一次只改一个文件、用一条缩写验证,比三个文件一起改更容易定位问题。

Emmet 缩写语法是什么?怎么用

Emmet 缩写语法是一套类似 CSS 选择器的表达式,输入后由编辑器动态解析,展开成完整的 HTML 或 CSS 代码。它适合需要频繁手写重复标签结构的网页开发场景,前提是你的编辑器已安装并启用 Emmet(或内置支持,如 VS Code 默认集成)。与普通代码片段不同,Emmet 缩写不需要事先定义,可以在输入时即时扩展。

核心机制:动态解析而非预定义片段

Emmet 官方文档指出,多数文本编辑器允许保存和复用常用代码块(snippets),但这类实现有两个共同局限:必须先定义片段,且无法在运行时扩展。Emmet 把片段思路推进了一步——你输入的是可被动态解析的 CSS 式表达式,输出结果取决于缩写内容本身。

这意味着同一个缩写模式可以随参数变化生成不同结构,不需要为每种组合单独建片段。

一个完整例子

文档给出的演示缩写:

ul#nav>li.item$*4>a{Item $}

各部分含义:

写法 作用
ul 元素类型,生成 <ul>
#nav id,生成 id="nav"
> 子元素,进入下一层
li.item$ 生成 <li class="item1">,$ 为递增编号
*4 重复 4 次
a{Item $} 生成 <a>Item 1</a> 等文本内容

展开后得到嵌套的导航列表结构。输入缩写后执行 “Expand Abbreviation”(VS Code 中默认 Tab 键)即可看到结果。

文档覆盖的语法要素

根据 Emmet Documentation 的目录,缩写语法部分包含:

  • 元素类型(Element types):直接写标签名
  • 隐式标签名(Implicit tag names):某些上下文可省略标签名,由 Emmet 推断
  • “Lorem Ipsum” 生成器:快速生成占位文本
  • CSS 缩写:用于 CSS 属性,含厂商前缀、渐变等
  • 模糊搜索(Fuzzy search):不必完整输入也能匹配

配套动作

缩写只是入口,文档还列出一组围绕代码导航和编辑的动作,例如:

  • Expand Abbreviation:展开缩写
  • Balance:向外选中当前标签
  • Go to Matching Pair:跳到配对标签
  • Wrap with Abbreviation:用缩写包裹选中内容
  • Go to Edit Point:在重要代码点之间跳转
  • Select Item:选中下一个/上一个可编辑项
  • Toggle Comment:注释整个标签
  • Update Image Size、Evaluate Math Expression、Increment/Decrement Number 等

这些动作配合缩写使用,能减少手动定位和重复输入。

怎么开始

  1. 确认编辑器支持 Emmet(VS Code 等已内置)。
  2. 在 HTML 或 CSS 文件中输入一个缩写,例如 div>p。
  3. 执行 “Expand Abbreviation”(通常按 Tab),观察展开结果。
  4. 逐步加入 #id、.class、*n、{} 等,验证输出变化。
  5. 需要时查阅 docs.emmet.io 的 Abbreviations Syntax 与 Actions 章节。

常见卡点

  • 缩写未展开:检查光标位置是否在缩写末尾,以及 Tab 键是否被其他功能占用。
  • 隐式标签名推断不符合预期:显式写出标签名可避免歧义。
  • CSS 缩写与 HTML 缩写行为不同,需分别参考对应章节。

Emmet 的价值在于把“定义片段—调用片段”变成“直接写表达式—即时展开”,适合结构重复度高、需要快速搭建骨架的前端工作。

Emmet 文档中列出的 Actions 有哪些?

Emmet 文档把 Actions 分成几组:最核心的是 Expand Abbreviation(把缩写展开成 HTML/CSS),此外还有一组围绕标签、编辑点、注释、数值和 CSS 值操作的辅助动作。它们的作用是让你在不离开键盘的情况下完成选中、跳转、包裹、注释、合并、计算等编辑操作。下面按文档列出的顺序说明每个动作做什么,以及文档中给出的默认快捷键。

缩写展开与结构选择

Expand Abbreviation

把 CSS 风格的缩写解析成完整代码。文档示例中,输入 ul#nav>li.item$*4>a{Item $} 后执行该动作,会展开为对应的 HTML 结构。文档标注的默认快捷键是 Tab。

Balance

向外逐层选中当前标签。文档演示中连续执行 3 次,选择范围从内层标签扩展到外层标签。默认快捷键是 Cmd-D。

Go to Matching Pair

在成对标签之间跳转,用于快速定位开标签或闭标签的另一半。

Wrap with Abbreviation

用输入的缩写把当前选中内容包裹起来,适合给已有代码块快速加上父级标签。

编辑点与选择

Go to Edit Point

在代码中重要的可编辑位置之间移动,例如标签名、属性值、内容之间。文档给出的默认快捷键是 Ctrl-Alt-→(下一个)和 Ctrl-Alt-←(上一个)。

Select Item

按层级选择当前项,用于逐级扩大选择范围。默认快捷键是 Shift-Cmd-.(下一个)和 **Shift-Cmd-, **(上一个)。

标签与行操作

Toggle Comment

对当前标签或行切换注释状态。文档演示中连续执行 2 次,即注释后再取消注释。默认快捷键是 Cmd-/。

Split/Join Tag

把自闭合标签拆成开闭标签对,或把开闭标签对合并为自闭合标签。

Remove Tag

删除当前标签,但保留其内部内容。

Merge Lines

把多行合并为一行,常用于整理被拆散的属性或文本。

数值、CSS 与图片相关

Update Image Size

根据图片文件更新对应的 width 和 height 属性值。

Evaluate Math Expression

计算选中的数学表达式并替换为结果。

Increment/Decrement Number

对当前数值加一或减一,适合调整 z-index、margin 等数值。

Reflect CSS Value

把一处 CSS 属性的值同步到其他浏览器前缀版本,减少手工复制。

Encode/Decode Image to data:URL

把图片编码为 data:URL,或把 data:URL 解码回图片。

这些动作怎么配合使用

一个典型流程是:先用缩写写出结构,用 Expand Abbreviation 展开;需要调整层级时用 Balance 或 Go to Matching Pair 定位;给已有内容加容器时用 Wrap with Abbreviation;整理代码时用 Toggle Comment、Merge Lines 或 Split/Join Tag。

文档同时说明,Emmet 与普通 snippets 的区别在于:snippets 需要预先定义且不能在运行时扩展,而 Emmet 的缩写是动态解析的,输出取决于你输入的表达式。这也是上述动作能围绕缩写和结构灵活工作的基础。

自定义与速查

文档还列出可自定义的文件:snippets.json、preferences.json、syntaxProfiles.json,以及一份 Cheat Sheet 用于快速查阅缩写和动作。如果你需要确认某个动作在当前编辑器中的实际快捷键,应以对应编辑器的键位绑定为准,文档中的快捷键是示例默认值。

Emmet Documentation 是什么网站?

docs.emmet.io 是 Emmet 的官方文档站,面向使用 HTML、CSS 的前端开发者,用来查阅 Emmet 的缩写语法、可用动作、过滤器和自定义配置。它的核心价值不是介绍概念,而是提供一份可随时查的参考:当你记不清某个缩写怎么写、某个动作的用途是什么、或想改默认行为时,来这里找对应条目。如果你只是想知道 Emmet 能做什么,首页的演示已经能说明;如果你要真正用起来,需要配合支持 Emmet 的编辑器。

网站提供哪些内容

从文档的导航结构看,内容大致分为几类:

  • 缩写语法(Abbreviations Syntax):元素类型、隐式标签名、Lorem Ipsum 生成器、CSS 缩写、厂商前缀、渐变、模糊搜索等。
  • 动作(Actions):展开缩写、Balance、跳转到匹配对、用缩写包裹、跳转到编辑点、选择条目、切换注释、拆分/合并标签、移除标签、合并行、更新图片尺寸、计算数学表达式、数字增减、反射 CSS 值、图片编码/解码为 data:URL 等。
  • 过滤器(Filters):如 Yandex BEM/OOCSS 相关的输出处理。
  • 自定义(Customization):snippets.json、preferences.json、syntaxProfiles.json。
  • Cheat Sheet:速查表,适合快速回忆常用写法。

此外,页面还列出了两个关联工具:Emmet LiveStyle(CSS、LESS、SCSS 的实时双向编辑工具)和 Emmet Re:view(并排测试响应式设计)。

Emmet 解决的是什么问题

文档首页给出了一个清晰的定位:大多数编辑器允许你保存和复用代码片段(snippets),但这类实现有两个通病——必须先定义片段,且无法在运行时扩展。Emmet 的做法是让你输入类似 CSS 的表达式,由它动态解析,并根据你写的缩写生成对应输出。

首页演示用的例子是:

ul#nav>li.item$*4>a{Item $}

执行“Expand Abbreviation”(Tab 键)后,这段缩写会被展开成对应的 HTML 结构。也就是说,你写的是描述结构的短表达式,得到的是完整标记。

适合谁看

  • 正在用或准备用 Emmet 的前端开发者,需要查语法和动作细节。
  • 想自定义 Emmet 行为(改 snippets、偏好、语法配置)的人。
  • 想了解 Emmet 能覆盖哪些编辑操作,再决定是否引入工作流的人。

怎么用这份文档

建议的查阅顺序是:先用 Cheat Sheet 建立对常用缩写的印象;遇到具体写法不确定时回到“Abbreviations Syntax”;需要批量或结构性编辑时查“Actions”;想改默认输出或加自己的片段时看“Customization”。文档中的动作示例通常会标注对应的快捷键(如 Balance 为 Cmd-D、Toggle Comment 为 Cmd-/),但实际按键取决于你使用的编辑器及其 Emmet 集成方式,以编辑器为准。

Emmet 的 CSS 缩写功能包括哪些?

Emmet 的 CSS 缩写功能主要包含四类:CSS 属性缩写(把 m10 展开成 margin: 10px;)、自动添加厂商前缀(Vendor prefixes)、渐变值缩写(Gradients),以及模糊搜索(Fuzzy search)。这些能力都写在 docs.emmet.io 的 CSS Abbreviations 章节下,适用于在支持 Emmet 的编辑器里编写 CSS、LESS、SCSS 等样式表。需要说明的是,文档只描述了这些功能本身,并未说明它们是否需要额外配置或插件。

CSS 属性缩写

Emmet 的核心思路是把 CSS 属性名和值压缩成类似 CSS 的表达式,输入后由编辑器动态解析并展开。例如输入 m10,展开结果是:

margin: 10px;

它的解析规则大致是:取属性名的缩写部分,后面跟的值按 CSS 单位规则补全。多个属性可以写成一条链式表达式,一次展开成多行声明。这与 HTML 缩写是同一套机制——文档里强调 Emmet 不是静态 snippet,而是“可以动态解析、根据你输入的内容产生输出”的表达式系统。

厂商前缀(Vendor prefixes)

CSS Abbreviations 章节单独列出了 Vendor prefixes 一节。它的作用是:当你写某个需要前缀的属性缩写时,Emmet 可以自动补出 -webkit-、-moz-、-ms-、-o- 等前缀版本,省去手写重复声明。

具体生成哪些前缀、按什么顺序排列,取决于 Emmet 的配置(snippets.json、preferences.json、syntaxProfiles.json 属于 Customization 部分)。文档没有在 CSS 缩写页给出固定的前缀清单,因此实际结果以你所用编辑器和配置为准。

渐变(Gradients)

Gradients 也是 CSS Abbreviations 下的独立小节。渐变值本身写法冗长,且历史上各浏览器前缀写法不同,Emmet 允许用缩写形式生成渐变声明,并通常与前缀功能配合使用。适合需要频繁写 linear-gradient、radial-gradient 一类值的场景。

模糊搜索(Fuzzy search)

Fuzzy search 解决的是“记不住缩写”的问题。你不需要精确写出完整缩写,输入大致片段即可匹配到候选缩写。它和前面三类功能的关系是:前三类负责“写出来”,模糊搜索负责“找得到”。

四类功能速览

功能 作用 典型场景
CSS 属性缩写 把缩写展开为属性声明 日常写 margin、padding、display 等
Vendor prefixes 自动补浏览器前缀 需要兼容多浏览器的属性
Gradients 缩写生成渐变值 linear-gradient 等复杂值
Fuzzy search 按片段模糊匹配缩写 记不清缩写写法时

怎么验证和使用

  1. 在支持 Emmet 的编辑器里新建或打开一个 CSS/LESS/SCSS 文件。
  2. 输入一个 CSS 缩写,例如 m10。
  3. 执行 “Expand Abbreviation” 动作(文档演示中对应 Tab 键),预期结果是该缩写被展开为完整的 CSS 声明。
  4. 想确认前缀和渐变的具体输出,直接对相应缩写执行展开,观察生成结果;若与预期不符,检查 Customization 下的配置文件。

常见卡点有两个:一是展开动作的快捷键在不同编辑器里可能不同,文档演示用的是 Tab,但要以你编辑器的绑定为准;二是前缀和渐变的输出受配置影响,文档没有给出统一固定值,遇到差异应查配置文件而不是假定文档写死了结果。

Emmet 官方还提供 Cheat Sheet 页面,可用于快速查缩写;同站另有 Emmet LiveStyle(CSS/LESS/SCSS 实时双向编辑)和 Emmet Re:view(并排测试响应式设计)两个开发者工具。

网站信息概览

从公开技术信号来看,网站公开的版本线索与响应信息可以被组合利用,外部扫描更容易聚焦特定技术路径,因此信息收敛和版本维护同样重要。依据当前可见线索,站点的域名资历和网络配置都体现出一定运营沉淀,这有助于建立连续性判断,但仍需结合主体身份和具体业务。

域名与注册信息

截至本次评测,域名年龄约为 14 年。状态中包含防转移保护,未发现 hold 或删除流程标记。顶级域为 .io,本身不提供额外的身份信号。

DNS 与邮件配置

从当前可见信息判断,NS 记录显示该域名接入了 DigitalOcean。从当前可见信息判断,MX 记录使用 Google Workspace 企业邮箱服务。已确认 SPF 与 DMARC 配置;DKIM 配置状态未知。该域名尚未启用 DNSSEC。可用 DNS 记录的最短 TTL 是 1800 秒。

TLS 与证书

证书使用 RSA 2048 位公钥,兼容性较广。证书链完整,可由客户端连续验证。证书可验证域名控制权,但现有数据不能确认组织身份。从公开技术信号来看,当前证书颁发者为 Let's Encrypt。TLS 证书采用约 89 天的短有效期。

HTTP 响应

HTTP 响应公开了服务端版本 nginx/1.18.0 (Ubuntu)。当前已配置 1/6 项,缺项为 CSP、X-Content-Type-Options、Referrer-Policy、Permissions-Policy、点击劫持防护。HTTP 头没有直接暴露后端框架。HTTP 字段未显示敏感内部网络标识。HTTP 响应没有提供边缘代理证据。

技术栈分析

从公开技术信号来看,从脚本、页面标记与响应证据中可见 nginx 1.18.0;已识别到 1 个明确版本。若这些组件长期未更新,已公开的版本线索可能增加被定向核查的机会。

SEO 与社交分享

页面缺少描述标签,搜索平台可能自行截取正文。首页未检测到 Canonical 规范链接。社交分享时平台需要自行提取页面内容。首页已设置标题,长度适中。Robots 指令未阻止首页索引。

主机和电子邮件

DNSDigitalOcean
主机emmet.io
电子邮件Google Workspace
位置 The Netherlands 国旗Amsterdam, North Holland, The Netherlands 128.199.54.7

用户评价(0)

  • 暂无评价。

页面、搜索与分享信息

页面描述未检测到
规范链接未检测到
语言未知(默认)
Twitter Card未检测到

未知

未发现 robots.txt

暂未发现 Sitemaps

域名登记事实 RDAP / WHOIS

注册商101domain GRS Limited
注册时间2012-08-20
到期时间2027-08-20
域名状态clientTransferProhibited https://icann.org/epp#clientTransferProhibited
名称服务器ns1.digitalocean.com、ns2.digitalocean.com、ns3.digitalocean.com
DNSSECunsigned

DNS 记录

类型名称值TTL优先级
Aemmet.io128.199.54.71800—
MXemmet.ioaspmx.l.google.com18001
MXemmet.ioalt1.aspmx.l.google.com18005
MXemmet.ioalt2.aspmx.l.google.com18005
MXemmet.ioaspmx2.googlemail.com180010
MXemmet.ioaspmx3.googlemail.com180010
NSemmet.ions1.digitalocean.com1800—
NSemmet.ions2.digitalocean.com1800—
NSemmet.ions3.digitalocean.com1800—
TXTemmet.iov=spf1 include:_spf.google.com ~all3600—
CNAMEdocs.emmet.ioemmet.io1800—
DMARC_dmarc.emmet.iov=DMARC1; p=none; rua=mailto:[email protected]3600—

TLS 与证书

定性结果配置正常
支持协议TLSv1.2
协商协议TLSv1.2
证书主题docs.emmet.io
颁发者Let's Encrypt
有效期至2026-11-30T03:03 · 记录时剩余 53 天
验证事实证书信任:通过 · 域名匹配:通过

HTTP 响应标头

标头值
content-typetext/html; charset=utf-8
cache-controlmax-age=1800
servernginx/1.18.0 (Ubuntu)
strict-transport-securitymax-age=15768000

已识别技术

nginx 1.18.0