189
알고 있습니까? HTML + CSS <#1> @EBvi

잘 알고 있습니까? html + css

Embed Size (px)

Citation preview

Page 1: 잘 알고 있습니까? html + css

잘 알고 있습니까?HTML + CSS <#1>

@EBvi

Page 2: 잘 알고 있습니까? html + css

이 문서는 초급 퍼블리셔를위해 작성되었습니다

Page 3: 잘 알고 있습니까? html + css

다소 반복적으로 이야기하는 형식으로 구성되었는데

Page 4: 잘 알고 있습니까? html + css

왜냐면 중요한 걸 여러 번 반복해서 말해주는 것처럼 좋은 게

없더라고요

Page 5: 잘 알고 있습니까? html + css

페이지 수는 많지만 각 페이지의 학습 강도는 높지 않으니

Page 6: 잘 알고 있습니까? html + css

너무 걱정하지 말고 편안하게 봐주셨으면 합니다

Page 7: 잘 알고 있습니까? html + css

이제 시작합니다 :)

Page 8: 잘 알고 있습니까? html + css

여러분은 HTML과 CSS를어디까지 이해하고 있습니까?

Page 9: 잘 알고 있습니까? html + css

그런 거 너무 쉬워서 공부할필요가 없다고 생각하고

계신가요?

Page 10: 잘 알고 있습니까? html + css

HTML이나 CSS는 비전공자들도 쉽게 익히고 사용할 수 있도록 고안된 언어이긴 합니다

Page 11: 잘 알고 있습니까? html + css

그래서 그런지 간과하고 넘어가는 부분이 꽤 있는 것 같더군요

Page 12: 잘 알고 있습니까? html + css

하지만 생각보다 스펙이 꽤 방대하고 어렵습니다

Page 13: 잘 알고 있습니까? html + css

우선 이것만큼은 꼭 알아야 한다는 것만이라도 다루어보려고

합니다

Page 14: 잘 알고 있습니까? html + css

block-level, inline element

Page 15: 잘 알고 있습니까? html + css

시작하기 전에 한 가지 미리 언급하고 싶은 점이 있는데요

Page 16: 잘 알고 있습니까? html + css

불운하게도 한글로 된 문서는 잘못된 정보를 담고 있는 경우

가 많습니다

Page 17: 잘 알고 있습니까? html + css

제대로 된 정보에 접근하려면 권위있는 문서를 보는 것이 좋

은데

Page 18: 잘 알고 있습니까? html + css

이러한 문서는 대개 영어로 제작이 되어 있습니다

Page 19: 잘 알고 있습니까? html + css

여러분이 제대로 된 정의를 알고 싶다면 한글로 된 문서만으로는 부족할 수 있습니다

Page 20: 잘 알고 있습니까? html + css

한글이든 영어든 권위있는 문서의 제대로 된 정의를 찾아서

읽어보세요

Page 21: 잘 알고 있습니까? html + css

제대로 된 정의를 모르기 때문에 수많은 잘못이 일어납니다

Page 22: 잘 알고 있습니까? html + css

잔소리는 이쯤 해두고 이제 정의부터 살펴봅시다

Page 23: 잘 알고 있습니까? html + css

Block-level elements are elements that create blocks or large groupings of text

Page 24: 잘 알고 있습니까? html + css

이게 뭔 말인가요 ㅋㅋㅋ

Page 25: 잘 알고 있습니까? html + css

이 정의 외에조금 덧붙여서 이야기하자면

다음과 같습니다

Page 26: 잘 알고 있습니까? html + css

block-level 요소들은 text, inline 요소, block-level 요소들을 포함할 수 있습니다

Page 27: 잘 알고 있습니까? html + css

또한 block-level 요소들이 시작될 때는 기본적으로 반드시

개행됩니다

Page 28: 잘 알고 있습니까? html + css

몇 가지 더 정의가 있지만 일단은 이 정도면 충분합니다

Page 29: 잘 알고 있습니까? html + css

기억하셨나요?

Page 30: 잘 알고 있습니까? html + css

block-level 요소들은 여러가지를 담을 수 있고 기본적으로 개

행된다는 점을요

Page 31: 잘 알고 있습니까? html + css

block-level의 대표적인 element로는 <div>가 있죠

Page 32: 잘 알고 있습니까? html + css

잘 아실 겁니다

Page 33: 잘 알고 있습니까? html + css

<div>는 <p>, <img> 뿐만 아니라 <div>도 담을 수 있고, 별도의

style을 적용하지 않으면 개행되죠

Page 34: 잘 알고 있습니까? html + css

다음은 inline 요소입니다

