본문 바로가기
HTML & CSS

노마드 코더 코코아톡 클론코딩 복습용 정리(2)

by 디디 ( DD ) 2022. 12. 13.

 

#3 CSS를 배워보자.

 

 CSS를 HTML에 추가하는 방법은 1) 같은 파일에 두는 방식과 2) 다른 파일로 분리하는 방식이 있다.

분리하는 방식을 추천하는데, 그 이유는 만들어진 CSS 파일을 link하면 다른 HTML페이지에서도 사용할 수 있기 때문이다. 물론 보기도 좋다.

 

1) head 안에 style 태그 작성.

2) CSS 파일을 생성하여 link 하기.

 

 

☞ CSS 코드 작성하는 법

예시

: selector(가리키는 대상)를 쓰고, 중괄호{ }를 사용하여 속성을 작성.

 

※ 브라우저는 CSS를 위에서부터 읽는다. (CSS의 cascading한 성질)

    즉, 맨 마지막에 작성된 코드가 최종적으로 보이게 됨.

 

 

▶ box

1) block : box, p 등은 그 옆에 아무것도 오지 않는다. 한 줄에 하나만! 

                그리고 높이와 너비가 있다.

2) inline : 반면에 span, link, image 등은 옆에 다른 요소들이 올 수 있으며,

                 높이와 너비가 없다.

참고) 대부분 block이므로 inline인 것을 기억하는 것이 훨씬 편하다.

 

→ display 속성을 이용해 block을 inline으로, inline을 block으로 바꿀 수도 있다.

▶ box의 특징 : 브라우저가 기본적으로 부여한 style 속성이 있다.

- margin : box의 border(경계)의 바깥에 있는 공간.

         style 태그 안의 body에 margin: 0; 을 넣어주면 이 공간을 없앨 수 있다. (margin만 쓰면 사방에 모두 적용됨)

         margin-top, margin-bottom, margin-left, margin-right 을 이용하여 사방의 공간 크기를 각각 조정할 수도 있다.

         아니면 간단하게 margin: 20px 15px; 이런 식으로 써서 위아래 20px, 왼쪽 오른쪽 15px을 적용할 수도 있다. 

         또는 margin: 위쪽 오른쪽 아래쪽 왼쪽; 이렇게도 사용 가능. 

[ ※ Collapsing margins : 다수 요소의 위나 아래의 경계가 겹치면, 하나의 margin으로 취급되는 현상 ]

 

- padding : box의 border(경계)의 안쪽에 있는 공간. margin과 반대 개념.

style을 지정할 때 id를 쓰려면, 앞에 #을 써주면 된다. ( #idname )

 

- border : box의 border(경계). 다른 종류의 border는 예쁘지 않아서 거의 한 종류의 border만 쓴다.

*를 쓰면 모든 요소에 적용하는 것이 가능하다. html body inline span ... 

 

 

 

class : id처럼 특정 요소를 가리킬 수 있으면서 용어를 겹쳐 쓸 수 있는 방법.( .classname 이렇게 쓰면 됨)

(참고) <span class="tomato banana apple"> 이런 식으로 한 번에 여러 개의 class를 가질 수도 있다. 

 


 

잠깐! display: inline-block은 반응형 디자인을 지원하지 않는다.

그러므로 사용하게 되는 게 바로 flex.

 

< flexbox 사용 규칙 >

1. 자식 엘리먼트에는 어떤 것도 적지 말아야 한다. 부모 엘리먼트에만 명시해야 함! 

2. 그런 다음 justify-content를 이용해 주축 위치를, align-items을 이용해 교차축 위치를 조정하면 된다.

    참고) 주축(main axis, → ), 교차축(cross axis, ↓ )

         vh는 viewport(screen) heigh를 말하는데, height: 100vh; 이렇게 적어 넣으면 화면 높이의 100%를 의미한다.

 

3. 주축과 교차축의 디폴트, 즉 방향을 바꾸려면 flex-direction을 수정하면 된다. (row 수평 / column수직)

 

 

- div 안에 글자를 넣으면 div가 부모 엘리먼트가 되어 자식 엘리먼트인 글자를 조정할 수 있게 된다.

 

- flex-wrap : nowrap 모든 요소를 같은 줄에 배치, wrap 명시된 사이즈를 고수하며 한 줄에 들어가는 만큼 최대한 집어넣고 그게 되지 않으면 다음 줄로 옮겨 배치.

 

