惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
MongoDB | Blog
MongoDB | Blog
Engineering at Meta
Engineering at Meta
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
T
The Exploit Database - CXSecurity.com
P
Privacy & Cybersecurity Law Blog
Know Your Adversary
Know Your Adversary
月光博客
月光博客
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
NISL@THU
NISL@THU
爱范儿
爱范儿
S
Securelist
博客园 - 叶小钗
C
CERT Recently Published Vulnerability Notes
Recorded Future
Recorded Future
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
aimingoo的专栏
aimingoo的专栏
D
DataBreaches.Net
G
GRAHAM CLULEY
P
Proofpoint News Feed
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
C
Cyber Attacks, Cyber Crime and Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
Jina AI
Jina AI
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
博客园 - 【当耐特】
H
Help Net Security
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss

一颗小树

周更的第 100 篇 改变阅读方式 宝贵的人生建议 小树的工具库 2023 读《重构》有感 仅需 10 分钟,用 GPTs 实现文章总结助手 高质量的需求交付 产品始于问题,而不是解决方案 如何更好地休息 最优解人生 与体重斗,其乐无穷 结构化 prompt = 数字员工? 持续创作的法门 如何降低知识焦虑 7 月思维碎片 N 倍生产力提升:我的 AI 助理 Indie Hacker,互联网打工人的下一个出路? 如何成就伟大事业 夏日碎片 小报编辑的自我修养 一颗小树 #49 投入真实生活 一颗小树 #48 过年杂记 一颗小树 #47 我的人生信念(2023) 一颗小树 #46 回本就卖 一颗小树 #45 规划和落地 小树的 2022 年终总结 一颗小树 #44 构建高质量信源 一颗小树 #43 我的 2022 书单 一颗小树 #42 阳了怎么办 一颗小树 #41 一人企业 一颗小树 #40 非必要别正常啦 一颗小树 #39 阅读和创造 一颗小树 #38 疫情生活碎片 一颗小树 #37 基于多维表格的可转债投资系统 一颗小树 #36 飞盘初体验 一颗小树 #35 雁栖湖半日游 一颗小树 #34 初探多维表格 一颗小树 #33 回不去的名字叫家乡 一颗小树 #32 生活需要留白 一颗小树 #31 Figma 的成功之道 一颗小树 #30 拓宽自己 拥抱善意 一颗小树 #29 有关下雨的记忆 一颗小树 #28 隐入尘烟 一颗小树 #27 找到并坚持自己的热爱 一颗小树 #26 好产品的“差”改版 一颗小树 #25 吹吹南澳岛的海风 一颗小树 #24 代码重构的一点心得 一颗小树 #23 和团队新同学的对话 一颗小树 #22 从《干法》中学到的 一颗小树 #21 阿里四年我的收获和感想 一颗小树 #20 周更半年我学到的事 一颗小树 #19 慢慢来比较快 一颗小树 #18 只规划每天最重要的三件事 一颗小树 #17 裁员潮下的反思 一颗小树 #16 纪录片的力量在于真实 一颗小树 #15 世界很小但很好 一颗小树 #14 让自己成为问题的终结者 一颗小树 #13 别忘记你的热爱 一颗小树 #12 聊聊写作这件事 一颗小树 #11 开始投资前更重要的事 一颗小树 #10 疫情囤货指南 一颗小树 #9 疫情之下 重建内心的秩序 一颗小树 #8 不要倒在黎明前 一颗小树 #7 从小孩子身上学到的事 一颗小树 #6 和自己的产品一起成长 一颗小树 #5 技术对生产力的的变革是不可阻挡的 一颗小树 #4 暴风雨的意义 一颗小树 #3 投资成功,是我们变成一个更好的人之后自然的结果 一颗小树 #2 持续学习来应对这个复杂多变的世界 一颗小树 #1 任天堂和上岭村 一颗小树 #0 这是写给你们的第一封信 游戏改变世界 把自己给开源了 构建自己的不为清单 有爱和被爱 做了一点微小的工作 小树的 2021 年终总结 小树的 2020 年终总结 与其感慨路难行,不如马上出发 阿里前端也切图?不,人工智能帮你做 如何写好简历,拿到大厂 offer 的敲门砖 任时光匆匆流去 | 2019 年终总结 聊聊在阿里远程办公那点事儿 在 D2 做主持人是怎样一种体验? 提高工作效率的几个方法 有限状态机在 CSS 动画中的应用 「译」React 项目结构和组件命名之道 编写小而美函数的艺术 使用纯粹的JS构建 Web Component 翻译计划-状态管理请三思 利用Dawn工程化工具实践MobX数据流管理方案 高性能 MobX 模式(part 3)- 用例教程 高性能 MobX 模式(part 2)- 响应变化 技术文章写法浅谈 翻译计划-用node.js开发一个可交互的命令行应用 无他,唯手熟尔-前端实习面试题篇 工欲善其事必先利其器-前端实习简历篇 手把手带你用原生js实现css属性的set和get 我们来翻翻元素样式的族谱-getComputedStyle 翻译计划-从sass到PostCSS
emmet,让你的html飞起来
也树 · 2016-03-12 · via 一颗小树

