我在HTML注释中看到矛盾的文档和意见,关于“-”是否仍然无效。我在此看到的大多数文档都有5-10年或更久的历史。考虑以下使用CSS类名的BEM语法的HTML简化代码。
<html>
<head>
<meta charset="utf-8">
<title>Page</title>
</head>
<body>
<div>
<header>
<div>
<div>
<div><a href="/">link</a></div>
<!-- <div class="block__element--modifier"></div> -->
<div></div>
<div></div>
</div>
</div>
</header>
</div>
</body>
</html>
我正在考虑使用一个解析器,该解析器读取此内容并自动关闭我的标头,从而产生此结果输出。通过查看代码,它将注释类中的“-”标识为注释的结束,注释结束的div标签被使用,然后确定该级别要求关闭标头。
<html>
<head>
<meta charset="utf-8">
<title>Page</title>
</head>
<body>
<div>
<header>
<div>
<div>
<div><a href="/">link</a></div>
<!-- <div class="block__element--modifier"></div> -->
<div></div>
<div></div>
</div>
</header>
</div>
</header>
</div>
</body>
</html>
尽管留下注释的代码不是最好的,但这在典型的开发周期内是完全正常的事情。在我们的例子中,此输出导致此页面的显示非常混乱。
此输出显然是不正确的,但是我想了解什么是正确的。根据{{3}}和其他文章的说法,HTML中不应使用“-”或双连字符,因为XML不允许使用。确实是this,但它似乎是HTML4 spec discourages this。我一直很了解HTML5 doesn't make this same distinction。实际上,当我沿着那条路走时,我从未感到过快乐?。
这里的影响是BEM是一个通用约定,如果当前的HTML规范禁止这样做,我们可能要避免BEM或对其进行修改以供将来使用。尽管默认情况下HTML和解析器是相当宽容的,但是遵守规范通常是实现未来稳定性的最佳实践。有想法吗?
答案 0 :(得分:0)
这就是为什么原始BEM命名方案不同的原因:
block-name__elem-name_mod-name_mod-val
-
)隔开。__
)隔开。_
)隔开。_
)隔开。有关更多信息,请参见https://en.bem.info/methodology/naming-convention/。