美文网首页
HTML速写之Emmet语法规则

HTML速写之Emmet语法规则

作者: 硅谷干货 | 来源:发表于2021-12-03 09:36 被阅读0次

缩写语法

Emmet 使用类似于 CSS 选择器的语法来描述元素的结构与属性。

嵌套操作符

> (子元素)

可以使用 > 运算符将元素嵌套在彼此内部

较准确的含义是:使用 **>** 运算符,您将下降生成的树,所有兄弟元素的位置将根据最深的元素解析

div>ul>li

表现为:

<div>
    <ul>
        <li></li>
    </ul>
</div>

+ (兄弟元素)

使用 + 运算符将元素以相同层级放在同一父元素上

div+p+bq

表现为:

<div></div>
<p></p>
<blockquote></blockquote>

^ 返回上层

  • 使用 ^运算符,您可以爬上树的一个层次,并更改上下文
div+div>p>span+em^bq

表现为:

<div></div>
<div>
    <p><span></span><em></em></p>
    <blockquote></blockquote>
</div>
// 此时的上下文返回到两个div所在的这一层了
  • 当然了,^ 也可以多个并用,有几个 ^ 就返回几层
div+div>p>span+em^^bq

表现为:

<div></div>
<div>
    <p><span></span><em></em></p>
</div>
<blockquote></blockquote>
// 此时上下文已经返回到最外层了

这里要注意,最多返回到跟第一个元素同级的,以上面的例子,^^ 已经返回到了最外层,跟 ^^^ 的效果是一样的

* 乘法

使用 ***** 操作符,您可以定义应该输出多少次该元素,跟我们加减乘除里的乘法含义相近

ul>li*5

表现为:

<ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>

()分组

() 操作符对复杂的子元素进行分组,简而言之,每个()中都是一个独立的子元素

适用于某个子元素比较复杂的情况

div>(header>ul>li*2>a)+footer>p

表现为:

<div>
    <header>
        <ul>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
        </ul>
    </header>
    <footer>
        <p></p>
    </footer>
</div>

可以将分组当作 Document Fragments,后续元素将与分组第一个元素同级。

分组嵌套,并且使用 * 操作法:

(div>dl>(dt+dd)*3)+footer>p

表现为:

<div>
    <dl>
        <dt></dt>
        <dd></dd>
        <dt></dt>
        <dd></dd>
        <dt></dt>
        <dd></dd>
    </dl>
</div>
<footer>
    <p></p>
</footer>

使用分组后,可以用一个缩写来生成整个页面,不过不建议这么做。[1]

属性操作符(Attribute operators)

顾名思义,就是HTML中的属性,因为我们的页面不光有单纯的HTML,还有各式各样的属性,操作或者创建这些属性就需要用到属性操作符了

ID 和 Class

Emmet使用类似于CSS选择器的语法给元素添加属性

div#header+div.page+div#footer.class1.class2.class3

表现为:

<div id="header"></div>
<div class="page"></div>
<div id="footer" class="class1 class2 class3"></div>

那我们在实际开发中可能除了常用的属性外,还会用一些自定义的属性,那如果创建呢?

自定义属性(Custom attributes)

您可以使用类似CSS中的符号 [attr="xxx"] 向元素添加自定义属性

div[title="Hello world!" colspan=3]

表现为:

<div title="Hello world!" colspan="3"></div>

需要说明的是:

  1. 方括号内的属性数量不限,如果你喜欢,可以一直加
  2. 如果不是默认属性值的话会生成插入占位 比如:div[title colspan] 会变成 <div title="" colspan=""> 前提是编辑器支持这样的写法
  3. 属性值可以使用单引号或者双引号都可以
  4. 属性值如果不包含空格可以省去引号

$编号(Item numbering)

操作符可以生成重复元素,而 ** 可以去元素进行编号。需要将 ** 放在元素名、属性名或者属性值里

ul>li.item$*5

表现为:

<ul>
    <li class="item1"></li>
    <li class="item2"></li>
    <li class="item3"></li>
    <li class="item4"></li>
    <li class="item5"></li>
</ul>

如果想实现00x的格式,该怎么办呢?

可以连写多个$就可以生成带有前导的编号了

ul>li.item$$$*5

表现为:

<ul>
    <li class="item001"></li>
    <li class="item002"></li>
    <li class="item003"></li>
    <li class="item004"></li>
    <li class="item005"></li>