Page 35: 잘 알고 있습니까? html + css

Inline elements are elements that are found in the text of

the HTML document.

Page 36: 잘 알고 있습니까? html + css

text에서 찾다... 이게 무슨 말인지 아시겠나요?

Page 37: 잘 알고 있습니까? html + css

애매하죠잉

Page 38: 잘 알고 있습니까? html + css

애매한 정의는 많은 혼란을 낳게 합니다

Page 39: 잘 알고 있습니까? html + css

이러한 애매한 개념이널리 퍼져 있는데

Page 40: 잘 알고 있습니까? html + css

정확한 정의를 모른다면계속 혼란상태에 있게 되겠죠

Page 41: 잘 알고 있습니까? html + css

자세한 정의는 w3에서 볼 수 있습니다만

Page 42: 잘 알고 있습니까? html + css

너무 기니까 조금만 가져옵니다

나머지는 여러분이 직접 찾아서 읽어보세요

Page 43: 잘 알고 있습니까? html + css

Inline-level elements are those elements of the source document that

do not form new blocks of content

Page 44: 잘 알고 있습니까? html + css

inline 요소는 block을 포함하지 않는 형태의 요소라고 합니다

Page 45: 잘 알고 있습니까? html + css

이 점은 정말 중요합니다

Page 46: 잘 알고 있습니까? html + css

포함하지 않는 것이 왜 중요한지는 조금 있다가 다시 다루죠

Page 47: 잘 알고 있습니까? html + css

이 외에도수많은 이슈들이 있는데

Page 48: 잘 알고 있습니까? html + css

흔히 inline 요소는 width, height 속성을 지정할 수 없다

고들 합니다

Page 49: 잘 알고 있습니까? html + css

정말인가요?확실한가요?

Page 50: 잘 알고 있습니까? html + css

네, 맞습니다잠시 헷갈린 분들은 반성하세요

Page 51: 잘 알고 있습니까? html + css

하지만 IE에서는 inline이라고 해도 높이가 지정됩니다

Page 52: 잘 알고 있습니까? html + css

이건 비표준으로 렌더링하고 있는 것이기 때문에

Page 53: 잘 알고 있습니까? html + css

표준에 맞춰 코딩하실 여러분은 IE의 비표준이 아니라

Page 54: 잘 알고 있습니까? html + css

제대로 된 정의(=표준)에 맞춰 코딩하셔야 합니다

Page 55: 잘 알고 있습니까? html + css

이제 아셨겠죠?

Page 56: 잘 알고 있습니까? html + css

inline에는 width, height를 지정할 수 없어요

Page 57: 잘 알고 있습니까? html + css

자, 다시 돌아가봅시다

Page 58: 잘 알고 있습니까? html + css

처음 정의를 통해 inline에는 block-level 요소를 포함할 수 없다는 걸 알았습니다

Page 59: 잘 알고 있습니까? html + css

즉 <span> 안에 <div>를 넣지 말라는 말이죠

Page 60: 잘 알고 있습니까? html + css

inline 요소 안에 block-level 요소를 넣을 수 없으니까요

Page 61: 잘 알고 있습니까? html + css

하지만 이 이슈는 단순한 개념만의 문제가 아닙니다

Page 62: 잘 알고 있습니까? html + css

여러분이 정말 많이 쓰는<a>는 inline 요소입니다

Page 63: 잘 알고 있습니까? html + css

<a> 안에 <div>를 넣을 수 있느냐 없느냐는 지금도 계속 화제가 되는 큰 논란거리입니다

Page 64: 잘 알고 있습니까? html + css

여러분은 어떻게 생각하시나요?

Page 65: 잘 알고 있습니까? html + css

결론부터 이야기하자면

Page 66: 잘 알고 있습니까? html + css

html5 규격에서는<a> 안에 block-level 요소를 포함할 수 있게 되었습니다

Page 67: 잘 알고 있습니까? html + css

하지만 향후 몇 년간 여러분이 코딩할 html4.01 규격에서는

Page 68: 잘 알고 있습니까? html + css

여전히 <a> 안에 block-level 요소를 넣는 것은 죄악입니다

Page 69: 잘 알고 있습니까? html + css

이렇게 생각할 수도 있습니다

Page 70: 잘 알고 있습니까? html + css

그럼 <a>에 display:block을주면 해결되는 거 아냐?

Page 71: 잘 알고 있습니까? html + css
Page 72: 잘 알고 있습니까? html + css

슬프지만 이렇게 해도w3의 validator는 잘못되었

다고 경고합니다

Page 73: 잘 알고 있습니까? html + css

그래서 나온두 가지 타협안이 있죠

