HTML로 앙상한 뼈대를 만들었다면, CSS는 이 뼈대에 살을 붙여 이쁘게 보이도록 하기 위한 Style Sheet 언어이다. HTML 코드에서 head 태그의 style 태그 안에 CSS 내용이 들어간다.

    <div>
      <h1>생활코딩 CSS 연습하기</h1>
    </div>
    <div id="grid">
      <div>
        <ol>
          <li>HTML</li>
          <li>CSS</li>
          <li>JavaScript</li>
        </ol>
      </div>
      <div>
        <a
          href="http://metamong.shop/"
          target="_blank"
          title="나홀로 메모장 Ver2.0"
          style="color: green"
          >나홀로 메모장 Ver2.0</a
        >
        <p>Hello, Metamong!</p>
      </div>
    </div>

※ 링크 태그인 a 태그의 속성값으로 target="_blank"를 부여하면, 새로운 웹페이지에서 링크가 열리게 할 수 있다. 그리고 title="나홀로 메모장 Ver2.0"을 부여하면, 링크에 마우스 커서를 갖다 댔을 시 자그마한 툴팁이 뜨게 된다.

  • CSS가 필요한 이유

SW사관학교 정글 자료를 공부할 당시 만들었던 사이트를 가져와보았다! 만약 '나홀로 메모장 Ver2.0'이라는 링크를 초록색으로 꾸미고 싶을 때, HTML로만 해결하려고 하면 a 태그 안에 style="color: green"이라는 속성 값을 부여하면 된다. 하지만 점점 색상을 부여해야 할 요소가 많아지는 등, 복잡해지면 일일히 속성값을 부여하는 것은 상당히 비효율적이다. 이를 해결하기 위해 CSS가 등장했는데 HTML이 정보 전달, 즉 뼈대 구성에만 전념하게 하고 꾸미는 부분은 CSS가 전담하게 하여 보다 효율적으로 문서를 작성할 수 있게 되었다.

<head>
     <style>
        a {
        color: green;
        }
     </style>
</head>

CSS를 작성할 때는 head 태그 안에 style 태그를 넣고, style 안에서 CSS 코드를 작성하면 된다. 위와 같이 작성 시 a 태그의 모든 폰트 색상은 초록색이 된다.

  • 박스 모델

우리가 만든 어떤 요소가 HTML 문서 안에서 얼마만큼의 크기를 가지고 있는지 직관적으로 알기는 어렵다. 이때 border를 이용해서 해당 요소가 어떤 크기를 가지는지 직관적으로 알 수 있다.

h1,
a {
    border: 5px solid red;
}
<h1>CSS</h1>
Cascading Style Sheets(<a
	href="https://developer.mozilla.org/ko/docs/Web/CSS"
	>CSS</a
>)

이 때, h1 태그의 CSS가 화면 전체를 차지하는 것으로 보아 Block Level Element임을 알 수 있고, 하이퍼링크의 CSS가 자신의 크기만큼 차지하는 것으로 보아 Inline Element임을 알 수 있다.

F12를 통해 검사 도구로 들어가 Styles 항목을 누르면 각 요소의 어떤 부분이 얼마만큼 화면을 차지하는지 확인할 수 있다.

  • 그리드, Grid

Grid는 페이지를 여러 영역으로 나누어줄 때 사용된다.

      div {
        border: 5px solid black;
      }

      #grid {
        border: 5px solid pink;
        display: grid;
        grid-template-columns: 2fr 1fr;
        /* grid-template-columns: 150px 1fr; */
      }
    <div id="grid">
      <div>Navigation</div>
      <div>Article</div>
    </div>

전체화면을 3으로 보았을 때 Navigation이 2를, Article이 1을 차지하는 것을 알 수 있다. 이는 페이지의 크기를 늘리거나 줄여도 비율이 유지된다. 만약 150px 1fr;로 했다면 Navigation은 페이지의 크기가 늘어나든 줄어들든 150px를 유지하는 한편, Article은 나머지 부분을 차지하고 페이지 크기 변화를 따라간다.

 

※ div 태그는 Block Level Element이고 span 태그는 Inline Element이다.

※ caniuse 사이트를 통해 해당 기술이 얼마나 자주 사용되고 어느 플랫폼에서 사용할 수 있는지 확인할 수 있다.

Flex
Grid

Flex와 Grid 모두 대부분의 플랫폼에서 사용가능하며 전세계 90% 이상의 인구가 Flex 혹은 Grid로 이루어진 사이트를 이용할 수 있다.

  • 미디어 쿼리, Media Query
      div {
        border: 10px solid green;
        font-size: 60px;
      }
      /* @media (min-width: 800px) {
        div {
          display: none;
        }
      } */
      @media (max-width: 800px) {
        div {
          display: none;
        }
      }
    <div>Responsive</div>

800px을 넘은 경우
800px까지 display: none;

미디어쿼리를 사용하면 페이지의 크기 변화에 따른 동적인 반응을 이끌어낼 수 있다. 위와 같이 @media (max-width: 800px)로 코딩이 된 경우, 이는 최대 800px까지 해당 코드인 display: none;을 실행한다는 뜻이다. 즉 0 ~ 800px까지는 보이지 않다가, 800px부터는 display: none;이 실행되지 않으므로 Responsive가 보이기 시작한다.

 

반면 @media (min-width: 800px)는 최소 800px부터 해당 코드인 display: none;이 실행된다는 뜻이다. 즉 800px 이상부터는 보이지 않는다. 0 ~ 799px까지는 display: none;이 실행되지 않으므로 Responsive가 보인다.

