본문 바로가기

[부트캠프] IT 코딩 부트캠프 후기/[Let's TIL🚴‍♀️] CodingON

[CSS] CSS 기초 튼튼 (작성법, 선택자, 우선순위, 속성까지)

 

css 란?

문장의 "형용사" 같은 것이다.

 

cascading style sheet

= 웹페이지를 디자인하기 위해 사용 (계층구조, 연속적)

 

 

본격적으로 CSS를 다뤄본다.

 

 

1. CSS 참조방식

총 3가지가 있다.

 

1) 외부스타일 시트

2) 내부스타일 시트

3) HTML 태그 내의 스타일 지정 (인라인)

 

 

1) 외부스타일 시트 

01) .css확장자를 가진 스타일 시트 파일을 생성

02) HTML 문서에 연결하여 사용  (호출하여 사용)

 

2) 내부스타일 시트

: HTML 문서 내에 <head> 태그내부에 <style>태그를 이용해 CSS를 정의하는 방식

<html>
<head>
<style> </style>
</head>
</html>

 

3) HTML 태그 내의 스타일 지정

: HTML 태그 안에 style 속성을 이용해 정의한다.

이때 장점은 코드가 직관적이다.

 

Q. 내장 방식에서 <style> 태그는 <head>에 사용한다. 그 이유는?

HTML 문서를 읽을 때, 위에서부터 하나씩 실행하게 되기 때문에 
head에 두어서 먼저 적용될 수 있도록 하는 것이다. 

 


 

2. CSS 작성법

 

p {color : red; padding: 5px;}
선택자 {프로퍼티: 값;}

= 선택자의 프로퍼티를 값으로 변경하겠다는 것! (이때 p가 선택자이자 태그이다)

해석하면 p태그 선택자 안의 color를 red라는 값으로 변경하고, 내부여백은 5픽셀을 주라는 의미이다.

 

 

3. CSS - 많이 쓰이는 속성

 

- color, background-color

- font-size, font-weight, font-family, font-style 

- width, height

- border

- margin, padding

 

태그를 외우지 않더라도 이해하는 건 필수


 

HARD모드

 

4. CSS 선택자 - 단일 선택자

 

- 전체 선택자 (*)

 : 모든 요소를 선택한다. 보통 폰트를 지정할 때 사용한다. (통일하고자 할 때)

        * { font-family: Georgia, cursive;}
     /* font 글씨체를 사용할 것, 대안할 것을 적은 것이다. */
 

 

- 태그 선택자

 : 태그 이름 그대로 사용 ex. color

 

 

-  class 선택자

 : class는 중복이 가능하다. 중첩 사용도 가능하다.

 

만드는 방법

.orange { color : red;}

사용법 : body태그에서
<li class="orange">오린지</li>

 

중첩사용

    <h1 class="deco">h1</h1>
    <h2 class="red deco">h2</h2>
 

= 중첩으로 사용할 시에는 띄어쓰기를 통해 사용한다.

 

 

- ID 선택자

 : 고유값이므로 중복적으로 사용 X

 

만드는 방법

 #orange{ color: red;}

사용법 : body태그에서
<li id="orange">오린지</li>

 

5. CSS선택자 - 복합선택자

 

- 하위 선택자 : 후손 선택자 (자식 모두선택)

 

사용법 : 선택자 띄고 선택자

div .orange {color : red;}

= div아래에 있는 모든 class(오렌지)를 선택해서 color를 빨간색으로

 

- 자식 선택자 

 

사용법 :  > 사용

바로 밑에 있는 것만 선택

            #div2>.apple { text-decoration: underline;}
            /* div2 아래에 자식태그 apple 아래에 언더라인 */

 

- 형제 선택자

 

1) 인접형제선택자는 다음 형제 중 하나

+ 사용

 

2) 일반형제선택자는 다음 형제 모두 선택

~ 사용

.apple+p { background-color: pink;}
            /* 인접형제선택자는 +  */
            /* .apple을 먼저 찾고 그 다음에 'p 태그'를 찾고 하나만 선택 */
         
  .b + span { color :red;}
            /* 인접형제 선택자는 바로 다음 것 '하나'만 선택한다. */
           
 .b ~ span { color :aqua;}
            /* 일반형제 선택자는 내 뒤(b class 다음)에 존재하는 '모든' 형제에 적용한다. */
 

 

