CSS / HTML : 텍스트를 이탤릭체로 만드는 올바른 방법은 무엇입니까?


202

텍스트를 기울임 꼴로 만드는 올바른 방법 은 무엇입니까 ? 나는 다음과 같은 네 가지 접근법을 보았다.

<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>. 그러나 그 지지자들은 울부 짖습니다. 대담하게 원한다면 나중에 모든 기울임 꼴 텍스트를 변경하는 것이 훨씬 쉽습니다. 그러나 텍스트가 굵게 표시되는 "italic"이라는 클래스가 남아 있기 때문에 그렇지 않습니다. 또한 왜 내 웹 사이트에서 모든 기울임 꼴 텍스트를 변경하고 싶거나 적어도 이것이 바람직하지 않거나 필요하지 않은 경우를 생각할 수 있는지 분명하지 않습니다.


<span class="footnote">

시맨틱에 CSS 클래스를 사용합니다. 지금까지 이것이 최선의 방법으로 보이지만 실제로 두 가지 문제가 있습니다.

  1. 모든 텍스트가 의미 적 마크 업을 보증하기에 충분한 의미를 갖는 것은 아닙니다. 예를 들어, 페이지 하단의 기울임 꼴 텍스트는 실제로 각주입니까? 아니면 제쳐두고 있습니까? 아니면 완전히 다른 것. 아마도 특별한 의미가 없으며 앞의 텍스트와 표현을 구분하기 위해 기울임 꼴로 렌더링해야합니다.

  2. 의미가 충분한 강도로 존재하지 않으면 의미가 변경 될 수 있습니다. 페이지 맨 아래에있는 텍스트 외에는 "각주"를 사용했다고 가정 해 보겠습니다. 몇 개월 후 하단에 더 많은 텍스트를 추가하려고하면 어떻게됩니까? 더 이상 각주가 아닙니다. 우리는 덜 일반적 <em>이지만 이러한 문제를 피하는 의미 론적 클래스를 어떻게 선택할 수 있습니까?


요약

이탤릭체를 만들려는 욕구가 의미 론적 의미를 갖기위한 것이 아닌 많은 경우에 의미론의 요구가 지나치게 부담이되는 것으로 보인다.

또한 스타일과 구조를 분리하려는 의도로 인해 CSS <i>가 실제로 유용하지 않을 때를 대신하여 CSS가 선전되었습니다 . 그래서 이것은 겸손한 <i>태그로 다시 돌아와서이 생각의 기차가 HTML5 사양에 남아있는 이유인지 궁금합니다.

이 주제에 관한 좋은 블로그 게시물이나 기사가 있습니까? 아마도 <i>태그 를 유지 / 생성하기로 한 결정에 관련된 사람들에 의해 ?


4
HTML5는 기존 브라우저가 HTML을 처리하는 방법을 표준화하려는 시도이기 때문에 <i> 태그는 HTML5에 있습니다
Gareth

3
비슷한 / 관련 게시물에 대한 404를 얻습니다.
Martin Hansen Lennox

@MartinHansenLennox 당신은 항상 그 링크 로트에 깃발을 꽂아 투표를하고 사라지게 할 수 있습니다. 나는 이미 투표했다.
nilon

관심을 끄는 깃발? 나는 그것이 단지 불쾌한 / 스패 미 한 것들을위한 것이라고 생각했습니다. 그러나 그래, 끝났어
Martin Hansen Lennox

답변:


211

사용 사례마다 다른 방법을 사용해야합니다.

  1. 문구를 강조하려면을 사용하십시오 <em>.
  2. <i>태그는 HTML5 에서 "대체 음성 또는 분위기의 텍스트 범위"를 나타내는 새로운 의미를 갖습니다 . 따라서이 태그를 생각 / 옆으로 또는 관용구와 같은 것에 사용해야합니다. 이 스펙은 또한 선박 이름을 제안하지만 더 이상 책 / 노래 / 영화 이름을 제안하지 않습니다 <cite>. 대신에 사용하십시오.
  3. 기울임 꼴 텍스트가 큰 문맥의 일부인 경우 (예 : 소개 단락) CSS 스타일을 큰 요소에 연결해야합니다. p.intro { font-style: italic; }

2
+1, 나에게 건전한 조언처럼 보인다. 포인트 3은 진정한 의미 론적 의도없이 미학적 이유로 순수한 텍스트 스타일을 변경하는 좋은 예라고 생각합니다.
GrahamS

