0. CSS 소개

HTML과 CSS의 관계에 대해 배우던 중 이런 글을 보았다:

 

  • Inline - by using the style attribute inside HTML elements
  • Internal - by using a <style> element in the <head> section
  • External - by using a <link> element to link to an external CSS file

CSS가 HTML 문서에 적용될 수 있는 3가지 방법에 대한 글이다.

1) Inline 방법은 개별 HTML 요소에 style '속성'을 지정하는 방법,

2) Internal 방법은 <style> 태그를 사용하는 방법으로, {}을 사용해서 <p>, <h1> 등 '태그'별로 스타일을 할당할 수 있다.

3) External 방법은 <link> 태그로 외부 파일을 끌어오는 방법인데, CSS 언어를 알아야만 사용가능한 방법이다.

: 실제로 화려한 웹사이트를 보면 대부분 이 방법을 사용해서 적용할 수 없었던 게 아쉬웠다. 이번에 CSS를 배우면서 적용해 보려고 한다!

 

* ctrl + O 키를 누르면 사용중인 브라우저에서 내 컴퓨터의 파일을 불러올 수 있다.

 

1. HTML과 CSS를 연결하는 방법 : style

style : HTML의 태그/속성이고 이제부터 CSS 문법이 사용된다는 것을 알려준다.

1) style 속성

: HTML의 문법에서 style 이라는 '속성'이 있다.

이때 안쪽의 color:skyblue  부분은 CSS 문법이고, 나머지는 HTML 문법이다.

    <h2 style="color:skyblue">Dobby is free!</h2>
    <h2 style="color:skyblue">Dobby is free!</h2>
    <h2 style="color:skyblue">Dobby is free!</h2>

2) style 태그

: HTML의 태그 중 style 태그가 있다. 

이 태그에 둘러싸인 부분에서 CSS 문법이 사용된다는 것을 알려주는 역할을 한다.

장점1: 1) 과 똑같은 결과물이 나오지만, <style> 태그는 특정 태그가 반복될 때 태그별로 다른 서식을 적용시킬 수 있다. 태그가 많을 때 효율적이다.

장점2: <style> 태그는 <head> 태그 안에서 본문의 부연설명으로 쓰인다. 코드상 디자인과 정보 기능을 더 잘 분리시켜서 보여줄 수 있다.

<html>
  <head>
    <style>
      h2 {color:skyblue}
    </style>
  </head>
  <body>
    <h2>Dobby is free!</h2>
    <h2>Dobby is free!</h2>
    <h2>Dobby is free!</h2>
  </body>
</html>

 

2. CSS의 문법 (1) : Selector(선택자) 와 Declaration(선언)

ex) 

    <style>
      h2 {
          color:skyblue;
          text-decoration:underline
          }
    </style>

h2 는 Selector(선택자)이고 디자인 설정을 받을 개체이다.

{  } 안의 부분은 Declaration(선언)이고 Selector에 적용될 디자인 설정이다.

color , text-decoration 부분은 property(속성)이며 Declaration 안의 구체적인 요소들을 의미한다.

skyblue , underline  부분은 value(속성값)이며 property에 할당되는 값이다.

: 은 property와 value를 구분한다.

; 은 각각의 declaration을 구분한다. (declaration이 하나이면 안 써도 된다)

 

그런데 태그 단위로 선언을 하고 싶지 않을 수도 있다.

ex) 여러 <li> 태그 중 하나만 다른 색으로 표시하고 싶을 때

=> 다른 종류의 Selector를 사용하면 된다.

 

사실 Selector에는 세 종류가 있다.

  • Tag Selector : 태그 단위로 선언할 때
  • ID Selector
  • Class Selector

1) ID Selector

: <style> 태그 안에서 ID를 정의한 뒤 따로 다른 선언을 하고 싶은 개체에 해당 ID를 입력하면 된다.

    <style>
      #ping {
        color:#228B22 ; font-size: 30px
      }

    </style>

    <h2 id="ping">Dobby is free!</h2>

 

 # 뒤에는 ID 개체의 이름을 원하는 대로 정해서 입력하고, {  } 안에 디자인 요소를 지정해 준다.

-> 해당 ID Selector를 사용하고 싶으면 해당 개체 속성에 id="Selector 이름"  이런 식으로 지정한다. 

<html>
  <head>
    <style>
      #ping {
        color:#228B22 ; font-size: 30px
      }
      #dobby {
        background-color:LemonChiffon ; font-weight:bold
      }
    </style>
  </head>
  <body>
    <h1 id="ping">CSS</h1>
    <h1>CSS</h1>
      <h2>Dobby is free!</h2>
      <h2 id="dobby">Dobby is free!</h2>
  </body>
</html>

 

2) Class Selector

: <style> 태그 안에서 Class를 정의한 뒤 따로 다른 선언을 하고 싶은 개체에 해당 Class를 입력하면 된다.

 

ID Selector 와의 차이점이 무엇인가?

적용 방법은 거의 비슷하다. 다만 의미에 차이가 있다.

-Class : 여러 학생들을 구분할 때 '반'의 개념. 여러 개체를 '그룹화', '묶어서' 구분할 때 사용

