위키문헌:블록 및 인라인 요소

위키문헌 ― 우리 모두의 도서관.
블록 및 인라인 요소
이 문서에서는 블록 요소와 인라인 요소의 차이와, 둘을 구분해야 하는 경우에 대해 설명하고 있습니다.

블록 및 인라인 요소[편집]

위키문헌은 웹페이지 구조에 HTML을, 서식에는 CSS를 사용합니다. HTML을 간단히 표시하기 위해 '위키 문법'을 사용하기도 하지만, 최종 렌더링은 HTML로 이루어집니다.

HTML에는 근본적으로 두 요소, 블록 (block) 요소와 인라인 (inline) 요소가 있습니다. 일반적으로 내용물은 인라인 요소이며, 문서 전체의 구조를 만들 때 블록 요소를 사용합니다. 이 둘에는 다음과 같은 특성이 있습니다.

인라인 블록
HTML 태그 예시 span, b, i div, p, table, li, hr, h1-6
사용하는 공백 필요한 공백 하나만을 사용 (기본값으로는) 컨테이너 전체를 채울 때까지 확장
새 줄 (줄바꿈) 주변 요소와 같은 줄에 계속해서 존재 삽입된 곳에서 개행을 일으킴
정렬 상위 컨테이너에 따라 정렬 자체적인 내부 정렬 방식을 따름
내용물에 따라 결정 (기본값으로는) 컨테이너의 폭 전체. CSS로 조정 가능.
포함할 수 있는 요소 인라인 요소만 블록 요소 및 인라인 요소 (둘 다)

HTML 문서는 블록 요소와 인라인 요소가 서로서로의 안쪽에 짜인 형태로서 만들어집니다. 하지만, 인라인 요소 내에 블록 요소가 들어갈 경우 이는 유효하지 않으며, 인라인 요소는 인라인 요소만 가질 수 있습니다. 블록 요소는 다른 블록 요소나 인라인 요소 모두를 포함할 수 있습니다.

만약 인라인 요소 내 블록 요소를 넣을 경우, HTML이 유효하지 않아, 제대로 렌더링되지 않을 수 있으며, "HTML5 misnesting lint error"로서 특수:린트오류/html5-misnesting에 기록됩니다.

CSS의 display 성질을 사용해 인라인 요소 내에 블록 요소가 들어간 것처럼 할 수는 있으나, 인라인 요소에 display:block; 도는 display:inline-block;을 설정할 경우에도 속에 <div>가 들어가 있을 경우 HTML 형태 자체는 기형으로 남습니다.

문단 태그[편집]

문단 태그 (p) 자체는 블록 요소이지만, 블록 요소가 문단 태그 속에 들어가는 것도 유효하지 않습니다.

미디어위키에서는 간혹 텍스트를 p 태그로 엮어 버리기도 하는데, 이는 span 기반 틀을 사용하는 틀 내에서의 줄바꿈에서 문제가 생길 수 있습니다.

예를 들어, 밑처럼 쓰면 틀린 문법이 됩니다.

<span style="color:red;">{{{1}}}

{{{2}}}
</span>

이는 p 요소가 span 태그 안쪽에서 발생하기 때문입니다.

만약 코드를 쉽게 읽을 수 있게 하기 위해서 띈 것이라면, HTML 주석 기능을 사용해 줄바꿈을 막을 수 있습니다.

<span style="color:green;">{{{1}}}<!--

이 내용은 주석 안에 있습니다. 출력문에서 표시되지 않습니다.
-->{{{2}}}
</span>

줄 바꿈을 원한다면, <span> 대신 <div>를 사용해야 합니다.

블록 및 인라인 틀[편집]

위키문헌의 틀 중 {{작게}} 등 일부는 인라인 요소를, {{가운데}} 등 일부는 블록 요소를 사용합니다. 즉, 특수한 경우에는 한 틀 안에 다른 틀을 넣을 수 없습니다.

{{가운데|  {{작게| div 안에 span이 있으므로 이는 허용됩니다.}}}}
{{작게| {{가운데| span 안에 div가 있으므로 이는 금지입니다.}}}}

위키문법 일부는 렌더링 과정에서 블록 기반 HTML로 변화하므로, 이 경우에도 인라인 요소 내에 넣어서는 안 됩니다.

<p> 태그 내에서의 줄바꿈

예시는 이렇습니다.

* 목록 또한
* 블록 기반입니다.

{|
| 표도 || 블록 || 기반입니다.
|}

인라인 기반 틀 일부는 대응하는 블록 기반 틀이 있습니다. 예를 들어, {{작게}}는 span 기반이며, {{작게 블록}}은 블록 기반입니다.

블록 기반 틀 안에는 다른 블록 기반 틀을 넣을 수 있습니다.

{{작게 블록| {{가운데| div 안에 div가 있으므로 이는 허용됩니다.}}}}

틀 목록[편집]

밑의 목록은 일반적으로 흔히 사용하는 틀을 요소별로 정리한 것입니다.

인라인 (span) 틀

블록 (div) 틀