1. 수업 소개 ~ 3. CSS의 등장

https://youtu.be/Ok0bBJPtgJI

 

https://youtu.be/-OWx2vM4tLI

 

https://youtu.be/L41Zjl7XANI

 

 

CSS = 웹페이지를 꾸며주는 언어.

  • 선행해서 HTML을 알아야 할 필요가 있음
  • HTML은 CSS 없이도 자립이 가능하지만 CSS는 HTML 없이 자립이 불가능함.
  • 1장에서 배운 만큼만 알고 있으면 충분함.

 

  • HTML이 처음 등장했을 때는 '디자인'이라고 할 만한 것이 없었음
  • = '웹디자인'이라는 분야 자체가 없었음
  • 웹이 등장하고 나서 시간이 지남에 따라 심미성에 대한 요구가 증가
  • → HTML의 태그에 디자인과 관련된 태그들이 추가되기 시작함
  • ≫ 정보로서의 기능과 디자인으로서의 기능을 동시에 갖추기 시작함
  • 대표적인 예 : 폰트 태그 (서체 관련 디자인)

<li><font color = "red"> TEXT </font></li>
  • <li> 태그는 정보를 가진 태그 (가운데의 TEXT가 리스트의 항목임을 나타냄)
  • <font> 태그는 디자인과 관련된 태그 (TEXT라는 글씨를 시각적으로 붉게 바꿔줌) ≫ 정보로서의 기능은 전혀 x
  • 정보적 기능과 디자인적 기능의 공존

 

  • 그러나 HTML과 웹이 히트를 치고 폭발적으로 성장하게 되면서
  • 그 위상이 매우 격상되고 정보로서의 가치가 커짐 >> 정보를 표현하는 기능이 매우 중요해짐
  • 반면 시각적인 디자인을 담당하는 태그들이 이에 방해가 되기 시작함 (=난잡해짐.)
  • 수정의 용이성 문제도 대두됨. (수많은 태그들에 일일이 부여된 속성을 일괄로 수정하고자 한다면 그 작업량은...)

HTML에서 디자인의 기능을 빼버리고 (정보에 전념하도록)

완전히 새로운 (디자인에 훨씬 더 효율적인) 문법을 가진 새로운 체계, 즉 CSS가 만들어지게 됨.

 

 

그러면 그 '새로운 문법체계'를 어떻게 HTML 코드 사이에 끼워넣을 것인가?

<!-- (내용) --> 은 html 언어에서의 주석처리이다.

  • <style> 태그
  • <style> (CSS 코드) </style> 과 같은 식으로 사용.
  • 스타일 태그 사이에 들어오는 코드는 HTML이 아닌 CSS 문법으로 해석하도록 함
<style>
  li {
      color:red;
  }
</style>
<li>TEXT</li>
  • 정보를 담당하는 <li> 코드는 해당 정보값만 갖게 되고
  • 그 li 코드를 지닌 텍스트를 붉은색으로 해 달라는 디자인 기능은 CSS 코드가 전담함
  • 정보 기능과 디자인 기능의 보다 엄격한 분리
  • ≫ 비록 새 문법체계에 적응해야 하는 번거로움을 지닌 선택이기는 했으나
  • 그 이상으로 '분화'는 메리트가 있는 선택이었다

 

 

  • 관리와 수정이 용이해지고 가독성이 향상됨 (중복된 코드의 제거 -> 웹페이지 사이즈의 불필요한 거대화 방지)
  • 검색엔진이나 시각장애인용 스캔리더 등 정보값에 더 민감한 프로그램들이 훨씬 더 효율적으로 작동

 


4. CSS의 기본 문법 ~ 5. 혁명적 변화

 

https://youtu.be/h0AlL9YI6bM

https://youtu.be/nC2-nJEXL2U

 

CSS를 실행하는 방법은 크게 두 가지가 있다.

 

1. head 부분에 <style> 태그 쌍을 넣고 그 안에 선택자와 선언 삽입 (실행 결과: 검은색 밑줄 있는 글씨들)

2. HTML 태그 안에 style이라는 속성을 주고 따옴표(" ") 안에 CSS 문법 삽입 (실행 결과: 빨간 글씨)

 

h1 { color : red ; font-size : 12px; }

 

  • 선택자(Selector) : 위 예시에서 h1이 선택자에 해당한다. 뒤의 선언들을 속성으로 받는 주체이다.
  • 선언(Declaration) 또는 효과 : 중괄호{}로 감싸진 부분이 선언에 해당한다. 
  • 속성(Property) 속성 값(Value) : 선택자로 선택된 부분에 부여할 특성과 그 세부적인 값.
  • : (Value-Property Seperator), ; (Declaration Seperator) : 구분자. 콜론(:)은 속성과 속성 값을, 세미콜론(;)은 선언들 사이를 구분한다.
  • CSS에서는 개행이 문장의 끝을 의미하지 않고 오로지 태그 가독성을 높이기 위한 요소로만 적용되기 때문에, 코드 한 줄 한 줄씩을 구분하기 위해서는 ;(세미콜론)을 붙여줄 필요가 있다.
  • 2번 방법의 경우 직접 태그를 선택해 속성을 부여하는 방법이므로 선택자를 사용할 필요가 없다. 인라인(in-line) 방식이라고도 한다.

 

+ 활용 예시 2

선택자 a를 사용한 부분에 또다른 속성을 붙여주었다.

text-decoration: none; 을 입력하면 해당 텍스트에 적용된 꾸밈(밑줄, 취소선, 기울임 및 볼드체 등) 이 사라지게 된다.

원래 밑줄이 그어진 텍스트들이었으므로 위 코드로 인해 기존에 있던 밑줄이 사라지게 되었다.

 

그런데 일괄로 밑줄을 빼기보단 저 CSS라는 부분에만 밑줄이 있게끔 하고 싶다. 그러면 어떻게 하면 될까?

 

위에서처럼 해당 태그 안에만 밑줄을 부여하는 text-decoration: underline 을 넣어주면 된다.

 