-ID : 학생들 하나하나가 갖는 '고유한' 번호. 고유한 하나의 개체가 하나의 ID를 가짐.

=> Class Selector는 여러 번 사용 가능, ID Selector는 한 번만 사용 가능.

 

또한 class selector는 .dobby  이렇게 class 선언하기 전 . 을 찍는다.

<-> id selector는 #을 붙인다.

<html>
  <head>
    <style>
      #pping {
        color:#228B22 ; font-size: 30px
      }
      .dobby {
        background-color:LemonChiffon ; font-weight:bold
      }
    </style>
  </head>
  <body>
    <h1 id="pping">CSS</h1>
    <h1>CSS</h1>
      <h2>Dobby is free!</h2>
      <h2 class="dobby">Dobby is free!</h2>
      <h2>Dobby is free!</h2>
      <h2 class= "dobby">Dobby is free!</h2>
      <h2>Dobby is free!</h2>
      <h2 class= "dobby">Dobby is free!</h2>
        <h3>welcome</h3>
        <h3>welcome</h3>
  </body>
</html>

+) CSS에는 다양한 종류의 색깔이 있다.

Colors Tutorial (w3schools.com) 여기서 색깔 이름을 볼 수 있다.

 

3. CSS의 문법 (2) : 부모-자식 선택자

ex) <ol>, <ul>, <li> 태그의 경우, <ol>과 <ul> 태그는 <li> 태그를 포함한다.

즉 태그간의 포함관계가 있을 때, 특정 부분의 스타일을 지정하려면 부모-자식 관계를 고려해야 한다.

부모-자식 관계를 고려해서 Style 지정할 수 있는 여러 가지 경우:

 

경우1) 특정 태그 안에 포함되는 다른 태그의 디자인 지정할 때

<html>
  <head>
    <style>
      ol li {
        border-style : solid ; border-color : Salmon ;
        border-radius : 6px ; border-width: 1px
      }
    </style>
  </head>
  <body>
    <ol>
      <li>Window</li>
      <li>Mac OS</li>
      <li>Linux</li>
    </ol>
    <ul>
      <li>iPad</li>
        <ol>
          <li>iPad Air
            <ol>
              <li>iPad Air 3</li>
              <li>iPad Air 4</li>
            </ol>
          </li>
          <li>iPad Pro</li>
        </ol>
      <li>Galaxy Tabs</li>
      <li>Others</li>
    </ul>
  </body>
</html>

=> ol 태그 안에 포함된 li 태그의 경우라면 모두 해당 border 서식이 적용되었다.

 

경우2) 특정 태그의 바로 안에 포함되는 태그한테만 디자인 적용할 때

(아까는 A태그 안에 포함된 B태그라면 무조건 위의 디자인을 적용하는 경우였고, 

지금은 A태그 바로 안에 B태그가 포함된 경우에만 위의 디자인 서식을 적용하는 경우이다.)

cf) 아까 : A태그 안에 C태그, 그 안에 B태그 포함되면 => 적용됨

    지금 : A태그 안에 C태그, 그 안에 B태그 포함되면 => 적용 안 됨

** 만약 같은 종류의 태그인데 한쪽 태그에만 디자인을 적용하고 싶다면, id나 class Selector로 구분시켜 준다.

    <style>
      #tablet li {
        border-style : solid ; border-color : Salmon ;
        border-radius : 6px ; border-width: 1px
      }
    </style>

=> iPad Air 바로 아래의 <ol> 태그에만 id="tablet" 으로 ID Selector를 입력하였고, 이에 따라 해당 <ol> 태그 안에 속한 <li> 태그의 내용에만 디자인 서식이 적용되었다.

 

경우3) 여러 개의 태그에 같은 서식을 적용할 때

* 여러 태그가 포함관계에 있지 않아도 적용된다.

* A태그가 B태그를 포함하고 있는데 A태그에 서식이 적용되면 당연히 B태그에도 서식이 적용된다.

    <style>
       ul, ol {
        border-style : solid ; border-color : ForestGreen ;
        border-radius : 6px ; border-width: 3px
      }
    </style>

=> <ul> 태그와 <ol> 태그 모두 서식이 적용되었고, 둘 다 <li> 태그를 포함하고 있으므로 그 안의 <li>태그에도 개별적으로 서식이 적용되었다.

지금까지 상위 태그에만 적용한 속성이 하위 태그에도 적용된 것은 "상속" 이라는 개념 때문이다.

 

상속(Inheritance)

: 상위 태그(부모 태그) 에서 적용된 속성은 별다른 지시 없이도 하위 태그(자식 태그)에도 그대로 적용된다.

 

 

 

'front-side > CSS' 카테고리의 다른 글

6. 레이아웃 추가(심화)내용  (0) 2021.04.05
5. brackets ~ 레이아웃 기초 내용  (0) 2021.04.02
4. 타이포그래피-font ~ 조화  (0) 2021.04.01
3. 선택자 fin ~ 타이포그래피  (0) 2021.03.30
2. 선택자  (0) 2021.03.29

+ Recent posts