css / html: как правильно сделать текст курсивом?

<p>как <em>правильно</em> способ сделать текст курсивом? я видел следующие четыре подхода:</p><pre><code><i>italic text</i> <em>italic text</em> <span class="italic">italic text</span> <span class="footnote">italic text</span> </code></pre><p><br></p><h1><code><i></code></h1><p>это "старый способ". <code><i></code> не имеет смыслового значения и передает только презентационный эффект выделения текста курсивом. насколько я вижу, это явно неправильно, потому что это не семантическое.</p><p><br></p><h1><code><em></code></h1><p>это использует семантическую разметку для чисто презентационных целей. просто так получается, что <code><em></code> по умолчанию отображает текст курсивом, поэтому его часто используют те, кто знает, что <code><i></code> следует избегать, но не знает о его семантическом значении. не весь курсив является курсивом, потому что он выделен. иногда, это может быть полная противоположность, как примечание стороны или шепот.</p><p><br></p><h1><code><span class="italic"></code></h1><p>это использует класс css для размещения презентации. это часто рекламируется как правильный путь, но опять же, это кажется мне неправильным. похоже, это не передает больше семантического значения, что <code><i></code>. но, как утверждают его сторонники, гораздо легче изменить весь текст, выделенный курсивом, позже, если, скажем, вы хотите, чтобы он был жирным. но это не так, потому что тогда я остался бы с классом "курсив", который делал текст жирным. кроме того, неясно, почему я бы хотел изменить весь курсивный текст на моем веб-сайте или, по крайней мере, мы можем подумать о случаях, когда это было бы нежелательно или необходимо.</p><p><br></p><h1><code><span class="footnote"></code></h1><p>это использует класс css для семантики. пока что это лучший способ, но на самом деле у него две проблемы.</p><ol> <li> <p>не весь текст имеет достаточное значение, чтобы гарантировать семантическую разметку. например, действительно ли выделенный курсивом текст внизу страницы является сноской? или это в сторону? или что-то еще полностью. возможно, он не имеет особого значения и должен быть выделен только курсивом, чтобы отделить его от текста, предшествующего ему.</p> </li> <li> <p>семантическое значение может измениться, когда оно не присутствует в достаточной силе. допустим, я согласился с "сноской", основанной только на тексте, который находится внизу страницы. что происходит, когда через несколько месяцев я хочу добавить больше текста внизу? это больше не сноска. как мы можем выбрать семантический класс, который менее универсален, чем <code><em></code>, но избегает этих проблем?</p> </li> </ol><p><br></p><h1>резюме</h1><p>похоже, что требование семантики кажется чрезмерно обременительным во многих случаях, когда стремление сделать что-то курсивом не должно нести смысловой смысл.</p><p>кроме того, желание отделить стиль от структуры привело к тому, что css стал рекламироваться как замена <code><i></code>, когда бывали случаи, когда это было бы на самом деле менее полезно. таким образом, это оставляет меня обратно со скромным тегом <code><i></code> и я задаюсь вопросом, является ли этот ход мыслей причиной, почему он остался в спецификации html5?</p><p>есть ли хорошие посты в блоге или статьи на эту тему? возможно, теми, кто участвовал в решении сохранить/создать тег <code><i></code>?</p>

<p>вы должны использовать разные методы для разных вариантов использования:</p><ol> <li>если вы хотите выделить фразу, используйте <code><em></code>.</li> <li>тег <code><i></code> имеет <a href="http://www.w3.org/tr/html5/text-level-semantics.html#the-i-element">новое значение в html5</a> , обозначая "диапазон текста альтернативным голосом или настроением". таким образом, вы должны использовать этот тег для таких вещей, как мысли/отступления или идиоматические фразы. спецификация также предлагает названия кораблей (но больше не предлагает названия книг/песен/фильмов; вместо этого используйте <code><cite></code>).</li> <li>если выделенный курсивом текст является частью более широкого контекста, скажем, вводного абзаца, вы должны прикрепить стиль css к большему элементу, то есть <code>p.intro { font-style: italic; }</code></li> </ol>