Q. 두 개가 같이 있는 경우

.b+span { color :red;}
            /* 인접형제 선택자는 바로 다음 것 '하나'만 선택한다. */
 .b ~ span { color :aqua;}

 

= 코드는 위에서 아래로 읽으므로 먼저 red가 적용되었다가, 최종적으로 보이는 것은 aqua가 된다.

 

- 가상 선택자

: 가상의 상황에 맞춰서 선택

 

E::hover

      div:hover {cursor: pointer;}
마우스를 올리는 가상의 상황에서 커서가 포인터로
 
 

E::active

            div:hover {cursor: pointer; background-color: aqua;}
            /* hover 마우스가 올라갔을 때  */
            a { color:black;}
            /* a:active {color: brown;}
            active는 활성화로, 보통 클릭 했을 때를 의미하게 된다
 
 

E::focus

 

            a:focus {color :aquamarine;} */
            /* 키보드가 focus로 맞춰졌을 때 ex. 인풋이라면 입력하려는 상태 */
            p:active {color: brown;}
            input:focus {background-color :aquamarine;}
 

E::link & E::visited 

            /* link와 visited 는 클릭하기 전/후 */
            a:link {color: rgb(97, 70, 164);}
            a:visited {color: rgb(20, 122, 27
 
 
 

body와 함께 쓰면 이렇게 

    <div></div>
    <a href="http://naver.com">naver</a>
    <a href="http://naver.com">a태그</a>
    <p>p태그</p>
    <input type="text">
 
 
 

E::first-child 

선택자가 첫번째 자식요소라면 선택한다.

        .fruits span:first-child{ color: brown;}(

    <div class="fruits">
        <span>딸기</span>
        <span>수박</span>
        <div>오렌지</div>
        <p>망고</p>
        <h3>사과</h3>
    </div>
 
 
 
 

 E::last-child 

선택자가 형제 요소 중 막내라면 선택 (이때는 혼자라도 마지막이니 선택이 된다!)

        .fruits h3:last-child{ color: brown;}
 
 

E::nth-child(n){} 

선택자가 형제요소 중 (n)째라면 선택한다.

        .fruits *:nth-child(2){ color: brown;}
 
 

E::not(XYZ){} 

선택자 XYZ가 아닌 요소를 선택한다.

        .fruits *:not(span){ color: rgb(34, 83, 206);}
 

 
 

6. CSS 우선순위

 

여러 선택자가 겹쳐져 실행되는 경우 우선적인 순서가 있다.

!important > 인라인 스타일 > 아이디 선택자 > 클래스/속성/가상 선택자/ 태그 선택자 / 전체 선택자
 
 
 
 

7. CSS 복잡한 속성

 

1)  position 

- static : 정적 위치 지정 방식 (기본값-고정위치)

- relative : 상대 위치 지정방식 (정적 위치-static기준-로부터 상대적으로 이동되어 지정)

- absolute : 절대 위치 지정방식 (가장 가까운 부모 혹은 조상 중, relative 기준으로 지정)

- fixed : (화면 기준) 원하는 곳에 위치 고정 (창이 움직여도 위치가 그대로)

- z-index : 축을 기준으로 레이어 쌓기 (값은 무엇이든 상관 x, 초기값은 1)

     모든 포지션에 사용하는 게 아닌, relative 와 absolute에 사용

 

Q.  z-index는 부모가 기준이므로 자식태그에 100을 줘도 부모가 1이라면 z-index는 1이다!

 

        #c1 {background-color: red;}
        #c2 {background-color: rgb(49, 165, 94); left:50px; z-index: 1;}
        #c3 {background-color: rgb(17, 56, 139); left:100px; z-index: 10;}
        #c4 {background-color: rgb(31, 179, 169); left:150px; z-index: 7;}
        #c5 {background-color: rgb(137, 71, 108); left:200px; z-index: 4;}
 
 

2) transform

- skew : 기울기 

transform:skewX(10deg);  transform:skewY(10deg);  transform:skew(10deg,10deg); 
 

-  rotate : 회전

transform:rotateX(10deg);  ==x 축이 돈다.
XY 따로 지정하지 않으면 그냥 돈다.
 
 

- translate: 이동 (x,y,z)

 transform:translateX(-10deg)  
 

- scale : 확대

transform:scale(2,3)
 
 

튼튼한 기초 위에 건강한 정신이...