it-swarm.com.ru

CSS / HTML: Как правильно сделать текст курсивом?

Как правильно способ сделать текст курсивом? Я видел следующие четыре подхода:

<i>Italic Text</i>

<em>Italic Text</em>

<span class="italic">Italic Text</span>

<span class="footnote">Italic Text</span>


<i>

Это "старый способ". <i> не имеет смыслового значения и передает только презентационный эффект выделения текста курсивом. Насколько я вижу, это явно неправильно, потому что это не семантическое.


<em>

Это использует семантическую разметку для чисто презентационных целей. Просто так получается, что <em> по умолчанию отображает текст курсивом, поэтому его часто используют те, кто знает, что <i> следует избегать, но не знает о его семантическом значении. Не весь курсив является курсивом, потому что он выделен. Иногда, это может быть полная противоположность, как примечание стороны или шепот.


<span class="italic">

Это использует класс CSS для размещения презентации. Это часто рекламируется как правильный путь, но опять же, это кажется мне неправильным. Похоже, это не передает больше семантического значения, что <i>. Но, как утверждают его сторонники, гораздо легче изменить весь текст, выделенный курсивом, позже, если, скажем, вы хотите, чтобы он был жирным. Но это не так, потому что тогда я остался бы с классом "курсив", который делал текст жирным. Кроме того, неясно, почему я бы хотел изменить весь курсивный текст на моем веб-сайте или, по крайней мере, мы можем подумать о случаях, когда это было бы нежелательно или необходимо.


<span class="footnote">

Это использует класс CSS для семантики. Пока что это лучший способ, но на самом деле у него две проблемы.

  1. Не весь текст имеет достаточное значение, чтобы гарантировать семантическую разметку. Например, действительно ли выделенный курсивом текст внизу страницы является сноской? Или это в сторону? Или что-то еще полностью. Возможно, он не имеет особого значения и должен быть выделен только курсивом, чтобы отделить его от текста, предшествующего ему.

  2. Семантическое значение может измениться, когда оно не присутствует в достаточной силе. Допустим, я согласился с "сноской", основанной только на тексте, который находится внизу страницы. Что происходит, когда через несколько месяцев я хочу добавить больше текста внизу? Это больше не сноска. Как мы можем выбрать семантический класс, который менее универсален, чем <em>, но избегает этих проблем?


Резюме

Похоже, что требование семантики кажется чрезмерно обременительным во многих случаях, когда стремление сделать что-то курсивом не должно нести смысловой смысл.

Кроме того, желание отделить стиль от структуры привело к тому, что CSS стал рекламироваться как замена <i>, когда бывали случаи, когда это было бы на самом деле менее полезно. Таким образом, это оставляет меня обратно со скромным тегом <i> и я задаюсь вопросом, является ли этот ход мыслей причиной, почему он остался в спецификации HTML5?

Есть ли хорошие посты в блоге или статьи на эту тему? Возможно, теми, кто участвовал в решении сохранить/создать тег <i>?

186
Rupert Madden-Abbott

Вы должны использовать разные методы для разных вариантов использования:

  1. Если вы хотите выделить фразу, используйте <em>.
  2. Тег <i> имеет новое значение в HTML5 , обозначая "диапазон текста альтернативным голосом или настроением". Таким образом, вы должны использовать этот тег для таких вещей, как мысли/отступления или идиоматические фразы. Спецификация также предлагает названия кораблей (но больше не предлагает названия книг/песен/фильмов; вместо этого используйте <cite>).
  3. Если выделенный курсивом текст является частью более широкого контекста, скажем, вводного абзаца, вы должны прикрепить стиль CSS к большему элементу, то есть p.intro { font-style: italic; }
195
DisgruntledGoat

<i> не ошибается, потому что он не является семантическим. Это неправильно (обычно), потому что это презентационно. Разделение проблем означает, что презентационная информация должна передаваться с помощью CSS.

В целом, назвать имена сложно, и имена классов не являются исключением, но, тем не менее, это то, что вам нужно сделать. Если вы используете курсив, чтобы выделить блок из основного текста, то, возможно, имя класса "различим по потоку" будет в порядке. Подумайте о повторном использовании: имена классов предназначены для категоризации - где еще вы хотели бы сделать то же самое? Это должно помочь вам определить подходящее имя.