6. 속성을 스스로 알아내기

 

https://youtu.be/WcED6Ia1IY4

 

이제 우리는 선택자와 선언, 속성(property)이라는 것을 배웠기 때문에 모르는 것이 생겨도 우리가 무엇을 모르는 것인지 안다고 할 수 있다. 가령 제목에 있어 글자 크기를 더 키우고 싶은데 어떤 속성을 부여해야 할지 모른다고 해 보자. 이렇게 검색해서 속성 정보를 찾을 수 있다.

 

 

 

검색어 : css text size property

검색엔진에서 찾아 준 결과이다. 올바른 결과를 얻기 위해서는 text가 아니라 font를 입력해야 한다는 것을 알 수 있고, 속성값으로는 대략 저런 것들을 부여할 수 있다는 것도 알 수 있다. 찾았으니 이제 적용해 보자.

 

font-size:40px 을 h1에 적용한 결과다. 위와 같이 WEB이라는 글자의 크기가 미묘하게 커진 것을 볼 수 있다.

 

크기만 키웠다고 욕심이 끝나나? 아니다. 이제 저 WEB이라는 글자를 가운데 정렬하고 싶어질 수도 있다. 그러면 어떤 속성을 찾으면 될까? 아는 영어를 동원해 보자. 아까는 크기였으니 size였고, 이제 가운데니까 center일까?

 

 

 

검색어: css text center property

 

가운데 정렬의 '정렬'은 align이라고 하는 것 같다. 알아냈으니 이제 적용해 보자.

 

검색해서 알아낸 text-align: center; 을 제목에 적용한 모습이다.

 

우리는 이미 충분히 발달한 기술의 혜택을 누릴 수 있기 때문에 css를 배운다고 해도 선택자 하나하나, 속성 하나하나를 일일이 외우지 않아도 된다. 필요한 게 있으면 검색엔진의 힘을 빌려도 좋고 에디터 자동완성의 추천을 받아도 된다.


7. CSS 선택자의 기본

 

https://youtu.be/wNpplOPbMSc

 

 

이번에는 조금 다른 예시를 들어 보자. 위의 Ordered List에 속한 세 가지 <a> 태그 항목의 속성을 바꿀 것이다.

기본은 검정색, 방문한 적이 있으면 회색, 현재 있는 페이지는 붉은색으로 하고 싶다. 어떻게 해야 할까?

 

우선은 1번부터 3번까지의 항목들을 모두 검은색으로 바꿔 놓았다. 이제 '이미 열람한 페이지'를 회색으로 처리하고 싶다. 열람한 페이지가 1번과 2번이라고 가정하면 1번, 그리고 2번의 색은 회색으로 바꾸어야 할 것이다. 

 

그러면 어떻게 하면 될까? 일단은 body 부분으로 내려가서 해당 항목에 달린 태그에 모두 style="color:gray" 속성을 달아 주는 방법이 있겠다. 결과야 잘 나오겠지만 중복이 발생하고 만다. 만약 회색이 아니라 파우더 블루로 색을 변경하고 싶으면? 속성을 달아 주어야 할 태그가 몇 수십 개가 되어 버린다면? 일 늘어나는 소리가 들린다. 좀 더 똑똑하게 작업하는 방법이 분명 있을 것이다.

 

 

 

클래스 선택자

작성법을 먼저 정리하자면 이러하다.

 

  1. 선언을 적용하고 싶은 부분의 태그에 속성으로 특정 클래스를 부여한다. (예: class="saw")
  2. style 태그 안에 .을 입력하고, 클래스를 선택자로 삼아 선언을 붙인다.
  3. 해당 클래스를 가진 항목에만 선언들이 적용된다.

 

그러면 한 개의 항목이 클래스를 여러 개 가지는 것도 가능할까?

물론 가능하다. 오른쪽을 보면 CSS라는 항목이 한 태그 안에 saw와 active, 두 개의 클래스를 가지고 있는 것이 보인다. 그리고 효과는 둘 중 더 아래에 선언된 active 클래스의 효과가 적용되어 있다.

이처럼 CSS에서는 적용받을 효과가 중첩되면서 동시에 서로 충돌할 경우, 보다 가까이에 선언된 선택자의 효과를 적용받는 특성이 있다. 보통 선택자는 head에 있고 효과를 적용받는 대상은 body에 있으므로, body에 더 가까운-더 아래에 선언된 선택자가 우선권을 갖게 된다.

 

 

 

