为什么Sublime Text中input, img等标签没有闭合?
Sublime Text是个神器, 平时经常用.
不过很早就发现input, img在sublime text中是没有闭合标签 / 的. 我一般都是手动补上的, 今天突然想起这个问题, 所以想把原因搞清楚.
一. 以为是snippets.json的配置有问题
我们知道, sublime text中的emmet自动补全是有个配置文件来决定每个标签的补全代码是怎么样的.
所以我首先想到的是去查看这个文件:
点击'browse packages' –> Emmet –> emmet –> snippets.json, 发现里面的input, img 和 meta等标签都是有 / 的. 但是在编辑器里运行就没有了. 想想也是, emmet用的人这么多, 不可能犯这种低级错误.
二. 真正的原因: 不同的doctype
于是继续在网上搜索一番, 发现 / 消失的原因是不同的doctype引起的:
1. 只有在html:xt, 也就是XHTML 1.0 模式下 / 才会出现;
2. 在其他模式, 即使是html:5 <!doctype html>下面 / 也是没有闭合的. 我猜是因为HTML5没有严格的要求input img等标签闭合还是不闭合.
三. 如何解决: 让所有doctype下 / 都出现, input img等标签都闭合?
了解了原因后, 修改就简单了:
点击如下地方,
添加如下代码:
{
"syntaxProfiles": {
// Enable XHTML dialect for HTML syntax
"html": "xhtml"
}
}
大功告成...
从这个小细节也可以看出Emmet作者是个知识丰富, 考虑问题全面的人, 牛X...