$只在*作用域内生效,li$*3生成li1~li3,孤立使用则被忽略;$、$$、$@n分别控制起始值、补零格式和起始数值;$须置于[]或{}内才有效;多$独立计数,不跨层级复用。

为什么$在*外面不生效
因为$不是全局计数器,它只在*重复作用域内解析。写成li$*3能生成li1~li3;但li$单独按 Tab,或li$.item*3($没挨着*),结果都是无编号的li。Emmet 会直接忽略孤立的$,不报错也不提示。
$、$$、$@n三者的实际差异
它们控制的是数字格式和起始值,不是“高级/基础”之分,选错会导致 class 或 id 名完全不符合预期:
-
$:默认从 1 开始递增,div.item$*3→class="item1"、item2、item3 -
$$:补零格式,div.item$$*5→item01、item02…item05;写三个$($$$)就补两位零,如item001 -
$@n:指定起始值,div.item$@10*3→item10、item11、item12;$@-5则递减:item-5、item-6、item-7
在属性和文本中嵌入$的正确位置
$必须出现在属性值内部或{}文本内容里,且要被[]或{}包裹,否则解析失败:
- ✅ 正确:
input[id=input$][name=field$]{Label $}*3→ 生成 3 个 input,id/name/text 都带对应编号 - ❌ 错误:
input$[id=input]*3→$在标签名后、属性前,整个缩写被跳过,只输出 3 个无编号的<input> - ⚠️ 注意:
[]里不能有空格,input[id="input$"]合法,input[id= "input$" ]会中断解析
多个$同时出现时的优先级和常见误用
同一个缩写里可以多次使用$,但每个$独立计数——不是共享一个序列:
-
li.item$>a[href=#$]{Link $}*2→ 生成两个li,每个含一个a;第一个a的href和文本是#1/Link 1,第二个是#2/Link 2 - 但如果你写成
li.item$$>a[href=#$]{Link $$}*2,第一个a是#1/Link 01,第二个是#2/Link 02——$和$$各走各的计数逻辑 - 最容易被忽略的一点:
$不支持跨层级复用。比如(div.item$>span)+div.item$,两个div都是item1,不是item1和item2
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