1
사례 2는 HTML5 초안이 실제로 말한 내용과 일치하지 않습니다. 이는 모호하고 버전에 따라 다르지만 i책, 노래, 앨범 또는 영화 이름에 사용할 것을 제안하는 버전은 없습니다 (확실히을 (를) 사용할 후 보임 cite).
Jukka K. Korpela

@ Jukka 나는 그것이 어느 시점에 있다고 확신합니다. 그럼에도 불구하고 지금은 없으므로 내 답변을 업데이트했습니다.
DisgruntledGoat

w3.org/TR/html5/text-level-semantics.html#the-em-element 에서 언급 한대로 요소를 사용하여 텍스트를 기울임 꼴로 표시하려면 <i>를 사용해야합니다. em 요소는 일반적인 "italics"요소가 아닙니다. 때로는 텍스트가 마치 다른 분위기 나 목소리에있는 것처럼 나머지 단락에서 두드러지게 나타납니다. 이를 위해 i 요소가 더 적합합니다.
Dimitris Zorbas

21

<i>의미가 없기 때문에 잘못되지 않습니다. 프레젠테이션이기 때문에 (보통) 잘못되었습니다. 우려의 분리는 프리젠 테이션 정보가 CSS와 함께 전달되어야 함을 의미합니다.

일반적으로 이름을 지정하는 것은 까다로울 수 있으며 클래스 이름도 예외는 아니지만 그럼에도 불구하고해야 할 일입니다. 이탤릭체를 사용하여 본문에서 블록을 돋보이게하는 경우 클래스 이름이 "flow-distinctive"일 수 있습니다. 재사용에 대해 생각해보십시오. 클래스 이름은 분류를위한 것입니다. 다른 곳에서 같은 일을 하시겠습니까? 적절한 이름을 식별하는 데 도움이됩니다.

<i>HTML5에 포함되어 있지만 특정 의미론이 제공됩니다. 이탤릭체로 표시하는 이유가 사양에서 식별 된 의미 중 하나를 충족하는 경우을 사용하는 것이 좋습니다 <i>. 그렇지 않으면 아닙니다.


10

나는 전문가가 아니지만 실제로 의미를 원한다면 어휘 (RDFa)를 사용해야한다고 말하고 싶습니다.

결과는 다음과 같습니다.

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

em프리젠 테이션에 사용되며 (인간은 기울임 꼴로 표시됨) propertyhref속성은 기울임 꼴 (기계 용)의 정의에 연결됩니다.

그런 종류의 어휘가 있는지 확인해야합니다. 속성이 이미있을 수 있습니다.

RDFa에 대한 자세한 정보는 여기 : http://www.alistapart.com/articles/introduction-to-rdfa/


2
+1은 암시 적이거나 상속 된 의미론 (싸고 쉽고 쉽지는 않지만 약한 형태)과 개발자가 자신의 컨텐츠에 가치를 추가하기 위해 약간의 노력을 기울여야하는 명시 적 의미론 (비싸고 노동 집약적이지만 생산량을 산출 할 수있는)과의 차이점이 있음을 지적 양질의 콘텐츠).
로그 아웃

7

TLDR

텍스트를 기울임 꼴로 만드는 올바른 방법은 CSS에 도달 할 때까지 문제를 무시한 다음 프리젠 테이션 시맨틱에 따라 스타일을 지정하는 것입니다. 제공 한 처음 두 옵션은 상황에 따라 맞을 수 있습니다. 마지막 두가 잘못되었습니다.

더 긴 설명

마크 업을 작성할 때 프리젠 테이션에 대해 걱정하지 마십시오. 이탤릭체로 생각하지 마십시오. 의미 론적으로 생각하십시오. 스트레스 강조가 필요한 경우 em. 메인 콘텐츠와 접하는 경우는 aside입니다. 어쩌면 대담하고 이탤릭체 일 수도 있고 형광등 일 수도 있습니다. 마크 업을 작성할 때는 중요하지 않습니다.

CSS에 도달하면 사이트에있는 모든 항목에 대해 이탤릭체를 넣는 의미 론적 의미 요소가 이미있을 수 있습니다. em좋은 예입니다. 그러나 aside > ul > li여러분은 이탤릭체로 된 사이트를 모두 원할 것 입니다. 마크 업에 대한 생각과 프레젠테이션에 대한 생각을 분리해야합니다.

DisgruntledGoat 에서 언급했듯이 iHTML5에서는 의미가 있습니다. 그래도 시맨틱은 다소 좁아 보입니다. 아마도 사용이 거의 없을 것입니다.

