Расширение коллекции тегов HTML5 - PullRequest
2 голосов
/ 23 марта 2012

Как вы знаете, HTML5 представил новый HTML-тег, такой как нижний колонтитул, заголовок, ...

Что мешает нам использовать множество других новых тегов и применять shiv к этим новым тегам? (из функционала, поведения, стиля, структуры, ... точек зрения)

Я хочу использовать следующий код (более семантический, лаконичный и читабельный, шаг вперед в Web 3.0):

<style type="text/css">
    book {
        display: block;
        color: red;
    }

    book title {
        display: inline-block;
        font-weight: bold;
    }
</style>

<book>
    <title>
        My Title
    </title>
</book>

вместо использования следующего традиционного (!) Кода:

   <style type="text/css">
        div.book {
            color: red;
        }

        div.book div.title {
            font-weight: bold;
        }
    </style>

    <div class="book">
        <span class="title">My title</span>
    </div>

Ответы [ 4 ]

5 голосов
/ 23 марта 2012

Это похоже на случай использования RDFa. На самом деле, в спецификации RDFa есть очень похожий пример. Вот что вы можете сделать (я знаю, это более многословно, чем то, что вы предлагаете, но кто сказал, что больше семантики означает больше краткости?)

<html
  xmlns="http://www.w3.org/1999/xhtml"
  prefix="bibo: http://purl.org/ontology/bibo/
          dc: http://purl.org/dc/terms/"
>
  <head>
    <title>Title of the web page</title>
    <style type="text/css">
      div[typeof="bibo:Book"] {
        color: red;
      }
      span[property="dc:title"] {
        font-weight: bold;
      }
    </style>
  </head>
  <body>
    <div typeof="bibo:Book">
      <span property="dc:title">My title</span>
    </div>
  </body>
</html>

Здесь вы говорите, что существует объект типа bibo:Book (вам необходимо определить пространство имен, которое ссылается на словарь, здесь Онтология библиографии ), и этот объект имеет dc:title (опять же, свойство определено в словаре Dublin Core ). Вы можете видеть, что я использую селекторы CSS2 для форматирования книги соответствующим образом.

2 голосов
/ 23 марта 2012

<title> уже является элементом в HTML. Знаете ли вы, что произойдет, если вы сделаете это для всех потребителей HTML? Например, в IE8 и более ранних версиях?

Даже если вы ограничиваете себя элементами, которых в настоящее время нет в HTML, как вы можете предотвратить появление элемента с таким же именем в будущем, если поведение в браузерах нарушает работу вашей страницы?

1 голос
/ 23 марта 2012

Использование собственных тегов хорошо работает до определенного момента, и это звучит заманчиво. Однако вы не добавляете никакого значения (семантики) таким образом; выдуманный тег не имеет определенного значения, и притворяться, что тег name описывает значение, является иллюзией.

У пользовательских тегов есть несколько проблем . Но ваш простой пример также демонстрирует расширенное использование тегов, определенных в спецификациях HTML. Кто знает, что произойдет, если документ содержит несколько элементов title или элемент title вне его «легальной» области, элемент head? Кто знает, что об этом подумают поисковые системы?

Дело в том, что title определен в HTML, и браузеры обрабатывают его по-своему, который вы не можете контролировать. Если браузер решит взять неуместный элемент title, как если бы он был в соответствии со стандартом в head, и поэтому использует его определенным образом (например, в верхней панели или элементе управления вкладками), что вы можете с этим поделать? Если он даже отменяет стандартный элемент title, что вы делаете?

Если вы просто используете пользовательские теги, вы можете решить игнорировать проблему IE (которая не может быть полностью решена с помощью JavaScript, поскольку JavaScript может быть отключен). Но вы все равно будете использовать что-то, что может произойти сбой завтра, когда какой-нибудь поставщик браузеров начнет поддерживать расширенный тег, и у него будет такое же имя, как у вашего тега (но другое значение). И <book> является хорошим кандидатом для этого. Это может даже пробиться к спецификациям HTML когда-нибудь; Черновики HTML5 уже имеют <article>.

Ваша таблица стилей может переопределить любую стандартную презентацию , описываемую в CSS сегодня, но браузеры могут использовать расширенные функции CSS или могут использовать функции представления, не описанные в CSS. И новые теги могут иметь стандартную функциональность , которая вас удивит и вряд ли можно ожидать сейчас.

1 голос
/ 23 марта 2012

То, что вы хотите, можно сделать в необработанном XML ...

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="main.css" type="text/css"?>
<Root>
  <book>
    <title>
      My Title
    </title>
  </book>
</Root>

и main.css:

book {
    display: block;
    color: red;
}

book title {
    display: inline-block;
    font-weight: bold;
}

Достаточно кратко?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...