Page 74: 잘 알고 있습니까? html + css

하나는 그냥 validator를무시하는 겁니다

Page 75: 잘 알고 있습니까? html + css

validator라고 완벽할까요?

Page 76: 잘 알고 있습니까? html + css

desc엔 inline과 block-level만 다루고 있지, <a>를 직접 다룬

건 없습니다

Page 77: 잘 알고 있습니까? html + css

validator는 그저 권고하고 있는 거지 display:block을 주면

된 것이 아닌가?

Page 78: 잘 알고 있습니까? html + css

~라는 시점이 있고

Page 79: 잘 알고 있습니까? html + css

validator를 맞추기 위해

Page 80: 잘 알고 있습니까? html + css

<div> 대신에 <span>을 쓰는 방법이 있습니다

Page 81: 잘 알고 있습니까? html + css
Page 82: 잘 알고 있습니까? html + css

이렇게 코딩하면 validator를 무사히 통과하게 됩니다

Page 83: 잘 알고 있습니까? html + css

하지만 어느 것이 옳은지 그른지는

Page 84: 잘 알고 있습니까? html + css

여러분의 철학에 따라서 정할 수 밖에 없습니다

Page 85: 잘 알고 있습니까? html + css

코딩하다 보면 이러한 개념의 문제를 수도 없이 만나게 됩니다

Page 86: 잘 알고 있습니까? html + css

여러분이 고민하지 않고 그냥 렌더링 되는 대로 코딩만 하고

있다면

Page 87: 잘 알고 있습니까? html + css

좋은 퍼블리셔가되기 어렵습니다

Page 88: 잘 알고 있습니까? html + css

조금만 더 해보죠

Page 89: 잘 알고 있습니까? html + css

<p>는 block-level 요소입니까?아니면 inline 요소입니까?

Page 90: 잘 알고 있습니까? html + css

헷갈리셨나요?

Page 91: 잘 알고 있습니까? html + css

block-level 요소입니다

Page 92: 잘 알고 있습니까? html + css

이런 이야길 하려는 건 아니고

Page 93: 잘 알고 있습니까? html + css

<p>는 다른 block-level 요소와는 다른 독특한 특징을 갖고

있습니다

Page 94: 잘 알고 있습니까? html + css

<p>는 block-level 요소임에도 불구하고

Page 95: 잘 알고 있습니까? html + css

오직 inline 요소만을 포함할 수 있습니다

Page 96: 잘 알고 있습니까? html + css

The P element represents a paragraph. It cannot contain block-level elements (including P itself).

Page 97: 잘 알고 있습니까? html + css

점점 혼란스러워지죠

Page 98: 잘 알고 있습니까? html + css

모든 block-level 요소가 동일한 규칙을 갖고 있는 건 아니니

까요

Page 99: 잘 알고 있습니까? html + css

이제 아시겠죠? <p> 안에 <div>를 쓰면 안됩니다

Page 100: 잘 알고 있습니까? html + css

물론 써도 잘만 렌더링 됩니다

Page 101: 잘 알고 있습니까? html + css

렌더링 된다는 건 여러분이 잘하고 있다는 뜻이 아닙니다

Page 102: 잘 알고 있습니까? html + css

표준을 왜 지켜야 하는지에 대해 구구절절 늘어놓을 생각은

없습니다만

Page 103: 잘 알고 있습니까? html + css

여러분이돈을 받고 일하는 프로라면

Page 104: 잘 알고 있습니까? html + css

이러한 이슈에 대해 잘 알고 있어야 합니다

Page 105: 잘 알고 있습니까? html + css

또한 <p>는 문단(paragraph)을 표현하는 마크업입니다

Page 106: 잘 알고 있습니까? html + css

<p>는 이상하리만치 오해가 많은 태그 중 하나입니다

Page 107: 잘 알고 있습니까? html + css

<p>를 마치 레이아웃의 하나처럼 표현하는 분도 있는데

Page 108: 잘 알고 있습니까? html + css

그런 건 <div>를 사용하세요

Page 109: 잘 알고 있습니까? html + css

표현과 콘텐츠는분리되어야 합니다

Page 110: 잘 알고 있습니까? html + css

<p>는 표현하기 위해 사용하는 마크업이 아니에요

Page 111: 잘 알고 있습니까? html + css

콘텐츠를 담는 마크업입니다

Page 112: 잘 알고 있습니까? html + css

하는 김에 하나만 더 해볼까요?

Page 113: 잘 알고 있습니까? html + css

<li>는 block-level을 포함할 수 있을까요? 아니면 inline만을 포함할 수 있을까요?