<i> включен в HTML5, но ему присуща определенная семантика. Если причина, по которой вы помечаете что-то курсивом, соответствует одной из семантик, указанных в спецификации, было бы целесообразно использовать <i>. В противном случае нет.

21
Alohci

Я не эксперт, но я бы сказал, что если вы действительно хотите быть семантическим, вы должны использовать словари (RDFa).

Это должно привести к чему-то вроде этого:

<em property="italic" href="http://url/to/a/definition_of_italic"> Your text </em>

em используется для презентации (люди увидят ее курсивом), а атрибуты property и href указывают на то, что курсив (для машин).

Вы должны проверить, есть ли словарь для такого рода вещей, возможно, свойства уже существуют.

Больше информации о RDFa здесь: http://www.alistapart.com/articles/introduction-to-rdfa/

9
Guillaume Flandre

тЛ; др

Правильный способ сделать текст курсивом - игнорировать проблему, пока не дойдете до CSS, а затем стилизовать в соответствии с семантикой представления. Первые два варианта, которые вы предоставили, могут быть правильными в зависимости от обстоятельств. Последние два неверны.

Более длинное объяснение

Не беспокойтесь о представлении при написании разметки. Не думай курсивом. Думайте с точки зрения семантики. Если это требует акцента на стресс, то это em. Если он относится к основному контенту, то это aside. Может быть, это будет жирным шрифтом, возможно, это будет курсивом, может быть, это будет флуоресцентный зеленый. Неважно, когда вы пишете разметку.

Когда вы дойдете до CSS, у вас уже может быть семантический элемент, который имеет смысл размещать курсивом для всех его вхождений на вашем сайте. em - хороший пример. Но, возможно, вы хотите, чтобы все aside > ul > li на вашем сайте были выделены курсивом. Вы должны отделить размышления о разметке от размышлений о презентации.

Как указано в DisgruntledGoati семантически в HTML5. Хотя семантика мне кажется довольно узкой. Использование, вероятно, будет редким.

Семантика em была изменена в HTML5, чтобы подчеркнуть акцент. strong может также использоваться, чтобы показать важность. strong может быть выделен курсивом, а не жирным шрифтом, если вы хотите его стилизовать. Не позволяйте таблице стилей браузера ограничивать вас. Вы даже можете использовать сбросить таблицу стилей , чтобы помочь вам перестать думать в рамках значений по умолчанию. (Хотя есть некоторые оговорки .)

class="italic" это плохо. Не используйте это. Это не семантическое и не гибкое вообще. Презентация все еще имеет семантику, просто отличную от разметки.

class="footnote" эмулирует семантику разметки, а также неверен. Ваш CSS для сноски не должен быть полностью уникальным для вашей сноски. Ваш сайт будет выглядеть слишком грязно, если каждая часть оформлена по-разному. У вас должно быть несколько визуальных шаблонов, разбросанных по вашим страницам, которые вы можете превратить в классы CSS. Если ваш стиль для ваших сносок и ваших цитат очень похож, то вы должны поместить сходство в один класс, а не повторять себя снова и снова. Вы можете рассмотреть вопрос о принятии практики OOCSS (ссылки ниже).

Разделение проблем и семантики велики в HTML5. Люди часто не понимают, что разметка не единственное место, где важна семантика. Существует семантика контента (HTML), но есть также семантика представления (CSS) и семантика поведения (Javascript). У всех них есть своя отдельная семантика, на которую важно обращать внимание для удобства обслуживания и сохранения СУХОГО состояния.

OOCSS Resources

7
Eva

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

Если это не имеет особого значения, почему его необходимо отделять от текста, предшествующего ему? Этот фрагмент текста выглядит немного странно, потому что я выделил его курсивом без всякой причины.

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

Поскольку это достаточно сложные стили (со связанными проблемами Internet Explorer), которые используются повторно в разных местах, мы создаем классы, такие как box-1, box-2, чтобы мы могли повторно использовать стили.

Конкретный пример создания некоторого текстового курсива слишком тривиален, чтобы о нем волноваться. Лучше оставь такие мелочи, чтобы Семантические Наттеры спорили.

5
Paul D. Waite

Текст курсивом HTML отображает текст курсивом.

<i>HTML italic text example</i>