emHTML5 의 의미는 스트레스 강조로 변경되었습니다. strong중요도를 나타내는 데 사용될 수 있습니다. strong스타일을 지정하려는 경우 대담하지 않고 기울임 꼴이 될 수 있습니다. 브라우저의 스타일 시트로 제한하지 마십시오. 스타일 시트 재설정을 사용 하여 기본값 내에서 생각을 멈출 수 있습니다. (그러나 몇 가지주의 사항이 있습니다.)

class="italic"나쁘다. 사용하지 마십시오. 시맨틱하지 않으며 전혀 유연하지 않습니다. 프리젠 테이션에는 여전히 의미가 있으며 마크 업과는 다른 종류입니다.

class="footnote"마크 업 시맨틱을 에뮬레이트하고 있으며 올바르지 않습니다. 각주에 대한 CSS는 각주에 고유하지 않아야합니다. 모든 부분의 스타일이 다르면 사이트가 너무 지저분 해 보일 것입니다. CSS 클래스로 전환 할 수 있도록 시각적 패턴이 페이지에 흩어져 있어야합니다. 각주 스타일과 블록 인용구의 스타일이 매우 유사한 경우 반복해서 반복하지 말고 유사성을 한 클래스에 넣어야합니다. OOCSS의 관행 채택을 고려할 수 있습니다 (아래 링크).

HTML5에서는 우려와 의미의 분리가 큽니다. 사람들은 종종 마크 업이 의미론이 중요한 유일한 장소가 아니라는 것을 인식하지 못합니다. 컨텐츠 시맨틱 (HTML)이 있지만, 프리젠 테이션 시맨틱 (CSS) 및 행동 시맨틱 (JavaScript)도 있습니다. 그들은 모두 유지 보수성과 DRY를 유지하기 위해주의를 기울여야하는 자체 의미가 있습니다.

OOCSS 자료


5

아마도 특별한 의미가 없으며 앞의 텍스트와 표현을 구분하기 위해 기울임 꼴로 렌더링해야합니다.

특별한 의미가 없다면 왜 이전의 텍스트와 표현 적으로 분리해야합니까? 이 텍스트는 아무 이유없이 이탤릭체로 표시 되었기 때문에 조금 이상하게 보입니다 .

그래도 당신의 요점을 이해합니다. 디자이너가 의미있는 변화없이 시각적으로 변화하는 디자인을 만드는 것은 드문 일이 아닙니다. 필자는 이것을 상자에서 가장 자주 보았습니다. 디자이너는 색상, 모서리, 그라디언트 및 그림자의 다양한 조합이있는 상자를 포함하여 스타일과 내용의 의미가없는 상자를 포함한 디자인을 제공합니다.

이들은 다른 장소에서 다시 사용 (관련 인터넷 익스플로러 문제에) 합리적으로 복잡한 스타일이기 때문에, 우리는 같은 클래스를 만들고 box-1, box-2우리가 할 수 있도록하는 스타일을 다시 사용합니다.

일부 텍스트를 이탤릭체로 만드는 구체적인 예는 너무 사소해서 걱정할 수 없습니다. 시맨틱 Nutters에 대해 그런 식으로 축소하십시오.


1
나는 동의하는 경향이있다. 특정 마크 업이 다르게 표시 될 수있는 근거를 제시 할 수 없다면 올바른 방식으로 생각하지 않는 것입니다. [이 텍스트]가 이탤릭체 인 이유를 설명 할 수 없다면 [다른 텍스트]가 다른 페이지 / 페이지의 이탤릭체 인 경우를 어떻게 알 수 있습니까? 당신이 만약 유사 이유를 알고, 그 이유 유용한 이름을 가지고 올 수 있어야한다
가레스

1
물론. CSS를 사용하여 의미 론적 마크 업을 디자이너가 원하는 것 (x- 브라우저)으로 바꾸는 방법이없는 경우도 있습니다. 융통성이 있어야합니다.
Skilldrick

1
텍스트 스타일을 지정하는 데는 미학적 이유가 있습니다. 예를 들어, 각 단락의 처음 몇 단어를 작은 대문자로 스타일을 지정하는 (순수하게 미학적 인) 규칙이 있습니다. 의미 적 의미가 없습니다. 의미가없는 이유로 HTML에서 텍스트를 마크 업할 수 있어야합니다.

3

HTML 기울임 꼴 텍스트는 기울임 꼴 형식으로 텍스트를 표시합니다.

<i>HTML italic text example</i>