Page 114: 잘 알고 있습니까? html + css

점점 헷갈리죠?

Page 115: 잘 알고 있습니까? html + css

만약 여러분이 이런 문제에 답이 잘 떠오르지 않는다면

Page 116: 잘 알고 있습니까? html + css

지금이라도 늦지 않았어요

Page 117: 잘 알고 있습니까? html + css

빨리 w3.org로 달려가세요

Page 118: 잘 알고 있습니까? html + css

아, 정답을 말해야죠

Page 119: 잘 알고 있습니까? html + css

<li>는 block-level 요소이므로 모두 포함할 수 있습니다

Page 120: 잘 알고 있습니까? html + css

이것 말고도 정말 많이 있습니다

Page 121: 잘 알고 있습니까? html + css

그래서 아무리 공부해도 잘 안 외워지고 잊어버리곤 해요

Page 122: 잘 알고 있습니까? html + css

하지만 정말 자주 쓰이는 건데

Page 123: 잘 알고 있습니까? html + css

이 정도는 알고 있어야하지 않을까요?

Page 124: 잘 알고 있습니까? html + css

float, clear

Page 125: 잘 알고 있습니까? html + css

그럼 바로 float의 정의부터시작해봅시다

Page 126: 잘 알고 있습니까? html + css

A float is a box that is shifted to the left or right on the

current line.

Page 127: 잘 알고 있습니까? html + css

box를 왼쪽이나 오른쪽으로이동시키는 것

Page 128: 잘 알고 있습니까? html + css

The most interesting characteristic of a float (or "floated" or "floating" box) is that content may flow along its side (or be prohibited from

doing so by the ‘clear’ property).

Page 129: 잘 알고 있습니까? html + css

floated box는 그 측면(side)에 붙어 흐르게(flow) 된다

Page 130: 잘 알고 있습니까? html + css

여기까지는다 아는 내용일 겁니다

Page 131: 잘 알고 있습니까? html + css

float이 어려운 건 정의가 아니라 동작 방식이어렵기 때문입니다

Page 132: 잘 알고 있습니까? html + css

계속해서 더 자세히 봅시다

Page 133: 잘 알고 있습니까? html + css

초보 퍼블리셔는 대개 문서 내에서 부유 요소가 놓이는 위치를 정확히 이해하지 못해 혼란을 겪습니다

Page 134: 잘 알고 있습니까? html + css

http://www.complexspiral.com/publications/containing-floats/

여기가 왜 이렇게 틀어지죠?

Page 135: 잘 알고 있습니까? html + css

이렇게 틀어지는 레이아웃을 종종 보셨을 겁니다

Page 136: 잘 알고 있습니까? html + css

해결하는 방법을 아시는 분도 있고 아닌 분도 계실텐데

Page 137: 잘 알고 있습니까? html + css

잘 알려진대로

Page 138: 잘 알고 있습니까? html + css

부모에게 float을 주는방법이 있고

Page 139: 잘 알고 있습니까? html + css

다음 요소가 clear를가지고 있으면 해결됩니다

Page 140: 잘 알고 있습니까? html + css

하지만 왜 부유 박스는 저렇게 동작할까요?

Page 141: 잘 알고 있습니까? html + css

저걸 좀 이야기해봅시다

Page 142: 잘 알고 있습니까? html + css

float은 Netscafe 1.1에 구현되고 HTML 2.0에 정의되었습니다

Page 143: 잘 알고 있습니까? html + css

<table>을 쓰지 않고신문 기사의 레이아웃을표현하기 위해서요

Page 144: 잘 알고 있습니까? html + css

이렇게 삽입되도록요

Page 145: 잘 알고 있습니까? html + css

문장의 흐름을 방해하지 않고 레이아웃 한 편에 붙어 있죠

Page 146: 잘 알고 있습니까? html + css

예를 들어볼까요

Page 147: 잘 알고 있습니까? html + css

float의 특성을 설명하기 위해 사용되는 정말 유명한 예제죠

Page 148: 잘 알고 있습니까? html + css

<img>에 float:left를 주었습니다

Page 149: 잘 알고 있습니까? html + css

그런데 영역이 이미지까지 감싸질 않네요?

Page 150: 잘 알고 있습니까? html + css

지금 보신 것이 float된 박스의 특성입니다

Page 151: 잘 알고 있습니까? html + css

한 가지 의문점이 생기죠?

Page 152: 잘 알고 있습니까? html + css

이렇게 영역 전체를 감싸야 하는 게 아닌가?

Page 153: 잘 알고 있습니까? html + css

아직 float된 박스에 대한 이해가 부족하면 그렇게 생각하실