Акцент и сильные элементы могут быть использованы для повышения важности определенных слов или предложений.

<p>This is <em>emphasized </em> text format <em>example</em></p>

метка выделения следует использовать, когда вы хотите выделить точку в вашем тексте, а не обязательно, когда вы хотите выделить этот текст курсивом.

См. Это руководство для получения дополнительной информации: http://www.snoopcode.com/html/html-text-formating

1
Prabhakar

Элемент i не является семантическим, поэтому для программ чтения с экрана, робота Google и т. д. он должен быть прозрачным (как элементы span или div). Но это не очень хороший выбор для разработчика, потому что он объединяет уровень представления со структурным уровнем - и это плохая практика.

Элемент em (также strong) должен всегда использоваться в семантическом контексте, а не в презентационном. Это должно использоваться всякий раз, когда какое-то Слово или предложение важны. Просто для примера в предыдущем предложении я должен использовать em, чтобы сделать больший акцент на части "должен всегда использоваться". Браузеры предоставляют некоторые свойства CSS по умолчанию для этих элементов, но вы можете и должны переопределять значения по умолчанию, если ваш дизайн требует, чтобы это сохраняло правильное семантическое значение этих элементов.

<span class="italic">Italic Text</span> - самый неправильный путь. Прежде всего, это неудобно в использовании. Во-вторых, это предполагает, что текст должен быть курсивом. И слой структуры (HTML, XML и т.д.) не должен когда-либо делать это. Презентация всегда должна быть отделена от структуры.

<span class="footnote">Italic Text</span>, кажется, лучший способ для сноски. Он не предлагает какую-либо презентацию, просто описывает наценку. Вы не можете предсказать, что произойдет в функции. Если сноска будет расти в функции, вы можете быть вынуждены изменить имя класса (чтобы сохранить логику в вашем коде).

Поэтому, когда у вас есть важный текст, используйте em или strong, чтобы подчеркнуть его. Но помните, что эти элементы являются встроенными элементами и не должны использоваться для выделения большого блока текста.

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

1
Crozin

Я думаю, что ответ заключается в использовании <em>, когда вы намерены акцент.

Если при чтении текста для себя вы обнаружите, что используете слегка другой голос для подчеркивать точку, тогда он должен использовать <em>, потому что вы хотите, чтобы программа чтения с экрана выполняла тоже самое.

Если это чисто стилевая вещь, как, например, ваш дизайнер решил, что все ваши заголовки <h2> будут выглядеть лучше в курсиве Garamond, то нет никакой семантической причины включать его в HTML, и вам просто нужно изменить CSS для соответствующих элементов.

Я не вижу никакой причины использовать <i>, если вам не требуется поддержка какого-либо устаревшего браузера без CSS.

1
GrahamS

ОК, первое, что нужно отметить, это то, что <i> устарел и не должен использоваться <i> не устарел, но я все еще не рекомендую его использовать - подробности см. в комментариях. Это потому, что это полностью противоречит сохранению представления на уровне представления, на который вы указали. Точно так же, <span class="italic">, похоже, тоже разрушает шаблон.

Так что теперь у нас есть два реальных способа сделать что-то: <em> и <span class="footnote">. Помните, что em означает выделение. Если вы хотите сделать акцент на слове, фразе или предложении, вставьте его в теги <em> независимо от того, хотите ли вы курсив или нет. Если вы хотите изменить стиль другим способом, используйте CSS: em { font-weight: bold; font-style: normal; }. Конечно, вы также можете применить класс к тегу <em>: если вы решите, что вы хотите, чтобы определенные выделенные фразы отображались красным, назначьте им класс и добавьте его в CSS:

Fancy some <em class="special">shiny</em> text?

em { font-weight: bold; font-style: normal; }
em.special { color: red; }

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

0
Samir Talwar

Я бы сказал, используйте <em>, чтобы подчеркнуть встроенные элементы. Используйте класс для блочных элементов, таких как блоки текста. CSS или нет, текст все еще должен быть помечен. Будь то для семантики или для визуальной помощи, я предполагаю, что вы будете использовать его для чего-то значимого ...

Если вы подчеркиваете текст по ЛЮБОЙ причине, вы можете использовать <em> или класс, который выделит ваш текст курсивом.

Это нормально нарушать правила иногда!

0
tahdhaze09