강조와 강력한 요소는 모두 특정 단어 나 문장의 중요성을 높이는 데 사용될 수 있습니다.

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

강조 태그는 텍스트에서 한 점을 강조하고 싶을 때 반드시 텍스트를 이탤릭체로 나타내려고 할 때 사용해야합니다.

자세한 내용은이 안내서를 참조하십시오 : HTML 텍스트 형식


2

i소자 그래서 등 스크린 리더, Google 검색을 위해, 그것은 투명 (단지 같은 일종의되어야 비 론적 인 span또는 div요소). 그러나 프리젠 테이션 레이어를 구조 레이어와 결합하기 때문에 개발자에게 적합하지 않습니다. 이는 나쁜 습관입니다.

em요소 ( strong또한)는 표현 적 맥락이 아닌 의미 론적 맥락에서 항상 사용되어야한다. 단어 나 문장이 중요 할 때마다 사용해야합니다. 이전 문장의 예를 들어 em, '항상 사용해야한다'부분에 더 중점을 두어야합니다. 브라우저는 이러한 요소에 대한 몇 가지 기본 CSS 속성을 제공하지만 디자인에서 이러한 요소의 올바른 의미를 유지하기 위해 필요한 경우 기본값을 무시할 수 있습니다.

<span class="italic">Italic Text</span>가장 잘못된 방법입니다. 우선, 사용하기 불편합니다. 둘째, 텍스트가 기울임 꼴이어야한다고 제안합니다. 그리고 구조 계층 (HTML, XML 등) 그렇게하지 않아야 합니다. 프리젠 테이션은 항상 구조와 분리되어 있어야합니다.

<span class="footnote">Italic Text</span>각주에 가장 좋은 방법 인 것 같습니다. 프레젠테이션을 제안하지 않으며 마크 업 만 설명합니다. 이 기능에서 어떤 일이 일어날 지 예측할 수 없습니다. 기능에서 각주가 커지면 클래스 이름을 변경해야 할 수도 있습니다 (코드에 논리를 유지하기 위해).

당신은 몇 가지 중요한 텍스트를 사용했습니다 때마다 그래서 emstrong강조 그것. 그러나 이러한 요소는 인라인 요소이므로 큰 텍스트 블록을 강조하는 데 사용해서는 안됩니다.

무언가 모양 만 신경 쓰고 항상 추가 마크 업을 피하려는 경우 CSS를 사용하십시오.


1

나는 대답은 사용하는 것입니다 생각 <em>당신이 때 의도 강조.

텍스트를 스스로 읽을 때 포인트 를 강조 하기 위해 약간 다른 음성을 사용 하는 경우 화면 판독기가 동일한 작업을 수행하기를 원 하기 때문에 사용해야합니다 .<em>

디자이너와 같이 스타일 <h2>이 이탤릭 가라 몬드에서 더 좋아 보일 것이라고 결정한 경우 HTML에 포함시킬 의미 론적 이유가 없으므로 적절한 요소에 대해 CSS를 변경해야합니다.

<i>CSS가없는 일부 레거시 브라우저를 구체적으로 지원해야하는 경우가 아니면 을 사용해야 할 이유 가 없습니다.


의견에서 지적했듯이 HTML5의 의도가 약간 변경되어 문제가 혼란스러워 보입니다. 따라서 HTML5를 이미 사용하고 있다면 <i>의미 론적으로도 유용하다고 생각합니다.
GrahamS

0

<em>인라인 요소를 강조 하기 위해 사용한다고 말하고 싶습니다 . 텍스트 블록과 같은 블록 요소에 클래스를 사용하십시오. CSS 여부에 관계없이 텍스트에는 여전히 태그를 지정해야합니다. 시맨틱이든 시각적 보조이든 관계없이 의미있는 무언가를 위해 사용한다고 가정합니다 ...

어떤 이유로 든 텍스트를 강조하는 경우 <em>, 또는 텍스트를 이탤릭체로 만드는 클래스를 사용할 수 있습니다 .

때로는 규칙어기는 것이 좋습니다!


0

첫 번째로 주목해야 할 것은 <i> 더 이상 사용되지 않으며 사용해서는 안됩니다 <i>더 이상 사용되지 않지만 여전히 사용하지 않는 것이 좋습니다. 자세한 내용은 주석을 참조하십시오. 이는 프레젠테이션 레이어에서 프레젠테이션을 유지하는 데 전적으로 반대하기 때문입니다. 마찬가지로 <span class="italic">곰팡이도 부러진 것 같습니다.