수 있지만

Page 154: 잘 알고 있습니까? html + css

이렇게 구현된 건 다 이유가 있기 때문입니다

Page 155: 잘 알고 있습니까? html + css

float된 박스가 다음 문단을 방해하면 안되기 때문이죠

Page 156: 잘 알고 있습니까? html + css

문단을 더 추가해봅시다

Page 157: 잘 알고 있습니까? html + css

문단이 계속되더라도 흐름이 방해되지 않아요

Page 158: 잘 알고 있습니까? html + css

이제 왜 그렇게 구현되었는지 이해가 가시나요?

Page 159: 잘 알고 있습니까? html + css

그럼 이제 이미지를하나 더 추가해볼까요?

Page 160: 잘 알고 있습니까? html + css

우왓! 끔찍한 일이 일어났군요

Page 161: 잘 알고 있습니까? html + css

이런 일은 float의 특성을 이해하지 못했을 경우 정말 빈번하

게 발생합니다

Page 162: 잘 알고 있습니까? html + css

하지만 조금만 생각해보세요

Page 163: 잘 알고 있습니까? html + css

이렇게 보여지는 것이최선입니다

Page 164: 잘 알고 있습니까? html + css

지정한 방향과그리고 그 면에 붙기 때문이에요

Page 165: 잘 알고 있습니까? html + css

면을 따라 붙지 않도록 하려면그렇게 붙지 말라고 알려줘야

합니다

Page 166: 잘 알고 있습니까? html + css

드디어 clear가 등장합니다

Page 167: 잘 알고 있습니까? html + css

여기에 clear:left를 주었습니다

Page 168: 잘 알고 있습니까? html + css

문단을 더 추가해도

Page 169: 잘 알고 있습니까? html + css

오오! 예상한 대로 동작하네요!

Page 170: 잘 알고 있습니까? html + css

이제 여러분은 일반적인 흐름(normal flow)에서

Page 171: 잘 알고 있습니까? html + css

float을 잘 다룰 수 있게되었습니다

Page 172: 잘 알고 있습니까? html + css

float에 대해서는 할 이야기가 정말 많은데

Page 173: 잘 알고 있습니까? html + css

하나만 더 이야기하고마칠까 합니다

Page 174: 잘 알고 있습니까? html + css

float된 요소에는 width를 지정하는 편이 좋습니다

Page 175: 잘 알고 있습니까? html + css

지정하지 않으면 암시적으로하위 요소로부터 계산되는데

Page 176: 잘 알고 있습니까? html + css

이럴 경우 결과를예측하기 어렵게 됩니다

Page 177: 잘 알고 있습니까? html + css

각각의 <DIV>에 float:left만을 주었습니다

Page 178: 잘 알고 있습니까? html + css

이 예에서 알 수 있듯이 여러분은 각각의 요소로부터 결과를 예측하기 어렵습니다

Page 179: 잘 알고 있습니까? html + css

여러분이 튼튼한 레이아웃을 구성하려면

Page 180: 잘 알고 있습니까? html + css

명시적으로 width를 알려주세요

Page 181: 잘 알고 있습니까? html + css

정리

Page 182: 잘 알고 있습니까? html + css

되도록 권위있는 문서를 보고 올바른 정의를 숙지하세요

Page 183: 잘 알고 있습니까? html + css

애매하고 잘못된 정의는혼란을 가중시킵니다

Page 184: 잘 알고 있습니까? html + css

inline 요소에는 width, height를 지정할 수 없습니다

Page 185: 잘 알고 있습니까? html + css

inline 요소는 block-level 요소를 포함할 수 없습니다

Page 186: 잘 알고 있습니까? html + css

<p>는 오직 inline 요소만을 포함할 수 있습니다

Page 187: 잘 알고 있습니까? html + css

float의 흐름을 깨려면 clear를 사용하세요

Page 188: 잘 알고 있습니까? html + css

references from• http://www.w3.org/TR/CSS2/

visuren.html#floats

• http://www.webdesignfromscratch.com/html-css/css-block-and-inline/

• http://stackoverflow.com/questions/1827965/is-putting-a-div-inside-an-anchor-ever-correct

• http://stackoverflow.com/questions/3303008/block-level-elements-in-a-tag-validation-vs-usability

• http://www.ibm.com/developerworks/kr/library/wa-css/

• http://css.maxdesign.com.au/floatutorial/introduction.htm

• http://www.complexspiral.com/publications/containing-floats/

• http://coding.smashingmagazine.com/2009/10/19/the-mystery-of-css-float-property/

Page 189: 잘 알고 있습니까? html + css

감사합니다