<p><code><i></code> не ошибается, потому что он не является семантическим. это неправильно (обычно), потому что это презентационно. разделение проблем означает, что презентационная информация должна передаваться с помощью css.</p><p>в целом, назвать имена сложно, и имена классов не являются исключением, но, тем не менее, это то, что вам нужно сделать. если вы используете курсив, чтобы выделить блок из основного текста, то, возможно, имя класса "различим по потоку" будет в порядке. подумайте о повторном использовании: имена классов предназначены для категоризации - где еще вы хотели бы сделать то же самое? это должно помочь вам определить подходящее имя.</p><p><code><i></code> включен в html5, но ему присуща определенная семантика. если причина, по которой вы помечаете что-то курсивом, соответствует одной из семантик, указанных в спецификации, было бы целесообразно использовать <code><i></code>. в противном случае нет.</p>

<p>я не эксперт, но я бы сказал, что если вы действительно хотите быть семантическим, вы должны использовать словари (rdfa).</p><p>это должно привести к чему-то вроде этого:</p><pre><code><em property="italic" href="http://url/to/a/definition\_of\_italic"> your text </em> </code></pre><p><code>em</code> используется для презентации (люди увидят ее курсивом), а атрибуты <code>property</code> и <code>href</code> указывают на то, что курсив (для машин).</p><p>вы должны проверить, есть ли словарь для такого рода вещей, возможно, свойства уже существуют.</p><p>больше информации о rdfa здесь: <a href="http://www.alistapart.com/articles/introduction-to-rdfa/">http://www.alistapart.com/articles/introduction-to-rdfa/</a> </p>

<blockquote> <p>возможно, он не имеет особого значения и должен быть выделен только курсивом, чтобы отделить его от текста, предшествующего ему.</p> </blockquote><p>если это не имеет особого значения, почему его необходимо отделять от текста, предшествующего ему? <em>этот фрагмент текста выглядит немного странно</em>, потому что я выделил его курсивом без всякой причины.</p><p>я все же понимаю вашу точку зрения. для дизайнеров весьма обычно производить проекты, которые изменяются визуально, не изменяя осмысленно. я видел это чаще всего с блоками: дизайнеры предоставят нам дизайны, включая коробки с различными комбинациями цветов, углов, градиентов и теней, без связи между стилями и смыслом контента.</p><p>поскольку это достаточно сложные стили (со связанными проблемами internet explorer), которые используются повторно в разных местах, мы создаем классы, такие как <code>box-1</code>, <code>box-2</code>, чтобы мы могли повторно использовать стили.</p><p>конкретный пример создания некоторого текстового курсива слишком тривиален, чтобы о нем волноваться. лучше оставь такие мелочи, чтобы семантические наттеры спорили.</p>

<p>текст курсивом html отображает текст курсивом.</p><pre><code><i>html italic text example</i> </code></pre><p>акцент и сильные элементы могут быть использованы для повышения важности определенных слов или предложений.</p><pre><code><p>this is <em>emphasized </em> text format <em>example</em></p> </code></pre><p>метка выделения следует использовать, когда вы хотите выделить точку в вашем тексте, а не обязательно, когда вы хотите выделить этот текст курсивом.</p><p>см. это руководство для получения дополнительной информации: <a href="http://www.snoopcode.com/html/html-text-formating">http://www.snoopcode.com/html/html-text-formating</a> </p>

