Я вижу противоречивую документацию и мнения о том, является ли "-" недействительным в комментарии HTML. Большинству документации, которую я видел по этому вопросу, 5-10 и более лет. Рассмотрим следующий упрощенный код в HTML с использованием синтаксиса BEM для имен классов CSS.
<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>
Хотя оставлять закомментированный код не самый лучший, это вполне нормальная вещь в типичном цикле разработки. В нашем случае этот вывод вызывает очень неправильное отображение этой страницы.
Этот вывод явно не верен, но я хочу понять, что должно быть правильно. Согласно this и другим постам существует идея, что "-" или двойные дефисы не должны использоваться в HTML, потому что это не разрешено в XML. Действительно, спецификация HTML4 препятствует этому , но, похоже, HTML5 не делает этого различия . У меня всегда было понимание, что логика и синтаксический анализ действительно не должны использоваться для HTML, потому что на самом деле это не подмножество xml . На самом деле, я никогда не был счастлив, когда шел по этому пути ».
Влияние здесь заключается в том, что BEM является общим соглашением, и если текущая спецификация HTML запрещает это, мы можем захотеть избежать BEM или изменить его для будущего использования. В то время как HTML и парсеры по умолчанию довольно просты, придерживаться спецификации, как правило, является лучшей практикой для будущей стабильности. Мысли?