- flex-direction : reverse를 쓰면 상자의 순서가 바뀌며, flex-wrap : wrap-reverse도 가능하다.

 

 

 

 

position 속성 : 레이아웃보다는 위치를 아주 조금 옮기고 싶을 때 사용.

 

- position : fixed; 레이아웃 상에서 그려진 위치에 고정됨. 보이는 화면의 고정된 위치에 계속 위치.

  → 레이어가 나뉘게 되면 서로 간섭하지 않게 된다.

  참고) opacity 투명도

 

- position : static; 레이아웃이 박스를 처음 위치하는 곳에 두는 것. 디폴트로 적용되는 것임.

 

- position : relative; top, bottom, left, right 속성을 사용할 수 있게 됨. 대상의 위치를 아주 조금씩 조정할 때 유용. 

 

- position : absolute; 마찬가지로 top, bottom, left, right를 쓰고 싶을 때 사용할 수 있는데,

                                      가장 가까운 relative 부모가 기준임. relative가 없는 경우엔 body가 기준. 

 

 

 

 

pseudo selectors : 좀 더 세부적으로 엘리먼트를 선택해 주는 것

 

→ 이 방식이 class나 id를 만드는 것보다 훨씬 좋은 방법임.

 

 

- p 안에 있는 span을 가리키려면?

  p span {

  }

  /// 원하는 만큼 부모를 사용할 수 있다.

 

 

- 바로 밑 자식만 가리키려면?

  div > span {

  }

 

 

- 형제 관계는? 예를 들어 같은 부모 밑인 p 다음에 오는 span을 가리키려면?

  p + span {

  }

 

 

- 위의 형제 상황에서 span이 p의 바로 뒤에 오지 않는 경우엔?

  p ~ span {

  }

 

 

- required 되는 input 태그 만을 가리킬 수도 있다. (참고) required 가 아닌 건 optional

 

( + ) 실제로 존재하는 element는 아니지만 스타일링을 할 수 있게 해주는 것들.

https://developer.mozilla.org/en-US/docs/Web/CSS/::placeholder

::placeholder
::selection
::first-letter

 

 

 

attribute selector : attribute를 통해 어떤 것이든 선택할 수 있게 해줌.

예시 1
예시 2

 

 

 

● 개발자 도구에서 확인할 수 있는 가장 중요한 selector은 state.

- active : 버튼을 누르고 있을 때(클릭 상태를 유지) 파란 배경색을 가지게 됨.

               button:active{} 를 작성하여 배경색을 바꿀 수 있음.

- hover : 마우스가 대상 위에 있을 때 

- focus : 키보드로 선택되었을 때

- visited : 링크에 적용.

                a:visited{

                   color: tomato;

                }

                위와 같이 작성하면 클릭하여 사이트를 방문했을 때 파란 글씨가 빨간 글씨로 바뀜.

 

- focus-within은 좀 다른데, focused인 자식을 가진 부모 엘리먼트에 적용된다.

 

 

→ 적용 순서는 역시나 위에서 아래로.

 

→ state를 다른 엘리먼트와 연계해서 사용할 수도 있음.

form이 hover상태가 되었을 때 input의 배경색이 sienna가 되도록
form이 hover가 된 상태에서 input이 focused이면 바꾸도록 할 수도 있음.

 

 



◈ 컬러와 변수 ◈

 

1. hexadecimal colcr(16진수 컬러) : 컬러 코드

https://developer.mozilla.org/ko/docs/Web/CSS/color_value

(ex) #000000

 

2. RGB : red, green, blue

(ex) rgb(252, 206, 0)

( + ) rgba 에서 a는 알파를 말하는 것. 즉, rgb + 투명도.

       (ex) rgba(252, 206, 0, 0.5)

 

 

:root{
  --main-color: #fcce00;
}

위와 같이 메인 컬러를 document의 root에 저장하면,

color: var(--main-color);

이렇게 색을 변수로 만들어 사용할 수 있다. 색 말고 다른 것도 가능함.

 

 

 

 

 

'HTML & CSS' 카테고리의 다른 글

HTML의 메타데이터  (1) 2023.08.22
노마드 코더 코코아톡 클론코딩 복습용 정리(1)  (0) 2022.11.14

댓글