</ul>

那如果我想实现降序呢?

使用 @ 修饰符,可以改变编号的方向以及起点

ul>li.item$@-*5

理论上,应该表现为[2]

<ul>
    <li class="item5"></li>
    <li class="item4"></li>
    <li class="item3"></li>
    <li class="item2"></li>
    <li class="item1"></li>
</ul>

如果想改变起点,不从1开始,可以使用 @N 放在 $ 后面

ul>li.item$@3*5

表现为:

<ul>
    <li class="item3"></li>
    <li class="item4"></li>
    <li class="item5"></li>
    <li class="item6"></li>
    <li class="item7"></li>
</ul>

当然了,你也可以将多种修饰符混合使用[3]

ul>li.item$@-3*5

理论上的表现:

<ul>
    <li class="item7"></li>
    <li class="item6"></li>
    <li class="item5"></li>
    <li class="item4"></li>
    <li class="item3"></li>
</ul>

Text: {}文本

可以使用大括号 {}为元素添加文本,就类似于模板的插入符

div{hello world}

表现为:

<div>hello world</div>

需要注意的是{text}类似于独立元素(例如div,p)。不过当它紧跟在元素后面时就有特殊的含义了

比如 a{click}a>{click} 结果一样,而 a{click}+b{here} 和 *a>{click}+b{here}* 结果不一样

<!-- a{click}+b{here} -->
<a href="">click</a><b>here</b>

<!-- a>{click}+b{here} -->
<a href="">click<b>here</b></a>

在第二个例子中的b标签是在a标签内。这就是不同点:当{text}紧跟在元素后面时,它没有改变父元素的上下文

可以再用一个比较复杂的例子来说明:

p>{Click me }+a{here}+{ to continue}

表现为:

<p>Click me <a href="">here</a> to continue</p>

在上面的例子里,我们为了让p标签包含Click me,所以用 > 进入子结构,因为现在的上下文已经是p标签的子结构,所以a标签也在p标签内

如果我们想让 pa 在同一层级,同时两者都包含文本的话,我们应该怎么做呢?

p{click me}+a{here}+{ to continue}

表现为:

<p>Click me</p>
<a href="">here</a> to continue

这样p和a都在同一层级,就满足要求咯~

注意事项

以上所有的语法,都不能出现空格,除非是在特定的括号中。因为Emmet在遇到空格时,就认为已经结束,会停止解析。

相关文章

  • 【Emmet】HTML速写之Emmet语法规则

    Emmet—写HTML/CSS快到飞起 在前端开发的过程中,最费时间的工作就是写 HTML、CSS 代码。一堆的标...

  • HTML速写之Emmet语法规则

    转载自博客 在前端开发的过程中,最费时间的工作就是写 HTML、CSS 代码。一堆的标签、属性、括号等,头疼。这里...

  • HTML速写之Emmet语法规则

    缩写语法 Emmet 使用类似于 CSS 选择器的语法来描述元素的结构与属性。 嵌套操作符[https://www...

  • HTML速写语法规则(Emmet)

    1. 聊点闲话 今天大数据课程学习到前端可视化技术(拉勾教育大数据开发训练营),终于开始接触我不熟悉的内容了。今天...

  • Emmet语法分享

    Emmet语法 注意:Emmet语法是为了帮助快速写出复杂的html css代码 一,官网连接 1.1 具体内容链...

  • 前端入门03 -- Emmet,复合选择器,显示模式,背景

    Emmet语法 Emmet语法可提高html/css的编写速度,VSCode内部已经集成了该语法; 快速生成Htm...

  • 【Sublime】配置 package config

    emmet :快速写html jsFormate LESS alignment :等号对齐 Bracket Hig...

  • Emmet

    Emmet Emmet 官网:Emmet HTML缩写 常用缩写共分为基本标签、嵌套规则、属性规则三类(个人将te...

  • Emmet语法

    使用Emmet语法可快速生成html框架和标签,以及css代码 ps~本人使用的vscode编辑器 Emmet语法...

  • Emmet语法

    1.Emmet语法 Emmet语法的前身是Zen coding,它使用缩写,来提高html/CSS的编写速度,Vs...

网友评论

      本文标题:HTML速写之Emmet语法规则

      本文链接:https://www.haomeiwen.com/subject/wrxuxrtx.html