지 구 여 행

노마드코더/코코아톡 클론코딩/2. Learning CSS 본문

필기노트/노마드코더

노마드코더/코코아톡 클론코딩/2. Learning CSS

COSMOSUNION 2022. 7. 1. 14:10

노마드코더 - 코코아톡 클론코딩 https://nomadcoders.co/kokoa-clone/lobby

 

코코아톡 클론 코딩 – 노마드 코더 Nomad Coders

HTML, CSS, Github

nomadcoders.co

 

 

 


Settings

 

 

How to add CSS to HTML

1. Inline CSS : 같은 HTML파일에 HTML코드와 CSS코드 위치 → 항상 <head>안에 <style>태그 위치

 

2. External CSS : HTML파일로부터 독립된 CSS파일 생성 → 다른 CSS파일을 불러와서 사용 가능 (선호)

    (1) 폴더에 css 파일 생성(예:styles.css)

    (2) <link>태그를 이용하여 CSS파일 연결

        * href (hypertext reference) : CSS 파일명 + css (확장자)

        * rel : 해당 CSS파일과 HTML과의 관계 설명 - (as) stylesheet

 Importatnt 
Q. Inline CSS와 External CSS가 같은 대상(선택자)을 가르킬 경우, 실제로 적용되는 효과는 어떤 것일까?
A. CSS는 Cascading 정의 그대로 위에서부터 아래로 차례대로 적용되기 때문에 가장 아래 위치한 Inline CSS 코드가 적용.
    (if External CSS(<link>태그)가 가장 아래 위치할 경우 External CSS 코드가 적용

 

 

 

 


CSS

 

"CSS가 하는 일은 HTML 태그를 가르켜서(point) 꾸며주는 일"
"근육"

 

 

Structure

구조 예제

* 속성(property)에 띄어쓰기/밑줄(_)/슬래쉬(/) 사용 불가

 

 

 

Boxes

  inline block inline ↔ block 전환
정의 같은 열에 다른 요소와
함께 위치 가능
줄 전체를 차지;
다른 요소와 함께 위치 불가능
(대부분의 boxes)
외부 배치 : block
내부 속성 : inline

(width/height/margin/padding
속성 변경 가능)
해당 태그 <span>
<a>
<image>
<code>등 해당
<div>
<p>
<address>
<blockquote>
<header>등 해당
해당 element 속성에 
display: inline; 추가시 inline으로 변경
display: block; 추가시 block으로 변경
특징 - 높이(height)와 너비(width)
  변경 불가능
  (=위/아래 margin값 없음)
  
padding은 사방향 변경가능
 - 높이(height)와 너비(width)
   변경 가능
- margin/padding/border 설정 가능
- 변경된 속성을 따름

* 대부분 block element기 때문에 inline element가 무엇인지 기억하는것이 편리

 Importatnt 

  Before change1 change2
코드
의미 <div> 태그의 display 속성이 갖는
default 값 = block
웹페이지에서 표현 X
(기본적으로 inline요소들은
너비/높이를 가질수 없기 때문)
inline요소의 속성을 갖는 동시에
block처럼 너비/높이/margin등
속성 값 가질 수 있음
* inline-block : 반응형 디자인(Responsive Desgin)을 지원하지 않는 단점 존재
                        ∴ 화면 크기에 따라 레이아웃이 달라지기 때문에 잘 쓰이지 않는다 → flexbox로 해결 가능

 

 

 

Flexbox : Rules

행과 열의 형태로 항목 무리를 배치하는 일차원 레이아웃 메소드;

부족한 공간에 맞추기 위해 축소되거나 여분의 공간을 채우기 위해 변형됨 → 반응형 디자인 지원

 Importatnt 

Rule 1. 움직일 박스(<div>)의 부모 요소(element; <body>)를 flexbox로 변경 → <body> becomes a flex container
            * <div>에는 display관련하여 아무것도 적지 않는다.


Rule 2.  Flex Container은 2개의 축을 갖는다
             * 주축(main-axis)의 default값은 수평값 → justify-content 속성은 주축에 적용
             * 교차축(cross-axis)의 default값은 수직값 → align-element 속성은 교차축에 적용
             * 주축/교차축의 default값은 변경 가능. 즉, 각각 수평/수직으로 변경될 수 있다.
Flexbox @MDN

 

■ flex-direction : column

   해당 속성값(default값:row)을 column으로 변경 → 기준 축 방향이 반대로 변경된다. 

    * justify-content는 주축 → 교차축 기준으로 변경되어 적용
    * align-element는 교차축 → 주축 기준으로 변경되어 적용

 

 

 

Box Model

Layout and the containing block @MDN

 

■ content : 컨텐츠가 표시되는 영역

■ padding : content와 border 사이의 공간

■ border : 테두리

■ margin : border밖 여백; 다른 요소와 해당 박스 사이의 공백역할

 Importatnt 

margin 표현방법

 * value값이 1개일 경우 모든 방향 적용
  (1) 하나씩 방향 입력 (2) value값 2개
(1st value: 위/아래 적용
2nd value: 왼/오른쪽 적용)
(3) value값 4개
(top→right→bottom→left
시계 방향 순서)
코드
* margin value 값들 사이에 쉼표(,) 사용 불가

마진 겹침 (Collapsing Margins)
"경계가 닿아서 margin이 같아졌나보구나." 정도로만 이해해도 ok

상하 마진값이 어떤 상황에서 사라지는 현상을 의미
* 좌우는 발생하지 x

1. 인접 형제 박스 간 상하 마진이 겹칠 때  발생
2. 빈 요소의 상하 마진이 겹칠 때 발생
    (1) 상하단 마진값을 비교해 더 큰 값으로 상쇄
    (2) 상하단 마진값이 같을 경우 중복값 상쇄

* Kimaramy velog - CSS 마진 상쇄(Margin-collapsing) 원리 완벽 이해 :
https://velog.io/@raram2/CSS-마진-상쇄Margin-collapsing-원리-완벽-이해

 

 

■ 선택자(Selector) : 특정 태그/class/id를 '선택' 또는 '지칭'

    - 우선순위 : id Selector(#id) > class Selector(.class) > tag Selector(tagname)

    - id Selector :  반드시 단 한 번만 등장

    - class Selector : 공통된 속성을 갖는 태그들끼리 그룹핑

 Importatnt 

1. 여러개의 id 선택자들을 선택하여 속성을 지정하거나, 여러개의 태그를 class로 묶어 속성을 지정


2. 한 태그 안에 여러개의 클래스를 명시 가능 (쉼표(,)없이 띄어쓰기로 구분)

 

 

■ * : 웹페이지의 모든 요소들을 선택하여 속성값 지정 가능

 Importatnt 

Q. 모든 요소에 같은 속성값을 설정 후, 특정 <span>만 다른 속성값 어떻게 적용할까?
A. CSS는 'Cascading' 성격을 갖기 때문에 위에서 아래로 적용되므로 *보다 아래 위치에서 <span>을 선택/설정

 

 

 

Attirbutes

■ position : 박스의 위치 세부 조정

                   *fixed : 웹페이지의 화면 크기와 상관없이 동일한 크기/위치로 고정

                   *static : 레이아웃이 박스를 처음 위치로 고정

                   *relative : 속성값을 relative로 지정할 경우, 자동적으로 top,bottom,left,right속성을 사용 가능

                                   →  첫 위치 기준점은 박스의 처음 위치(아주 세부적인 위치 조정에 이용)

                   *absolute : 속성값을 absolute로 지정할 경우, 부모 박스 기준으로 top,bottom, left, right속성이 적용됨

                                   →  가장 가까운 relative 부모를 기준으로 이동 (만약 존재하지 않으면 body 기준)

 

■ top / bottom / left / right : 해당 속성값을 지정할 경우, 다른 요소들과 자동적으로 다른 layer에 존재하게 됨

 

 

 

Pseudo Selectors

세부적으로 요소를 선택하는 Selectors  

예제 1. 첫번째 / 마지막 / n번째 위치한 자식태그만을 지정하고 싶을 때 :

 

예제 2. Direct-자식태그 / 특정 태그 바로 다음에 위치하는 태그 / 특정 태그 등장후 (바로x) 위치하는 태그를 지정할 때 : 

예제 3. 특정 속성의 유무에 따라 지정할 경우 : 

 

 

 

Pseudo-class(States)

선택하고자 하는 HTML 요소의 특별한 '상태(state)'를 명시할 때 사용

* 콜론 하나(:)를 사용해서 표현

* 의사클래스(Pseudo-class)의 이름은 대소문자를 구분하지 못함

개발자도구>우측하단>styles

 

 

■ :active : 버튼등을 누르고 있는 상태

■ :hover : 마우스 커서가 대상 위에 있는 상태 (클릭x)

■ :focus : 키보드로 선택된 상태(예: 커서가 박스 안에 깜빡이는 상태)

■ :visited : 방문한 적이 있는 링크; <링크>태그에서만 사용가능

■ :focus-within : focused 상태인 자식태그를 가진 부모 요소의 상태를 의미

 

 

 

Pseudo Elements

HTML요소의 특정 부분만을 선택할 때 사용

* 콜론 두개(::)를 사용해서 표현

■ ::placeholder : <input> 또는 <textarea>의 placeholderd에 스타일을 적용할 때 사용 (예: color)

■ ::selection : 마우스로 텍스트를 드래그한 부분(Highlighted)에 스타일을 적용할 때 사용

                      *<div>나 <form>태그는 변화x → <p>태그에서만 반응

■ ::first-letter : <p> 태그 안의 첫 번째 글자에 스타일을 적용할 때 사용

 

 

 

Combinators

서로 다른 선택자들을 나란히 입력함으로써 속성을 변경하고자 하는 특정 content에 접근 가능

예 - 홑화살괄호(>) : 부모태그의 direct-자식태그만을 지정

    - 더하기(+) : (첫번째 입력한)태그 다음에 위치한 (두번째 입력한)태그를 지정

 

 

Attribute Selector

주어진 특성 존재 여부나 그 값에 따라 요소를 선택

 

 

 

Colors & Variables

예제 1.
변수 --main-color로써 특정 컬러를 document의 root에 저장 → 변수에 저장된 컬러를 var()을 이용해 반복 사용 가능
* 변수 이름은 dash 2개+변수명으로 입력(변수명은 띄어쓰기 불가; 대신 하이픈(-)으로 표현)
 
예제 2.
변수 --default-border로써 특정 border 스타일을 root에 저장 → 변수에 저장된 타일을 var()을 이용해 반복 사용 가능

* rgb : red,green,blue

* rgba : + alpha(means transparency);

           예) 1=100%, 0.5=50%, 0=0%

 

 

 

 

 

출처 :
1. 노마드코더 / 코코아톡 클론코딩 : https://nomadcoders.co/kokoa-clone
2. MDN / Web Docs  : https://developer.mozilla.org/en-US/
3. Kimaramy velog / CSS 마진 상쇄(Margin-collapsing) 원리 완벽 이해
    : https://velog.io/@raram2/CSS-마진-상쇄Margin-collapsing-원리-완벽-이해
4. TCP School / 의사클래스, 의사요소 : http://www.tcpschool.com/

 

Comments