sublime 作为一款强大的文本编辑器,其诸多特性使得之前用 notepad2 的我毅然舍弃了旧爱,奔向的新欢。作为一枚程序猿,编码的效率自然也是非常重要的,最初写页面时,全部的标签都是手打,不仅效率底下而且容易出现漏错。之后接触到了 emmet 这一神器,自然要善加利用。

emmet 是什么

首先是官网上的介绍。

Emmet is a plugin for many popular text editors which greatly improves HTML & CSS workflow. Emmet 是一个可用在许多流行文本编辑器上的极大简化 HTML 和 CSS 工作流程的插件。

前身是 Zen coding,他使用仿 css 选择器的语法来生成代码,极大提高了编写 HTML/CSS 的效率,之后改名为 emmet,但是随之而来的改变不仅限于名字,还增加了许多新的特性。

emmet 怎么用

tips:以下用法基于 Windows 下的 Sublime Text3

文档结构初始化

对于 html 文档来说,文档类型 DOCTYPE,<head><html><body>这些标签都是必须的,如果每次都手工录入的话效率很低,使用 emmet 就可以在空白 html 文档中输入

// type
html:5
// tab
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>

</body>
</html>

添加类、id、文本和属性

emmet 的一个强大特性,使用类 CSS 选择器的方式,.是生成类名,#是生成 id,{}中生成文本内容,[]中可以设置属性,可以嵌套使用。话不多说,上 demo。

// type
p
// tab
<p></p>

// type
p.bar
// tab
<p class="bar"></p>

// 添加多个类
// type
p.bar1.bar2
// tab
<p class="bar1 bar2"></p>

// type
p#foo
// tab
<p id="foo"></p>

// type
p{123}
// tab
<p>123</p>

// type
input[type=radio]
// tab
<input type="radio">

// type
p.bar#foo{123}
// tab
<p class="bar" id="foo">123</p>

嵌套和分组

emmet 又一个强大的特性,也是让你写 html 速度起飞的关键因素。 嵌套语法:

>:子元素符号,表示嵌套的元素 +:同级标签符号 ^:可以使该符号前的标签提升一行

其中^用的不多,容易让人逻辑混乱,这个时候就需要良好的分组来实现。翠花,上 demo!

// type
p>span
// tab
<p><span></span></p>

// type
p+span
// tab
<p></p>
<span></span>

// type
p>h1^span
// tab
<p>
	<h1></h1>
</p>
<span></span>

// 以分组的方式来实现,更清晰
// type
(p>h1)+span
// tab
<p>
	<h1></h1>
</p>
<span></span>

重复添加相同元素

写页面的时候经常会遇到很多重复的结构用来显示数据,比如无序列表 ul,如果列表项很多,手打就显得效率十分低下,好在 emmet 可以帮我们完美解决这个问题。

// type
ul>li*5
// tab
<ul>
	<li></li>
	<li></li>
	<li></li>
	<li></li>
	<li></li>
</ul>

加上分组的应用,可以处理更复杂的 html 结构

// type
(div.warp>p.bar+span#foo)*2
// tab
<div class="warp">
	<p class="bar"></p>
	<span id="foo"></span>
</div>
<div class="warp">
	<p class="bar"></p>
	<span id="foo"></span>
</div>

一种幸福感油然而生,果然科技是第一生产力。

列表按序计数

对于列表项,经常会碰到有顺序的计数,这个时候,如果手工修改,吃力不讨好,且看我们的 emmet 如何大显神通。

// type
ul>li.item$*3
// tab
<ul>
	<li class="item1"></li>
	<li class="item2"></li>
	<li class="item3"></li>
</ul>

// 如果想要两位数的序号,添加两个$$即可,依此类推
// type
ul>li{item$$}*3
// tab
<ul>
	<li>item01</li>
	<li>item02</li>
	<li>item03</li>
</ul>

css 的用法

Sublime 本身提供的模糊输入已经极大程度的方便了 css 的输入,因此我没有做过多的研究,感兴趣的同学可以去我提供的参考资料页面自行了解。

小结

对于程序猿来说,效率是一项非常重要的因素,效率高就意味着可以更快的完成任务,并有更多的时间来发现和解决 bug(笑,因此选择合适的工具对于我们来说是不可或缺的,这篇博文既是 emmet 的介绍,也算是对自己的前段时间的感受做一个总结。 最后,吃我一发 emmet 安利!

参考资料

emmet 官网 Emmet:HTML/CSS 代码快速编写神器 sublime text 2 中 Emmet8 个常用的技巧