博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Emmet(zen coding)文档(一)[译文]
阅读量:5110 次
发布时间:2019-06-13

本文共 3395 字,大约阅读时间需要 11 分钟。

Emmet其实就是原先的zen coding。我一直想好好深入学习呢,sublime我都配好了。今天抽空翻译下官方文档吧。主要还是举例,翻译有删减,但力求正确。

依照官方文档的类别划分为:

  • (缩写)
  • (css 缩写)
  •  (个性定制)

好了,下面细细讲讲每个部分的内容。

缩略词

缩略词语法

Emmet使用的语法类似于css选择器,比如我们常见的">","+",以及属性选择器等等。这些将在Emmet中变得很常见。

元素

元素是啥?就是有内容的html标签。当然,这些称谓总是让人觉得麻烦(楼主自己插的话)。

你没必要再像以前那样在编辑器中完整地输入元素,比如,你可以这么简写,Emmet可以帮你转化成

你需要的标签:div → <div></div>foo → <foo></foo>等等。

操作符的嵌套规则:

假如你熟悉css的选择器,那么下面这些示例对你来说,非常容易理解:

子选择器:>

输入:

div>ul>li

就会生成:

紧邻选择器:+

输入:

div+p+bq

生成:

上三角符:^

你知道:

div+div>p>span+em

会被转化成:

那么使用“^”符号呢,你就可以跳到上一级。这个上一级是啥意思捏,我的理解是上一个“>”选择器的那一级。

示例:

div+div>p>span+em^bq

输出为:

当然,你也可以使用多个“^”,如下:

div+div>p>span+em^^^bq

将会输出为:

PS:这个示例,有点误导啊,其实如果为了这个结果,只需要两个“^”就OK了,三个多余了。

请猜测,这个输入会输出什么结果呢?

div.test>span+(em>i)+^bq

分组:()

上面给出的一个猜测结果的例子就使用了分组,如果不用分组的话,转化结果就错误咯。

括号()通常用来在复杂的缩写中对子节点树进行分组:

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

扩展为:

If you’re working with browser’s DOM, you may think of groups as Document Fragments: each group contains abbreviation subtree and all the following elements are inserted at the same level as the first element of group.(尼玛,这段话真长,我都不知道怎么翻译了。)

你可以使用()分组,并使用*来把分组连接起来:

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

生成为:

With groups, you can literally write full page mark-up with a single abbreviation, but please don’t do that.(使用分组,你可以只用一个单独的缩完成整个页面的标记,但是不建议这么做)

属性操作符:

ID 和CLASS

这个很简单啊,我就不翻译他们的啰嗦话了,直接上代码示例:

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

输出:

属性:

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

输出:

 

属性值其实还可以写单引号,也可以不用写。html5就是这样的规范。属性值为空的话,就不写属性值了。

Item numbering(项目序号,列表项序号):$

使用*可以重复元素,那么使用$则可以给它们编号。把$符放在元素名称,属性名称或者属性值后,输出重复元素的当前编号。

ul>li.item$*5

输出:

你也可以使用多个$,相当于给数字前缀加0。

ul>li.item$$$*5

输出为:

更改编号的基数和方向(排序):

使用@修饰符,表示默认升序(不用它,只用$也是默认升序),@-则表示降序,@修饰符要跟在$符后面,基数默认为1:

ul>li.item$@-*5

转化为:

若是要改变基数,就直接在@后面加上基数数字即可,但是基数数字是要在升降序修饰符后面的(升序默认没有,降序为“-”)。例如:

ul>li.item$@3*5

生成:

看吧,基数是从3开始的,默认升序。对应的,降序的例子为:

ul>li.item$@-3*5

生成:

文本: {}

元素一般既包括了属性和属性值,还包括了文本内容。文本内容怎么填充呢?

答案就是使用 { }。

a{Click me}

生成:

注意, {text}被用来解析为一个单独的元素(就好比,div,p),当把它卸载元素后面是,有特殊含义。比如,a{text}和a>{text}将会产生同样的输出,但是a{click}+b{here}和a>{click}+b{here}就不一样了。

所以,尼玛还是规矩点写吧,想输出<a href="">text</a>就用a{text},别发骚,脱裤子放屁用a>{text}。

好了,为了加深理解,我们不用">"操作符,来看看下面这个例子:

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

生成:

Click

here to continue

缩写注意事项:

有些人为了让自己的缩写变得更具有可读性,就给元素和操作符之间加了空格,比如:

(header > ul.nav > li*5) + footer

结果,尼玛悲催了,不起作用啊。因为空格符在Emmet中被当做停止符来解析的。

还有些二货用户呢,错误地以为,每个缩写应当换行,额,你爱写哪里写哪里!

下面是视频demo,我就不管啦。

  • 缩写并不是模板语言,所以不具有可读性,它们可以迅速扩展和移除
  • 你没必要去写复杂的缩写。你有那功夫去思考,时间都特码浪费好多了

------------------华丽丽的分割线-----------------------

好了,今天先翻译到这里。

题外话:

确实啊,谁会一下子就写出一个复杂的缩写呢?我也是一段一段的写啊。看一眼psd,就特码能写出牛逼闪闪,可扩展,语义也很不错的代码,不容易啊!

转载于:https://www.cnblogs.com/my_front_research/archive/2013/05/29/3106000.html

你可能感兴趣的文章
[python] Queue.Queue vs. collections.deque
查看>>
【转】在HTML中使用Javascript
查看>>
Ext.Net学习笔记23:Ext.Net TabPanel用法详解
查看>>
3.1.6 循环栅栏:CyclicBarrier
查看>>
线程池(1)
查看>>
awk字符提取
查看>>
linux下安装JDK和Tomcat
查看>>
android仿苹果分段按钮
查看>>
Java序列化
查看>>
【集训笔记】二分图及其应用【HDOJ1068【HDOJ1150【HDOJ1151
查看>>
高效素数判断
查看>>
[分享]linux Y480安装显卡驱动经历!
查看>>
libgdx与Robovm绑定的坑
查看>>
深入浅出VB.NET提示对话框
查看>>
哲理小故事(二)
查看>>
STL学习笔记(三) 关联容器
查看>>
我要好offer之 C++大总结
查看>>
解决jquery操作checkbox全选全不选无法勾选问题
查看>>
ENVISAT ASAR 文件命名规则
查看>>
后端传输数据到前端
查看>>