Подтвердить что ты не робот

Пользовательские теги... почему бы и нет?

Я нашел сайт с руководством по добавлению пользовательских тегов в html, так же, как люди делают, т.е. работают с новыми тегами HTML5. Должен признаться, я думаю, было бы здорово добавить свои собственные теги, упростить "сканирование" кода и найти то, что вы ищете. Но каждый сайт, который я нашел об этом, люди говорят, что это нехорошо.... но почему это не хорошо?

Пример html с классом:

<ul class="commentlist">
    <li class="comment odd">
    <div class="1">
        <div class="avatar">
            <img src="http://placehold.it/60x60" width="60" height="60" />
        </div>
        <div class="metadata">
            <div class="name">Name</div>
            <p>response1</p>
        </div>
    </div>
    <ul class="children">
        <li class="comment even">
            <div class="2">
                <div class="avatar">
                    <img src="http://placehold.it/60x60" width="60" height="60" />
                </div>
                <div class="metadata">
                    <div class="name">Name</div>
                    <p>response1a</p>
                </div>
            </div>
        </li>
        <li class="comment odd">
            <div class="3">
                <div class="avatar">
                    <img src="http://placehold.it/60x60" width="60" height="60" />
                </div>
                <div class="metadata">
                    <div class="name">Name</div>
                    <p>response1b</p>
                </div>
            </div>
        </li>
    </ul>
</li>

И вот что я мог бы делать с пользовательскими тегами, я думаю, что было бы намного легче найти способ, так почему бы и нет:

<clist>
<ccommentbox class="odd">
    <ccomment class="1">
        <cavatar>
            <img src="http://placehold.it/60x60" width="60" height="60" />
        </cavatar>
        <cdata>
            <cname>Name</cname>
            <ctext>response1</ctext>
        </cdata>
    </ccomment>
    <cchildren>
        <ccommentbox class="even">
            <ccomment class="2">
                <cavatar>
                    <img src="http://placehold.it/60x60" width="60" height="60" />
                </cavatar>
                <cdata>
                    <cname>Name</cname>
                    <ctext>response1a</ctext>
                </cdata>
            </ccomment>
        </ccommentbox>
        <ccommentbox class="odd">
            <ccomment class="3">
                <cavatar>
                    <img src="http://placehold.it/60x60" width="60" height="60" />
                </cavatar>
                <cdata>
                    <cname>Name</cname>
                    <ctext>response1b</ctext>
                </cdata>
            </ccomment>
        </ccommentbox>
    </cchildren>
</ccommentbox>

4b9b3361

Ответ 1

Пользовательские теги не злы

просто подумайте об этом:

  • Они не распознаются в IE 6-8 по умолчанию → вам нужно использовать JavaScript для представления каждого настраиваемого тега, который вы используете на странице, например: document.createElement('custom-tag') Это означает, что ваш веб-сайт будет отображаться корректно с включенным JavaScript на
  • В большинстве браузеров ваши пользовательские теги будут обрабатываться как встроенные элементы типа <span>, это означает, что вам нужно написать CSS, чтобы объявить их как custom-tag { display: block }
  • Я не нашел ресурса, который мог бы доказать, что пользовательские теги оказывают негативное влияние на поисковые системы. Фактически Google выпустил Angular.js, который продвигает пользовательские теги (<pane> и <tab>) в своих примерах на .
  • Большинство редакторов HTML будут отмечать ваши пользовательские теги как недопустимые HTML, потому что они не входят в официальную спецификацию.

Подводя итог:

  • Используйте специальные теги, когда есть важные элементы, которые имеют больше значение <div> и не существует HTML 4/5 эквивалент. Это особенно верно для веб-приложений, которые проанализировать DOM для специальных тегов/атрибутов/классов для создания компоненты (например, Angular.js).
  • Если все, что вы создаете, это простой веб-сайт с обычным контентом, к стандартному HTML. Вы хотите, чтобы ваш сайт работал и без Включен JavaScript.
  • Если вы создаете веб-приложение, где пользовательские теги могут действительно помочь сделать источник чище и выразить специальную семантику, использовать их. Все негативные последствия, упомянутые выше (JavaScript должен быть включено/объявление CSS) не будет иметь значения для этих случаев. Такой же правила применяются к пользовательским атрибутам.

Подробнее об этой теме: совместимость IE для Angular.js

Ответ 2

Существует несколько причин, почему вы не должны этого делать.

  • Сначала:. Создавая собственные теги, вы теряете функциональность тегов, например ul and li. Ваши пользовательские теги будут просто разделяющими div, и это не даст вам результатов, которые вы ищете. Да, вы можете стилизовать теги, чтобы дублировать эти функции, но зачем тратить все это время на то, что уже делает браузер.

  • Вторые: Люди с ограниченными возможностями не смогут использовать ваш сайт, потому что он не будет соответствовать стандартным HTML. Те, кто слепые, будут использовать вспомогательные технологии, которые читают html и представляют содержание в устной форме.

Другая причина заключается в том, что браузеры и javascript не всегда хорошо работают с этими настраиваемыми тегами. Вероятно, у вас будет больше проблем, чем вы себе представляете. Это будет сложнее сделать ваши приложения кросс-платформенными, если вы это сделаете.

Ответ 3

Элементы, определенные в HTML, имеют семантику. Они могут быть поняты браузерами (особенно полезными, если у них нет поддержки CSS), программами для чтения с экрана, поисковыми системами и любым другим пользовательским агентом, а затем выражаются пользователю.

Ваши собственные элементы бессмысленны.

Ответ 4

Я думаю, вы хотите использовать XSLT, чтобы преобразовать ваш XML в действительный HTML. Если вы вводите свой собственный тег, вы больше не пишете HTML, но, вероятно, XML или SGML.

Ответ 5

Ну, с одной стороны, вам нужно будет определить CSS для всех тех пользовательских элементов, которые будут вести себя так, как вы хотите (например, сделать <ccommentbox> похожим на список), что вызывает ненужный CSS. Это также затрудняет понимание поисковыми роботами вашего сайта.