그래서 지금 우리는 일을 두 가지 실제 방법이있다 : <em><span class="footnote">. 그것은 강조em의미합니다 . 단어, 구 또는 문장에 강조를 적용하려면 기울임 꼴 여부에 관계없이 태그에 붙입니다. 다른 방법으로 스타일을 변경하려면 CSS를 사용하십시오 . 물론 태그에 클래스를 적용 할 수도 있습니다. 강조 표시된 특정 문구를 빨간색으로 표시하려면 클래스를 제공하고 CSS에 추가하십시오.<em>em { font-weight: bold; font-style: normal; }<em>

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

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

다른 이유로 이탤릭체를 적용하는 경우 다른 방법을 사용하여 섹션에 클래스를 제공하십시오. 이렇게하면 HTML을 조정하지 않고도 원하는 스타일을 변경할 수 있습니다. 귀하의 예에서, 각주는 강조되지 않아야합니다. 실제로 각주의 요점은 중요하지 않지만 흥미 롭거나 유용한 정보를 표시하는 것이므로 강조하지 않아야합니다. 이 경우 각주에 클래스를 적용하고 프리젠 테이션 레이어의 클래스 인 CSS처럼 보이게하는 것이 훨씬 좋습니다.


6
<i>더 이상 사용되지 않습니다.
Quentin

@DavidDorward : 올 바르고, <i>더 이상 사용되지 않지만 HTML4 스펙은 "모두 더 이상 사용되지는 않지만 스타일 시트를 선호하여 사용하지 않는 것이 좋습니다"
GrahamS

@Graham : HTML5 사양을 확인하고 <i>"대체 음성 또는 분위기에서 텍스트 범위"를 나타내는 데 사용됩니다.
DisgruntledGoat

@DisgruntledGoat : HTML5 사양의 개발을 너무 밀접하게 따르지 않았다는 것을 인정해야하지만, 이제 <i>의미 론적 의미 로 개조하려고 시도한 것처럼 보입니다 . 개인적으로 나는 그들이 지금이 문제를 어지럽 힌 것으로 생각하지만, 여전히 저자들은 다른 요소들이 요소보다 더 적용 가능한지 i, 예를 들어 em스트레스 강조를위한 요소인지 고려할 것을 권장합니다 .
GrahamS

1
사과 —HTML5를 언급하는 부분을 놓친 것 같습니다. 그것은 사양이 사용하는 경우에 불분명 나에게 보인다 <i>사용할 때 <span class="semantic-meaning">... 그들은 당신이 사용해야 의미하는 것 <i>- 누구 요 나를 여전히에 프리젠 테이션 코드를 추가로 떨어져 보인다 의미가 더욱 요구되는 하나의 특정 케이스에 대한 시맨틱 층. 따라서 당신은 옳습니다 : 더 이상 사용되지 않지만 내가 읽은 내용에 따라 솔직히 추천 할 수는 없습니다.
Samir Talwar

-1

다른 스타일이없는 컨텐츠에서 기울임 꼴로 된 단어 / 문자가 필요한 경우 <em>을 사용하십시오. 또한 내용을 의미 적으로 만드는 데 도움이됩니다.

text-style 여러 스타일에 더 적합하고 의미가 필요하지 않습니다.


-3

하다

  1. 클래스 속성에 데이터의 특성을 나타내는 값을 지정하십시오 (예 class="footnote": 양호)

  2. 페이지에 대한 CSS 스타일 시트 작성

  3. 요소에 할당 한 클래스에 첨부 된 CSS 스타일을 정의하십시오.

    .footnote { font-style:italic; }

하지 마라

  1. 사용하지 <i>않거나 <em>요소-지원되지 않으며 데이터와 프레젠테이션을 너무 가깝게 묶습니다.
  2. 프레젠테이션 규칙을 나타내는 값을 클래스에 제공하지 마십시오 (예 :을 사용하지 마십시오 class="italic").

1
다른 답변에서 언급 된 바와 같이, <i>그리고 <em>HTML5에 있습니다. "Do Not"아래의 숫자 2는 정확하지만 "Do"아래의 # 1은 비스듬히 표시됩니다. 각주가 아닌 다른 항목도 이탤릭체로 표시되는 경우 전체 클래스 "각주"로 레이블을 지정하는 것은 좋지 않습니다. 데이터의 특성을 나타내는 클래스를 갖는 것이 좋습니다. 그러나 클래스와 스타일 시트가 항상 필요한 것은 아니며, 특히 몇 개의 항목 만 이탤릭체로 표시되는 경우입니다.
vapcguy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.