'프로그래밍 > 생활코딩_WEBn 시리즈' 카테고리의 다른 글

HTML  (0) 2021.10.27
  • 실습환경 준비

코딩 에디터가 필요하다. 생활코딩 HTML 강의는 Atom을 쓰는데, 나는 이미 Visual Studio Code가 있고 거의 써보진 않았지만 이미 생활코딩 강의를 어느 정도 들어봤는데 VSC를 써도 별 문제가 없을 것 같다.

 

근데 생활코딩은 왜 Atom을 쓸까? 대부분이 VSC를 쓰지 않나?

Visual Studio Code vs Atom : https://ko.myservername.com/visual-studio-code-vs-atom

먼가 번역체로 쓰여져 있고 대부분 처음 듣는 말이 많아 솔직히 잘 모르겠다. 그냥 VSC가 더 빠르긴 하단다.

그리고 학부시절 C언어 강의를 들은 적이 있는데 이 때 Visual Studio를 사용했다. 조금 비슷해 보여서 VSC를 쓰겠다. 그나마 더 익숙하기도 하고 인터페이스가 나한테는 더 편하다!

 

 

  • 파일 열기

Chrome(Web Browser)에서 Crtl + O를 통해 현재 내 컴퓨터에 있는 파일을 불러올 수 있다.

 

 

  • 기본 문법 Tag
<strong>글자를 진하게 강조할 수 있다.</strong>
<u>글자에 밑줄을 그을 수 있다.</u>
<h1>h1~h6으로, 글자의 크기를 조절할 수 있다. h1이 가장 크다. 제목, 소제목과 같다고 보면 되고, 줄바꿈이 실행된다</h1>
<br>을 통해서 줄바꿈을 실행할 수 있다.
<p>이 태그는 문단을 나타내는 paragraph의 약자로, 말 그대로 문단을 나타내고 '<h1~6>'태그처럼 줄바꿈이 실행된다.</p>
<img src="#">#에 img의 주소를 넣으면 사진을 불러올 수 있다. 혹은 같은 디렉토리(폴더)안에 있다면 파일 이름을 적어도 사진을 불러올 수 있다.
<title>head 태그 안의 title 태그 안에 해당 페이지가 가졌으면 하는 원하는 제목을 넣어, 페이지의 이름을 정할 수 있다.</title>

Tag는 무언가를 지정할 때 쓰인다.

 

 

  • 부모-자식 구조
<div class="parent">
	<div class="child">
	부모(parent)의 속성이 바뀌면 자식(child)의 속성 또한 바뀌게 된다.
	HTML에서 div(parent) 안에 들어간 div(child)는 parent에 속해 있다고 보기 때문이다.
	</div>
</div>

 

 

  • 목록
<ul>
	<li>1</li>
	<li>2</li>
	<li>3</li>
</ul>

ul 태그 안에 list를 배열하면 점으로 list들을 나열하게 된다.(이 또한 부모-자식 구조이다)

<ol>
	<li>1</li>
	<li>2</li>
	<li>3</li>
</ol>

반면 ol 태그 안에 list를 배열하면 숫자가 매겨지며 list들이 나열된다.

ol은 ordered, ul은 unordered의 약자라는 것을 알고 있으면 기억하기 수월하다.

 

 

  • 링크
<a href="https://www.w3.org/TR/html5/" target="_blank" title="html5 specification">링크</a>

a 태그는 하이퍼링크를 걸어줄 때 사용된다. 여기서 href는 이동할 링크 주소이고, target="_blank"를 통해 새로운 창에서 링크가 뜨도록 할 수 있다. title="html5 specification"은 사용자가 마우스를 링크에 가져다 놓았을 때 Tool Tip이 뜨게 한다.

Tool Tip, 마우스가 안 보이는데 실제론 마우스를 갖다댔다.

 

 

  • Server & Client

출처 : 생활코딩 HTML WEB1-17 강의

Web Browser, 즉 Client(나라고 생각하자)가 Server에 index.html을 Request(요청)하면, Server가 저장해두고 있던 index.html을 Response(반응)한다.

 

그냥 내가 서버에 index html 보여줘!라고 하면 서버가 index.html을 보여주는 단순한 것이다.

 

생활코딩에서는 웹호스팅(아직 잘 모르는 단어이다)으로 github를 썼다. 같은 개념인지는 모르겠지만, SW 사관학교 정글을 준비한 적이 있는데 이 때는 AWS Instance와 Gabia를 사용했었다. 일단 생각나는 것을 그냥 적어봤는데, 나중에 더 배우고 나서 저 2개가 다른 것임을 알게 된다면 조금 쪽팔릴 것 같다 ㅎㅎㅎ!

 

또한 Apache와 Bitnami를 이용해 localhost로 서버를 운영해 내가 만든 페이지를 열 수 있다. 앞의 Ctrl + O로 HTML 파일을 열었을 때와 다른 점은, 서버가 이용됐다는 점이다. 비록 지금은 서버를 내 컴퓨터에 두는 기반으로 내가 만든 HTML 파일에 들어갔지만, 훗날 좀 더 배우면 거대한 서버 대여 서비스를 이용해 내가 만든 웹, 앱, 혹은 프로그램을 배포할 수 있을 거란 생각이 든다.

 

 

 

 

출처 : 생활코딩

'프로그래밍 > 생활코딩_WEBn 시리즈' 카테고리의 다른 글

CSS  (0) 2021.11.05

+ Recent posts