아이디 선택자(#)

하지만 가깝다고 무조건 우선권을 갖는 것은 아니다. 위는 active 클래스를 아이디 active로 대체한 예시이다.

아이디 선택자를 사용하는 절차는 다음과 같다.

 

  1. 선언을 적용하고 싶은 부분의 태그에 속성으로 특정 id를 부여한다. (예: id="select")
  2. style 태그 안에 #을 입력하고, 그 id를 선택자로 삼아 선언을 붙인다.
  3. 해당 아이디를 가진 항목에만 선언들이 적용된다.

 

잘 보면 #active는 .saw보다 위에 있다. 같은 클래스끼리라면 saw의 내용이 적용되어야 하겠지만, 결과에서는 active가 적용되고 있다. 즉, 아이디 선택자는 클래스 선택자보다 우선순위가 높다.

그런데 알다시피 클래스 선택자는 단순히 태그를 사용한 선택자보다 우선순위가 높게 되어 있다.

아이디 > 클래스 > 태그 선택자 순서대로 우선순위가 적용된다는 뜻이다.

그런데 아이디 선택자를 쓰는 데 있어서는 한 가지 규칙이 있다.

 

아이디는 '단일 개체의 식별', 클래스는 '다수 개체의 그룹핑'에 그 목적이 있다.

간단히 구별하자면 아이디는 적용 대상이 오직 하나여야 한다. 같은 아이디를 가진 개체가 또 나와선 안 된다.

클래스는 그 클래스를 가진 개체들을 하나로 묶어 처리하기 위한(그룹핑) 선택자이다. 다수 개체에 선언을 적용하고 싶다면 굳이 아이디 선택자를 사용할 필요 없이 클래스 선택자를 사용하면 된다.

 

문법상 오류가 일어나는 것은 아니지만 이것은 일종의 룰이자 약속이므로, 되도록 지키는 것이 CSS를 올바르게 사용하는 방법이다.


8. 박스 모델

https://youtu.be/MLjCVUspcDo

 

태그를 쓰다 보면 어떤 태그는 h1처럼 한 줄을 통째로 차지하고, 어떤 태그는 a처럼 딱 자신이 들어갈 만큼의 영역만 차지하는 것을 볼 수 있다. 둘 사이에는 무슨 차이점이 있는 걸까?

 

두 종류의 엘리먼트(=태그) 간의 차이점에 대해서는 테두리를 둘러 보면 더 잘 알 수 있다. 위 스크린샷은 h1 태그를 가진 대상과 a 태그를 가진 대상에 대해 같은 속성의 테두리를 각각 둘러 본 것이다. h1은 개행을 수반하며 한 줄을 통째로 차지하고, a는 그 자신의 영역만을 차지하는 것을 확인할 수 있다.

 

h1 태그와 같이 한 줄을 통째로 자신의 영역으로 차지하는 태그들을 Block Level Element라고 한다.

반대로 a 태그와 같이 최소한의 영역만을 차지하는 태그들을 Inline Level Element라고 한다.

그리고 이 두 특성은 CSS를 통해 간단히 조정이 가능하다.

 

h1 선택자에 display: inline; 을, a 선택자에 display: block 을 넣어준 모습이다. 한 줄을 통째로 차지했던 CSS는 인라인 엘리먼트 수준으로 영역을 좁혔고, HTML은 한 줄을 차지하게 되었다. 서로 해당 특성이 뒤바뀐 것이다.

즉 블럭 레벨 엘리먼트나 인라인 레벨 엘리먼트 같은 속성은 해당 태그가 갖는 속성의 기본값일 뿐, CSS를 통해 얼마든지 바꿀 수 있다.

 

+ display: none; 을 입력하면 해당 엘리먼트가 화면에서 사라지게 된다. 참고해서 알아 두자.

 

더하여, 콤마(,) 기호를 쓰면 복수 개의 태그를 같은 속성의 선택자로 배정할 수 있다는 것도 알아두도록 하자.

이마저도 치기 귀찮을 수도 있다. 마침 위에 나타난 속성들은 모두 border에 관련된 속성들이니 이렇게도 축약해 볼 수 있겠다.

 

겸사겸사 여태껏 계속 5px을 5p라고 타이핑해 왔던 오타도 수정했다.

border: 5px solid red;

한 줄이면 깔끔하게 끝난다.

 

 

그럼 이제 슬슬 실제 박스 모델에 대한 이야기를 해 보자. 실습에 필요없는 코드는 지우고 글씨와 테두리 사이에 여백을 주어 보겠다. 여백은 css에서 padding이라고 한다. 그리고 하는 김에 CSS라는 글자도 두 개로 복사해 보자.

이렇게 하면 서로 약간 떨어져 있는 테두리들이 생긴다. 내친김에 저 간격도 없애 보자. 간격은 css에서 margin이다.

 

이렇게 보니 뭔가 또 이상하다. 애초에 테두리로 둘러싸인 저 사각형이 너무 가로로 넓다. 사각형끼리 약간 떼어놓고 너비도 약간 조정해 주겠다. 

 

이런 식으로. 이제 좀 보기가 낫다.

처음 본다면 이게 뭔가 싶을 것이다. 테두리를 만들더니 여백을 주고, 간격을 띄우고, 너비를 조정하고... 얼핏 보면 그냥 가지고 노는 것처럼 보일 수도 있겠지만 이것이 CSS에서 말하는 '박스 모델'이다.

 

한눈에 보기 위해 방금 만든 페이지에서 마우스 우클릭 > '검사' 항목을 클릭해 보겠다.

 

이 화면은 해당 태그, 그러니까 박스가 어떤 CSS의 영향을 받고 있는지를 나타내 준다.

h1 태그에 커서를 올렸을 때 나타나는 화면이다. 연한 주황색은 margin, 진한 주황색은 border, 초록색은 padding, 파란색은 contents이다. 이외의 상세한 정보들도 코드로 나타내 주며, 이것은 웹 페이지의 구성을 분석할 때 큰 도움이 된다.

 

우리가 지금까지 살펴본 것이 CSS 박스 모델이다. HTML 태그 하나하나를 일종의 박스로 취급해서 그것의 부피감을 결정하는 것이고, 그 부피감은 곧 디자인에서 핵심적인 요소가 된다.


9. 박스 모델 써먹기

 

https://youtu.be/4ir8XAf7wxI

위에서 배운 기능들을 사용해 간단히 가로줄을 넣은 모습이다. WEB이 블럭 레벨 엘리먼트로서 한 줄을 차지하고 있기 때문에, 그 박스를 두르는 테두리 중 아랫변만 보이게 한다면 가로줄과 같은 모양이 될 것이다.

border-bottom: 1px solid gray;

위와 같은 코드로 구현할 수 있고, 그 결과가 좌측이다.

여백이 애매해서 조금 더 수정이 필요해 보이는 것 외에는 그럴싸하다. 그러면 여백을 만지기 전에, 개발자 도구를 한 번 써보자.

 

저 애매한 여백은 margin 때문이었다. 우리는 저 글씨 위아래의 여백이 동일하기를 원하기 때문에, 위쪽의 margin을 0으로 해 주면 해결될 것이다. 한번 해보자.

 

적용해 보았더니 이번에는 너무 좁다. margin 이외에 뭔가 적당히 만져 주면 해결되지 않을까?

우리는 저 글씨가 테두리와 적당히 떨어져 있었으면 좋겠다. 그러니까, padding 값을 조절해주면 해결될 것이다.

 

이제야 좀 보기가 편안하다.

 

그러면 다음 작업으로 넘어가 보자. 기획안에는 가로줄뿐만이 아니라 세로줄도 있었다.

세로줄은 목차의 우측에 위치했으므로, border-right를 주면 될 것이다. 더하여 박스 너비가 과할 것을 우려해 width도 조금 조정해 주겠다.

 

꽤 괜찮다. 그런데 기획안에서는 세로줄이 가로줄과 붙어 있었으므로 여기서도 역시 그렇게 해 주어야 할 필요가 있겠다. 다시 개발자 도구를 보자.

세로줄과 가로줄 사이의 공백은 저 주황색 공간 때문에 생기는데, 저 공간은 margin이다. 그럼 margin을 0으로 만들어주면 해결되겠다. 동시에 저 리스트들이 가로줄에 너무 꼭 붙어버리는 사태를 방지하기 위해 padding값도 조금 주자.

 

이렇게 나왔다. 그런데 이제 가로줄을 보니 화면 전체를 꽉 채우지 않고 가장자리에서 약간 끊긴다.

우리가 원하는 것은 저 줄이 화면 전체를 채우는 것이다. 다시 개발자 도구를 보자.

 

body의 margin이 문제였다. 저렇게 미묘하게 margin을 가지고 있어서 줄이 가장자리에서 끊기는 것이었다. 그러면 저 margin을 0으로 조절해 주면 문제는 해결된다.

 

이런 화면이 완성되었다. 밑의 항목들을 목차 옆으로 올려주는 등의 박스 배치를 가미하면 기획안대로의 웹페이지가 완성될 것이다.

 

'WEB > 정리' 카테고리의 다른 글

WEB 기초 6주차 정리 - JavaScript 15 ~ 21  (0) 2022.05.28
WEB 기초 5주차 정리 - JavaScript 9~14  (0) 2022.05.20
WEB 기초 4주차 정리 - JavaScript 1~8  (0) 2022.05.14
WEB 기초 2주차 정리  (0) 2022.04.30
WEB 기초 1주차 정리  (0) 2022.04.03

9. 줄바꿈 : br vs p

https://youtu.be/SXtp7w7kdDc

  • 경쟁관계에 있는 두 태그를 알아보며 정보로서의 웹이라는 관점에 대해서 생각해 본다.
  • + 간단한 css 문법 시연

 

≫ 검색어: html new line tag

<br> 태그

영상에서 예시로 사용한 영문 텍스트 원본을 찾지 못했다. 예시 텍스트는 대체해도 문제가 없다고 하므로, 위키백과의 html 설명을 대신 차용했다.

  • 일반 텍스트 에디터에서의 엔터 키(줄바꿈)에 대응된다.
  • 여러 번 사용하는 것이 가능하다. 두 번 넣으면 단락이 분리되고, 세 번 넣으면 단락 간 공백이 강조되는 식이다.
  • 닫지 않는 태그이다. 무엇인가를 감쌀 필요 없이, 줄바꿈이라는 시각적인 의미만을 가지고 있기 때문.

 

 

≫ 검색어: html paragraph tag

<p> 태그

  • 한 단락을 감싸는 태그이다. => 열고 닫음이 존재한다.
  • 위와 같이 단락을 표현하고자 할 때에는 <br>보다는 <p> 태그가 더 적절한 선택이라고 볼 수 있다. '여기서부터 여기까지가 한 단락이다' 라는 것을 의미론적으로 표현해 주고, 그것이 이 웹페이지를 좀 더 정보로서 가치 있게 만들어 주기 때문.
  • 하지만 여백 크기를 직접 지정할 수는 없으므로 시각적인 자유도가 떨어진다. (<br> 태그는 여러 번 사용해 원하는 만큼 여백을 늘리는 것이 가능하다)
  • css로 이를 보완할 수 있다. 태그와 태그 사이의 여백을 지정하는 style="margin-top:(n)px;" 문법을 사용하면 원하는 만큼 정교하게 단락 여백 크기를 정하는 것이 가능하다.

css 문법은 해당 강좌의 요점이 아니다. 중요한 것은...

시각적인 부분은 css라는 기술을 통해 얼마든지 보완이 가능하므로, 의미에 맞는 태그를 사용하는 것이 좋다.

 

 


10. html이 중요한 이유

 

https://youtu.be/MgZRbCaF_rY

 

 

  • 기초는 기초만으로도 할 수 있는 일이 많다
  • html은 왜 중요한가?

 

  • 웹 사이트에서 글을 쓴다 = 내부적으로는 HTML 코드를 생산하는 행위.
  • html이 잘 활용된 글은 내부적(코드상)으로 정보적인 가치가 더 높다
  • ex: 같은 단어를 제목으로 내세우더라도, 시각적으로만 제목처럼 보이도록 만들어 놓은 글html 태그를 사용해 해당 단어를 제목으로 만들어 놓은 글이 있다. 검색 엔진은 어느 쪽을 더 검색 결과 위쪽에 게시하겠는가? (=어느 쪽을 더 적합한 정보라고 판단하겠는가?)
  • "html을 의미에 맞게 정확히 사용한다는 것은 비즈니스적인 측면에서 생명과도 같이 중요한 문제이다"

 

  • 웹의 핵심적인 철학은 접근성(accessibility).
  • 웹은 모든 운영체제에서 동작하며 - 웹 페이지의 소스코드는 누구에게나 공개되어 있고 - 웹은 저작권이 없는 순수한 공공재이다.
  • = 모든 사람에게 열려 있는 특성, 즉 접근성이 웹을 여타 기술과 구별되는 특별한 기술로 만든다
  • ex: 시각장애인은 텍스트를 청각 정보로 변환하는 등의 방법으로 웹 페이지를 읽는다. 만일 html 코드를 적절히 사용하지 않고 심미성만을 고려하여 웹 페이지를 만든다면, 결과적으로 시각장애인에게 있어 해당 웹 페이지의 접근성은 떨어지게 된다.
  • "html의 적절한 사용은 웹의 핵심인 접근성에 기여하므로, 휴머니즘적인 측면에서도 매우 중요하다"

 


11. 최후의 문법 속성 & img

 

https://youtu.be/RhE-RHdi-NY

 

 

<img> 태그

  1. 사용할 이미지를 저장한다. (Tip: Unsplash 같은 저작권 프리 사이트를 이용하면 좋다)
  2. 이미지를 첨부할 소스코드 파일과 같은 디렉토리에 이미지 파일을 넣어 준다.
  3. (이미지 파일 이름이 길 경우 좌측의 Project 탭 > 이미지 우클릭 > Rename을 선택하면 파일명을 바꿀 수 있다.)
  4. 이미지를 넣고 싶은 곳에 <img src = "파일이름.확장명">을 입력하고 리로드한다.

이미지는 Unsplash에서 가져온 저작권 프리 이미지이다.

 

이미지 크기 조절은 이미지 이름 뒤에

width = "원하는 크기 수치" 를 추가해 줌으로써 가능하다.

 

(원하는 크기는 450과 같은 단순 수치여도 가능하고, 100%와 같은 비율 수치도 가능하다.

100%로 설정하면 자동으로 페이지 크기에 꼭 맞게 이미지 크기 비율이 조정된다.)

 

 

<img scr = "coding.jpg" width = "100%">

  • 태그에서 위와 같은 부분을 '속성(attribute)' 이라고 한다.
  • 태그가 태그 자체만으로 의미가 부족할 때는 속성을 통해서 더 구체적인 의미를 부가할 수 있다.
  • 속성의 위치 배열이나 순서는 상관이 없다.

12. 부모자식과 목록

 

https://youtu.be/aUtnyev_1vg

 

태그가 태그를 포함하고 있을 때

다른 태그를 포함하는 태그를 부모 태그, 포함되는 태그를 자식 태그라고 한다.

html의 태그 중 몇 개는 그에 항시 동반되는 부모, 혹은 자식 태그가 존재한다.

 

 

+ 조작 팁: Ctrl(MacOS의 경우에는 Command) 키를 누른 채로 여러 곳에 클릭을 해 주면

커서가 여러 개 생겨 동시 입력이 가능하다.

 

<li> 태그

예시 텍스트의 목차 역시 해당 위키 페이지의 목차를 참고했다. (이 이후로 나오는 예시 텍스트들 역시 동일한 곳에서 참고함)

  • list의 앞글자 두 개를 따왔다.
  • 닫는 태그가 존재한다.
  • 목차의 각 항목마다 열고, 또 닫아준다.

 

 

+ 조작 팁: 드래그로 블록 지정을 한 뒤 Tab 키를 누르면 해당 영역의 텍스트 전체가 한 칸 들여쓰기 처리된다.

<ul> 태그

에디터에서 Tab키를 통해 들여쓰기된 것과 실제 웹페이지에서 목차가 들여쓰기된 것은 관계가 없다. 웹페이지에서 목차가 들여쓰기된 것은 <ul> 태그의 기능이다.

  • li 태그의 부모이다. ul 태그와 li 태그는 부모자식 관계로서 항상 동반된다.
  • 목차(리스트)의 항목들을 하나의 리스트로 묶고, 또 다른 리스트와 구분되게끔 하는 기능을 지닌다.
  • Unordered List(순서가 없는 목록)의 약자이다. 순서가 있는 목록은... 다음을 보자.

 

 

<ol> 태그

두 개의 목차 중 아래쪽 목차만 <ul>을 <ol>로 바꾸었다. 얼핏 보기에는 차이가 없어 보일 수 있으나...

잘 보면 에디터 화면에서는 아래쪽 목차에 해당되는 텍스트에 포함되어 있던 숫자들이 없어져 있다. 숫자를 일일이 쓰지 않고도 순서가 있는 목차를 표현한 것이다. 이것이 <ol> 태그, Orderd List의 기능이다. 시각적으로도 <ul> 태그로 만든 리스트는 단순한 점(●) 모양으로, <ol> 태그로 만든 리스트는 번호로 열거되어 있어 서로 구분된다.

 

넘버링은 자동으로 붙여지기 때문에, 수동으로 일일이 숫자를 써붙이는 것보다 수정/관리 면에서도 용이하다.

 

 

+ 리스트는 부모-자식 2대가 동반되는 태그를 사용하나, 테이블(표)를 만들 경우엔 3대가 동반되는 태그를 사용한다.

<table> <tr> <td> (닫는 태그 생략) 로, 각각 표 전체/표의 한 행/한 칸을 나타낸다.


13. 문서의 구조와 슈퍼스타들

 

https://youtu.be/sVt5nyz3Gdo

 

  • 정보가 많아짐에 따라 그 정보를 정리정돈하기 위한 체계, 또는 구조가 필요하다.
  • 태그 사용 빈도수 상위 랭킹 4위권에 드는 슈퍼스타들 - 네 가지 태그를 알아본다.

 

<title> 태그

웹 페이지 '탭'에 표시되는 제목에 주목할 것. 차이점이 보이지 않는다면 이전 스크린샷과 비교해 보자.

  • 닫는 태그가 존재한다. 제목을 감싸는 역할을 한다.
  • 제목을 사용자에게 명시적으로 알려줄 수 있다.
  • 검색 엔진에도 '제목' 격의 정보로서 이 <title> 태그 안의 내용을 제출하게 된다. 책으로 치면 표지와도 같다.

 

<meta> 태그

  • 닫는 태그는 별도로 필요하지 않다.
  • 속성값을 통해 문자를 여는 형식 등의 '메타적'인 정보를 브라우저에 전달할 수 있다.

 

지금까지 필자가 한글로 페이지를 작성하고, 또 그 페이지가 브라우저에서 올바르게 열렸던 것은 실은 요행이라고 할 수 있다. 우연히 필자의 컴퓨터에서 에디터가 문자를 여는 형식과 브라우저가 문자를 여는 형식이 일치한 덕택인 것이다. 만약 두 방식이 일치하지 않는 경우에는 브라우저에서 한글 문자가 깨지는 등의 현상이 발생할 수 있으며, 이런 경우 <meta> 태그가 그 해법이 될 수 있다.

 

스크린샷 우측 하단을 보면 에디터 창 아래에 UTF-8이라는 텍스트가 보인다. 에디터는 UTF-8 형식으로 문자를 저장하며 또 내보내고 있다. 브라우저가 올바르게 한글 문자를 나타내기 위해서는 브라우저 또한 이와 같은 형식으로 문자를 처리해 주어야 할 필요가 있고, 이를 지시하는 태그가 <meta> 태그이다. 형식은 <meta charset = "utf-8"> 과 같다.

 

 

위 두 가지 태그 <title>과 <meta>는 본문의 내용 그 자체라기보다는 본문을 설명하는 태그라고 할 수 있다.

그러면 에디터에서 '본문의 내용''본문을 설명하는 내용'은 어떻게 구별할 수 있을까?

 

 

<body> 태그, <head> 태그

본문의 내용을 조작한 것이 없으므로 브라우저에서는 따로 달라진 내용이 없어 보이는 것이 정상이다. <body> 태그의 닫는 태그는 스크린샷 상으로는 보이지 않으나... 저 아래에 있다.

  • 두 태그는 모두 열고 닫음이 있다.
  • <head> 태그는 본문을 설명하는 내용들을 감싼다.
  • <body> 태그는 본문 자체의 내용들을 감싼다.
  • 즉, html의 모든 태그는 <head> 태그나 <body> 태그 둘 중 하나의 아래에 놓이게 된다. (=속하게 된다)

 

그리고 이 모든 태그들을 포함하는 태그가 있는데...

 

<html> 태그

<html> 태그 역시도 스크린샷에서는 보이지 않지만 저 아래에 있다.

  • 닫는 태그가 있다.
  • 문서 전체를 감싼다. (<head>, <body> 포함)
  • 위에 관용적으로 <!doctype html> 이라고 써 준다. '이 문서는 html로 작성되었다' 라는 의미이다.

 

이것들은 관용적인 규칙이다. html로 작성된 웹 페이지는 (실제 웹 페이지 내용에 보이지는 않을지언정) 이러한 규칙들을 따라 작성되게 되어 있는 것이다. 실제 예시를 보자. 아래는 예시 텍스트로도 사용했던 위키백과의 'HTML' 항목 페이지 소스코드이다. (웹 페이지에서 마우스 우클릭 > 소스 코드 보기 (또는 단축키 Ctrl + U)로 페이지 소스코드를 확인할 수 있다)

 

좌측 화면이 해당 소스코드이다. 자세히 보면 맨 첫 줄에 회색 글씨로 <!DOCTYPE html> 이 먼저 보이고,

그 다음 줄에는 몇 개의 속성값을 포함하고 있는 <html> 태그가, 그 다음 줄부터는 <head> 부분이 작성되어 있다. <title><meta>도 어렵지 않게 찾을 수 있을 것이다. 더 아래를 보면 <head> 태그가 닫히는 부분이 보이고, 그 아래로는 <body>가 이어진다.

 

위와 같은 태그와 관용 규칙들은 웹 페이지를 구조적으로 정리하기 위해 웬만한 웹 페이지에서 대부분 사용하고 있는 것들이기 때문에, 자연히 사용 빈도가 그 어떤 (대부분 선택적으로 사용하는) 다른 태그보다 높을 수밖에 없다.

 

 


14. HTML 태그의 제왕

 

https://youtu.be/V3pkC1hE-as

150여 개의 태그들 중 제왕이라고 할 수 있는 태그, 검색 엔진이 있게 하는 태그, 하루에 100번도 넘게 사용하는 태그, 다른 말로 표현하자면 하이퍼텍스트(HyperText). 링크를 표현하는 태그인 <a> 태그에 대해 알아본다.

 

 

<a> 태그

걸어둔 링크는 'html specificaton'을 검색했을 때 나오는 국제기구 W3C의 HTML5.2 specification 문서.

  • 닫는 태그가 있다. 하이퍼링크를 걸 텍스트를 감싸서 사용한다.
  • 여는 태그 안에 href="링크 주소" 라는 속성을 덧붙여서 텍스트에 걸 링크를 지정한다. (href는 Hypertext REFerence의 약자다.)
  • 하이퍼링크를 건 텍스트를 클릭하면 (페이지가 있는 탭 내에서) 해당 링크로 이동한다.

 

클릭했을 때 새 탭으로 열리게 하고 싶으면 target = "_blank" 라는 속성을 덧붙이면 된다.

 

보이지 않지만, 하이퍼링크 텍스트 위에 마우스 포인터가 올라가 있다.

마우스 포인터를 댔을 때 링크된 페이지의 제목이 툴팁으로 뜨도록 하고 싶다면 속성에 title = "링크된 페이지 제목" 을 추가하면 된다.

 


15. 웹사이트 완성

 

https://youtu.be/w5S0GACgL3U

여러 개의 링크들을 묶어 하나의 완성된 웹사이트를 구성해 본다.

 

(예시) 구성 기획안

  • (사이트 전체 제목) WEB ≫ 클릭 시 웰컴 페이지 "index.html" 로 이동
  • (목차 1) HTML ≫ 클릭 시 "1. html" 로 이동
  • (목차 2) CSS ≫ 클릭 시 "2. html" 로 이동
  • (목차 3) JavaScript ≫ 클릭 시 "3.html" 로 이동

 

각 링크에 해당되는 페이지들이 완성된 것은 아직 아니나, 일단 위의 기획안대로 하이퍼링크를 걸어 주었다.

각각의 페이지들은 현재 편집 중인 파일 "1.html"의 내용을 템플릿 삼아

같은 형식으로 조금씩 수정하여 작성해 나가기로 하자.

 

좌측의 Project 탭에서 1.html에 우클릭 > Duplicate 하여 2.html을 만들어 주고

같은 방식으로 3.html, index.html 파일까지 차례대로 생성해 준다.

 

 

형식은 갖추었으므로, 하나씩 페이지를 완성해 준다. 예시 텍스트로는 모두 위키피디아의 문서와 목차 내용들을 이용했다. 우측에는 소스코드, 좌측에는 완성된 페이지를 띄울 것이다.

 

2. html (WEB1 - CSS) <strong> 태그와 <a> 태그를 곳곳에 활용했다.
3. html (WEB1 - JavaScript)
index. html (WEB1 - Welcome)

이렇게 하면 각각의 웹페이지가 담긴 링크들과, 링크들이 서로 연결되어 만들어진 하나의 완성된 웹사이트가 완성된다.

 


16. 원시웹

 

https://youtu.be/pYOEy_mAMpI

웹의 역사를 살펴보며 웹의 본질을 파악하고, 정보 기술을 바라보는 관전 포인트를 넓힌다.

 

  • 웹이 처음 등장한 지는 27년이 지났다.
  • 인터넷과 웹은 다르다 - 어떻게? : 인터넷이라는 전체 하에 웹을 비롯한 여러 서비스들(FTP, Email 등)이 존재한다
  • 1960년: 인터넷 등장, 1990년: 웹 등장.
  • 인터넷은 핵의 등장을 배경으로 한다 - 당시의 미국 통신시스템은 중앙집중식으로, 핵 공격을 당하면 마비되었음. 핵 공격을 견딜 수 있는 강인한 통신 시스템의 필요성 대두 >> 인터넷 탄생
  • 중앙이 없이 수많은 통신 장치들이 분산되어 전화국과 같은 역할 수행. 하나가 없어져도 나머지가 역할 속행
  • 인터넷은 웹의 등장 전까지 전문적 목적으로만 사용되어 왔으나, 웹의 등장으로 대중화되었음.
  • 스위스 제네바에서 팀 버너스 리가 웹의 전신인 프로그램 Enquire에 인터넷을 합성하여 웹페이지 편집기/World Wide Web/웹서버를 만듦 >> 원시 웹 (Primitive Web). 이때의 웹은 웹 그 자체의 본질만을 담고 있었다
  • 이후로 웹은 인터넷의 잠재가능성을 끌어올려 폭발적으로 동반 성장해왔다.

17. 인터넷을 여는 열쇠 : 서버와 클라이언트

 

https://youtu.be/yBPyzaccbkc

'인터넷'이 작동하기 위해 필요한 컴퓨터는 (본질적으로) 두 대

: 웹 '서버' 가 설치된 컴퓨터와 웹 '브라우저'가 설치된 컴퓨터

 

브라우저가 설치된 컴퓨터는 '주소'를 입력함으로써 웹 페이지 '파일'을 요청(request)하고

서버가 설치된 컴퓨터는 그 요청에 응답(response)하여 요구받은 파일을 전송한다.

 

이때 요청하는 컴퓨터는 'Client', 요청에 응답하여 서비스를 제공하는 컴퓨터는 'Server'라고 한다.

 

그러므로, 웹 브라우저는 웹 '클라이언트' 라고도 할 수 있다.

게임에 있어서 클라이언트 입장이 되는 프로그램은 게임 클라이언트, 채팅에서는 채팅 클라이언트. 서버 또한 마찬가지.

서버 또한 클라이언트 프로그램과 마찬가지로 컴퓨터에 설치하여 가동시키는 일반 프로그램과 같다.

 

서버와 같은 일(내 컴퓨터에 있는 문서를 인터넷상의 누구나 웹브라우저를 통해 볼 수 있도록 하는 것)을 하는 두 가지 방법 : 1. 내 컴퓨터에 웹 서버를 직접 깐다(Web Server) / 2. 이 일을 대행해 주는 업체에게 맡긴다(Web Hosting)

직접 웹 서버를 깔아 사용하는 것은 어렵지만 배울 것이 많고, 업체에게 맡기는 웹 호스팅은 쉽지만 배울 것은 덜하다.

 


18. 웹호스팅 : github page

 

https://youtu.be/n1wvs7xuUYk

직접 웹 서버를 운영하는 것은 쉽지 않은 일이다.

  • 컴퓨터가 있어야 하고, 접속에 대비해 항상 켜져 있어야 한다.
  • 컴퓨터에 웹 서버가 깔려 있어야 한다.
  • 집 밖에서 인터넷을 통해 웹 서버에 연결할 수 있게 여러 가지 조치를 해야 한다... 등등

≫ 때문에, 이런 일을 대행해 주는 업체들이 있다.

 

호스트(host) : 인터넷이 연결되어 있는 각각의 컴퓨터들

웹서버를 운영하기 위한 컴퓨터(호스트) 를 빌려주는 회사 = 웹 호스팅(web hosting) 업체

 

수많은 웹호스팅 업체들이 있고, 이 중에서도 무료이며 매우 유명한 회사가 있다...

 

 

깃허브 (Github)

: 전 세계의 수많은 오픈소스들이 이곳에서 만들어지고 있다. 홈페이지를 운영할 수 있는 웹서비스를 제공하기도 한다.

회원가입 후 Create Repository를 하면 개인 소스코드 저장소를 만들 수 있다.

위의 화면에서 Add file > Upload files 를 선택한다. 15강까지에서 만든 예제 html 파일들을 올려 보자.

 

 

Commit changes에는 파일 설명을 적는다. 첫 번째 얇은 칸에는 처음 파일을 업로드할 때 그 파일에 대한 설명을 적고, 그 아래 넓은 칸에는 업로드한 파일을 수정하여 재업로드할 때 변경한 내용에 대한 설명을 적도록 한다.

 

이렇게 파일이 수정될 때마다 그 변경 사항들을 저장하는 것을 버전 관리라고 한다. (딱히 이 수업에서의 요점은 아니지만 알고 있으면 좋다.)

 

이렇게 해서 파일을 업로드하면 아래와 같이 리포지토리에 나타나게 된다.

깃헙은 사용자가 이렇게 업로드한 파일들을 이용해서 웹사이트를 운영할 수 있도록 무료로 컴퓨터와 웹서버를 제공해 준다. 이 기능을 사용하려면 설정을 조금 더 만질 필요가 있다. 위에 보이는 탭들 중 톱니바퀴 아이콘이 달린 Settings로 들어간다.

 

강좌가 녹화된 시점이 2017년인지라 (무려 5년 전이다!) 깃헙 페이지도 그동안 자잘하게 조금 달라진 점이 있는 모양이었다. 강좌에서는 스크롤만 내리면 GitHub Pages가 나왔지만 최근 버전에서는 스크롤을 내려도 나오지 않는다. 옆에서 찾아야 한다. Pages라고 되어 있는 탭을 클릭하자.

 

그러면 Source라는 란에 버튼이 두 개 있을 것이다. 처음에는 None과 Save라고 되어 있을 가능성이 높다.

None을 누르면 Select Branch라는 옵션이 뜨는데, main을 골라 주자.

(강좌에서는 master branch를 고르게 했지만 현재 사이트 기준으로 해당 옵션은 보이지 않는다.

대신 main을 택하면 같은 동작이 되는 모양이다.)

그렇게 위 스크린샷과 같이 버튼이 Branch: main으로 바뀌었을 때 Save를 눌러 주면,

 

위 화면과 같이 사이트가 publish될 준비가 되었다는 메시지와 함께 링크가 뜬다.

Your site is ready to be published at (링크 주소) < 여기서 이 링크가 내가 만든 웹 사이트의 주소가 되는 것이다.

여기서 이 링크를 클릭하면,

 

바로 내가 만든 이 웹사이트가 나오게 되는 것이다. 정확히는, 해당 리포지토리에 등록한 html 파일로 형성되는 웹사이트로 연결된다. 이제 깃헙에서 준 저 주소가 이 웹사이트의 주소가 되었으므로, 이 웹사이트의 공유 또한 그 주소를 공유함으로써 가능하게 되었다.

 

이처럼 html로만 이루어진 웹사이트를 호스팅하는 것을 Static web hosting이라고 한다. Static web hosting은 무료 서비스도 많고 가격도 저렴하다. free static web hosting으로 검색하면 쉽게 서비스들을 찾을 수 있다.

추후 PHP, Python, Ruby on Rails 등을 더 배우게 되면 Dynamic web hosting이 필요해지게 될 것이다.

실제 현업에서도 웹서버 운영을 스스로 하는 경우는 많지 않고 (경험과 노하우가 많이 필요하기 때문에) 대부분은 사업자에게 호스팅을 맡긴다.

: 생활코딩 HTML & Internet – 1. 수업소개 ~ 8. 통계에 기반한 학습

https://www.youtube.com/playlist?list=PLuHgQVnccGMDZP7FJ_ZsUrdCGH68ppvPb 

 

WEB1- HTML & Internet

 

www.youtube.com

 

 

 

 

A hackable text editor for the 21st Century

At GitHub, we’re building the text editor we’ve always wanted: hackable to the core, but approachable on the first day without ever touching a config file. We can’t wait to see what you build with it.

atom.io

 

* 파일을 저장할 때는 (파일이름).html 확장자로 저장할 것.

 

 

 

 

>> ' 웹페이지를 연다 '

 

  • 내 컴퓨터에 저장되어 있지 않은 웹페이지를 열겠다
  • > 주소를 브라우저에 입력

 

  • 내 컴퓨터에 저장된 (브라우저와 같은 컴퓨터에 파일이 저장되어 있는) 웹페이지를 열겠다
  • > 브라우저에서 파일 열기(Windows 기준 ctrl+O)
  • > .html 파일 선택 -> Open

* 마이크로소프트 Edge 브라우저에서는 지원하지 않음.

 

 

  • 에디터에서 수정한 내용이 반영된 웹페이지를 브라우저에서 보고 싶다
  • > 에디터에서 파일 저장(Ctrl+S)
  • > 브라우저에서 새로고침(F5)

 

 

WEB1 - 5. HTML코딩과 실습환경 준비


 

 

  • 웹페이지에 텍스트 표현
  • > 텍스트를 에디터에 입력한 후 저장
  • > 브라우저에서 새로고침

 

 

태그

 

<strong> 본문 </strong>

=> 본문

  • 태그 사이의 텍스트를 진하게(볼드) 처리

 

 

<u> 본문 </u>

=> 본문

  • Underline. 태그 사이의 텍스트를 밑줄 처리
  • * 태그는 '열리는 태그' 와 '닫히는 태그'가 있다. 구분을 위해 닫히는 태그에는 슬래시(/)를 넣는다.

 

 

 

WEB1 - 6. 기본문법 태그


 

  • 웹페이지에서 해당 페이지의 html 코드 보기
  • > 웹 페이지에서 마우스 우클릭 > '페이지 소스'

 

 

HTML Headings (제목)

 

<h1>This is heading 1</h1>
<h2>This is heading 2</h2>
<h3>This is heading 3</h3>
<h4>This is heading 4</h4>
<h5>This is heading 5</h5>
<h6>This is heading 6</h6>

 

This is heading 1

This is heading 2

This is heading 3

This is heading 4

This is heading 5
This is heading 6
  • h1부터 h6까지 있다. h1이 가장 크며 h6이 가장 작다.
  • 자동 줄바꿈이 된다.

 

* (단순히 에디터에서 텍스트에 엔터를 쳐 줄바꿈을 넣는다고 해서 브라우저에서까지 개행이 적용되지는 않는다!)

 

 

WEB1 - 7. 혁명적인 변화


 

 

+ Recent posts