<p>элемент <code>i</code> не является семантическим, поэтому для программ чтения с экрана, робота google и т. д. он должен быть прозрачным (как элементы <code>span</code> или <code>div</code>). но это не очень хороший выбор для разработчика, потому что он объединяет уровень представления со структурным уровнем - и это плохая практика.</p><p>элемент <code>em</code> (также <code>strong</code>) должен всегда использоваться в семантическом контексте, а не в презентационном. это должно использоваться всякий раз, когда какое-то слово или предложение важны. просто для примера в предыдущем предложении я должен использовать <code>em</code>, чтобы сделать больший акцент на части "должен всегда использоваться". браузеры предоставляют некоторые свойства css по умолчанию для этих элементов, но вы можете и должны переопределять значения по умолчанию, если ваш дизайн требует, чтобы это сохраняло правильное семантическое значение этих элементов.</p><p><code><span class="italic">italic text</span></code> - самый неправильный путь. прежде всего, это неудобно в использовании. во-вторых, это предполагает, что текст должен быть курсивом. и слой структуры (html, xml и т.д.) <strong>не должен</strong> когда-либо делать это. презентация всегда должна быть отделена от структуры.</p><p><code><span class="footnote">italic text</span></code>, кажется, лучший способ для сноски. он не предлагает какую-либо презентацию, просто описывает наценку. вы не можете предсказать, что произойдет в функции. если сноска будет расти в функции, вы можете быть вынуждены изменить имя класса (чтобы сохранить логику в вашем коде).</p><p>поэтому, когда у вас есть важный текст, используйте <code>em</code> или <code>strong</code>, чтобы подчеркнуть его. но помните, что эти элементы являются встроенными элементами и не должны использоваться для выделения большого блока текста.</p><p>используйте css, если вы заботитесь только о том, как что-то выглядит, и всегда старайтесь избегать лишней разметки.</p>

<p>я думаю, что ответ заключается в использовании <code><em></code>, когда вы <em>намерены</em> акцент.</p><p>если при чтении текста для себя вы обнаружите, что используете <em>слегка</em> другой голос для <em>подчеркивать</em> точку, тогда он должен использовать <code><em></code>, потому что вы хотите, чтобы программа чтения с экрана выполняла тоже самое.</p><p>если это чисто стилевая вещь, как, например, ваш дизайнер решил, что все ваши заголовки <code><h2></code> будут выглядеть лучше в курсиве garamond, то нет никакой семантической причины включать его в html, и вам просто нужно изменить css для соответствующих элементов.</p><p>я не вижу никакой причины использовать <code><i></code>, если вам не требуется поддержка какого-либо устаревшего браузера без css.</p>

<p>ок, первое, что нужно отметить, это то, что <del><code><i></code> устарел и не должен использоваться</del> <code><i></code> не устарел, но я все еще не рекомендую его использовать - подробности см. в комментариях. это потому, что это полностью противоречит сохранению представления на уровне представления, на который вы указали. точно так же, <code><span class="italic"></code>, похоже, тоже разрушает шаблон.</p><p>так что теперь у нас есть два реальных способа сделать что-то: <code><em></code> и <code><span class="footnote"></code>. помните, что <code>em</code> означает <em>выделение</em>. если вы хотите сделать акцент на слове, фразе или предложении, вставьте его в теги <code><em></code> независимо от того, хотите ли вы курсив или нет. если вы хотите изменить стиль другим способом, используйте css: <code>em { font-weight: bold; font-style: normal; }</code>. конечно, вы также можете применить класс к тегу <code><em></code>: если вы решите, что вы хотите, чтобы определенные выделенные фразы отображались красным, назначьте им класс и добавьте его в css:</p><pre><code>fancy some <em class="special">shiny</em> text? em { font-weight: bold; font-style: normal; } em.special { color: red; } </code></pre><p>если вы применяете курсив по какой-то другой причине, используйте другой метод и задайте разделу класс. таким образом, вы можете изменить его стиль в любое время, не корректируя html. в вашем примере сноски не должны выделяться - фактически, они должны быть подчеркнуты, поскольку смысл сноски - показывать неважную, но интересную или полезную информацию. в этом случае вам гораздо лучше применить класс к сноске и сделать его похожим на один в уровне представления - css.</p>

<p>я бы сказал, используйте <code><em></code>, чтобы подчеркнуть встроенные элементы. используйте класс для блочных элементов, таких как блоки текста. css или нет, текст все еще должен быть помечен. будь то для семантики или для визуальной помощи, я предполагаю, что вы будете использовать его для чего-то значимого ...</p><p>если вы подчеркиваете текст по любой причине, вы можете использовать <code><em></code> или класс, который выделит ваш текст курсивом.</p><p>это нормально <em>нарушать правила</em> иногда!</p>