개발냥발/FE (FrontEnd)👩🏻‍💻

CSS 익히기❗

승이버섯 2022. 5. 9. 11:13

 

5. CSS 이해하기

5-1. CSS?

Cascading Style Sheet. HTML을 꾸며주는 표현용 언어.

마크업 언어(HTML)이 몸의 구조(, 근육)라면, CSS는 옷과 신발과 같이 외적으로 꾸며주는 역할! , HTML이 문서의 정보, 구조를 설계한다면, CSS는 문서를 보기 좋게 디자인!

 

5-2. CSS 문법과 적용

CSS 구문

(ex) h1 { color: yellow; font-size:2em; }

선택자(selector) - "h1"

속성(property) - "color"

(value) - "yellow"

선언(declaration) - "color: yellow", "font-size: 2em"

선언부(declaration block) - "{ color: yellow; font-size:2em; }"

규칙(rule set) - "h1 { color: yellow; font-size:2em; }“

개행 O : 선택자와 선언부 사이, 선언과 선언 사이 / 개행 X : 속성이름과 속성값 사이.

CSS의 속성(Property)HTML의 속성(Attribute) -> 둘은 다름!

CSS 주석

/* 주석 내용 */

CSS의 적용

1) Inline : 해당 요소에 직접 스타일 속성 이용

2) Internal : 문서에 <style> 태그 사용. <style><head> 내부에 포함. 페이지가 많고 스타일 규칙 내용이 많아지면 복잡해짐.

3) External : 외부 스타일 시트 파일 이용! 외부에 스타일 규칙들을 별도로 모아놓은 파일을 만들어 넣는 방식. 이게 CSS 파일! 파일 관리가 편하고 용량이 작아서 주로 사용되는 방법.

(ex) <link rel="stylesheet" href="css/style.css">

: href 속성을 이용해 CSS 파일의 경로를 적고, rel 속성은 연결되는 파일이 문서와 어떤 관계인지를 명시함.

4) Import : 스타일 시트 내에서 다른 스타일 시트 파일을 불러옴.

 

5-3. 선택자

요소(태그) 선택자 : 선택자 부분에 태그 이름이 들어감. ( h1 { color: yellow; } )

그룹화 : 선택자는 쉼표를 이용해 그룹화 가능. (h1, h2, h3, h4, h5, h6 { color: yellow; }, * { color: yellow; }) * 기호는 성능에 좋지 않음.

선택자와 선언이 동시에 그룹화될 수 있음.

class 선택자 : 요소에 구애받지 않고 스타일 규칙 적용 가능한 가장 일반적인 방법. class 선택자를 CSS에서 쓸때는 맨 앞에 .를 찍어줘야 함. class 선택자는 꼭 하나의 값만 가질 수 있는 건 X. 공백으로 구분하여 여러개의 class 값을 넣을 수 있음.

id 선택자 : .말고 #기호를 맨 앞에 써줘야 함.

 

class 선택자와의 차이점

1) .기호가 아닌 #기호 사용

2) 태그의 class 속성이 아닌 id 속성을 참조

3) 문서 내에 유일한 요소에 사용

4) 구체성

가장 큰 차이점은 class와 달리 id는 문서 내에서 유일해야 한다는 것!

클래스 선택자 : 여러 요소에 같은 클래스를 넣고 같은 규칙을 적용 가능! (장점)

but, id 속성값은 문서 내에 유일하게 사용이 되어야 함.

결국, id 선택자로 규칙을 적용할 수 있는 요소는 단 하나뿐!!!

그리고 마지막으로 구체성의 값이 다름!

 

선택자는 종류에 상관없이 여러 가지 선택자들을 조합하여 사용 가능 (요소와 class, 다중 클래스, idclass 조합)

속성 선택자는, []를 이용하여 []안에 속성 이름을 넣거나, []안에 속성 이름과 속성값을 다 넣거나, 부분 속성값으로 선택할 수 있다.

부분 속성값

[class~="bar"] : class 속성의 값이 공백으로 구분한 "bar" 단어가 포함되는 요소 선택

[class^="bar"] : class 속성의 값이 "bar"로 시작하는 요소 선택

[class$="bar"] : class 속성의 값이 "bar"로 끝나는 요소 선택

[class*="bar"] : class 속성의 값이 "bar" 문자가 포함되는 요소 선택

 

5-4. 문서 구조 관련 선택자

부모와 자식 : 부모 요소는 그 요소를 포함하는 가장 가까운 상위 요소! 그 요소의 부모 요소는 단 하나뿐. 자식 요소는 여러개 O

조상과 자손 : 부모와 자식의 관계를 포함한 확장된 관계. 조상 요소는 그 요소를 포함하는 모든 요소!

형제 : 같은 부모를 가지고 있는 요소들은 서로 형제 관계!

자손 선택자 : 선택자 사이에 아무 기호없이 공백으로 구분

자식 선택자 : 선택자 사이에 >를 넣는다.

인접 형제 선택자 : 선택자 사이에 +를 넣는다.

요소들이 많이 나열되어 있더라도, 제일 우측에 있는 요소가 실제 선택되는 요소!

 

5-5. 가상 선택자

가상 클래스 선택자 : 미리 정의해놓은 상황에 적용되도록 약속된 보이지 않는 클래스. 특정 요소의 상태를 미리 추정해서 가상의 클래스로 스타일을 적용할 수 있는 선택자! 클래스 선택자처럼 동작. :기호를 써서 나타냄. 자세한 건 https://developer.mozilla.org/ko/docs/Web/CSS/Pseudo-classes 에 있음.

문서 구조와 관련된 가상 클래스 : :first-child, :last-child

앵커 요소와 관련된 가상 클래스 : :link, :visited

사용자 동작과 관련된 가상 클래스 : :focus, :hover, :active

가상 요소 : 가상 클래스와 비슷. 클래스가 아닌 요소라는 점만 다름. 가상 요소는 현재 문서 내에, HTML 코드에 존재하지 않는 구조, 즉 문서에 존재하지 않는 요소에 내용을 추가할 수 있고, 또 스타일도 부여할 수 있음. (예를 들어, 가장 자주 쓰이는 가상 요소는, 요소의 앞이나 뒤에 별도의 내용을 추가하는 것. 이때 추가되는 새 콘텐츠는 HTML 코드에 직접 추가되지 않고 브라우저 화면에만 나타남.) ::기호를 써서 나타내지만 상황에 따라 :기호를 사용하기도 함. 많이 쓰이는 가상 요소는 :before, :after, :first-line, :first-letter. 자세한 건 https://developer.mozilla.org/ko/docs/Web/CSS/Pseudo-elements

 

5-6. 구체성

선택자에는 어떤 규칙이 우선으로 적용되어야 하는지에 대해 정해진 규칙이 있음. 이걸 구체성이라고 함!

선택자를 얼마나 명시적으로, 구체적으로 선언했느냐를 수치화한 것!

4개의 숫자 값으로 이루어져 있으며, 값을 비교할 때는 좌측에 있는 값부터 비교하고, 좌측 부분의 숫자가 클수록 높은 구체성을 가짐!

 

구체성은 아래의 규칙대로 계산됨!

0, 1, 0, 0 : 선택자에 있는 모든 id 속성값

0, 0, 1, 0 : 선택자에 있는 모든 class 속성값, 기타 속성, 가상 클래스

0, 0, 0, 1 : 선택자에 있는 모든 요소, 가상 요소

전체 선택자는 0, 0, 0, 0을 가진다.

조합자는 구체성에 영향을 주지 않는다. (>, + )

인라인 스타일의 구체성 값은 1,0,0,0이고, 규칙들 중 가장 큰 구체성!!

important 키워드는 별도의 구체성 값은 없으나 모든 구체성을 무시하고 우선권을 가짐!! 속성값 뒤 한칸 띄고 !와 같이 씀.

 

5-7. 상속

부모가 가진 특성을 자식이 물려받는 개념! 어떤 스타일 규칙이 특정 요소말고도 그 자손 요소까지 적용되는 것!

구체성과 같이, 스타일 규칙들이 문서에 어떻게 적용되는지 이해하기 위한 또다른 중요한 핵심 개념!

상속 관계를 잘 활용하면 CSS의 생산성

모든 속성이 다 상속되는 것은 X. (margin, padding, background, border 등 박스 모델 속성들은 상속되지 않는다!)

상속된 속성은 아무런 구체성을 가지지 X.

 

5-8. 캐스케이딩 (Cascading : 단계적인)

스타일 규칙들이 어떠한 기준으로 요소에 적용되는지를 정한 규칙.

3가지 규칙 : 중요도와 출처, 구체성, 선언 순서!

모든 스타일은 아래의 규칙에 따라 단계적으로 적용!

1) 스타일 규칙들을 모아서 중요도가 명시적으로 선언되었는지에 따라 분류합니다.

중요도가 명시적으로 선언된 규칙들은 그렇지 않은 규칙들보다 우선합니다.

중요도가 있는 규칙들끼리는 아래 다른 규칙들을 적용받습니다.

2) 스타일 규칙들을 출처에 따라 분류합니다.

제작자 스타일 규칙이 사용자 에이전트 스타일 규칙보다 우선합니다.

3) 스타일 규칙들을 구체성에 따라 분류합니다.

구체성이 높은 규칙들이 우선합니다.

4) 스타일 규칙들을 선언 순서에 따라 분류합니다.

뒤에 선언된 규칙일수록 우선합니다.

 

5-9. 선택자 정리

https://www.w3schools.com/cssref/css_selectors.asp

 

 

 

 

 

6. CSS - 단위, 배경, 박스모델

6-1. [속성] 정의와 구문

CSS의 속성은 매우 다양하고, 지속해서 업데이트 되고 있음! https://www.w3.org/ 에서 다양한 변화를 빨리 파악하자!

 

6-2. [속성] 단위

절대 길이 : 고정된 크기 단위. px, pt

상대 길이 : 다른 요소의 크기나 폰트 크기, 브라우저(viewport) 등의 크기에 따라 상대적으로 값이 변함. %, em, rem, vw

 

6-3. [속성] 색상

컬러 키워드 사용

16진법 #RRGGBB

16진법 #RGB

RGB() (rgb(R, G, B). 0~255의 정수로 된 값)

RGBA() (A는 투명도)

 

6-4. [속성] background

background-color : defaulttransparent. 배경색깔 지정.

background-image : defaultnone. 배경으로 사용할 이미지의 경로 지정.

background-repeat : defaultrepeat. 이미지의 반복 여부와 방향 지정. 속성값으로 repeat, repeat-x, repeat-y, no-repeat이 있음.

background-position : default0% 0%. 요소에서 배경 이미지의 위치를 지정하는 속성. x, y축으로부터의 위치 지정 가능. 한쪽만 지정되면 나머지는 중앙값으로 적용됨. 속성값으로 %, px, 키워드(top, left, bottom, center)가 있음.

background-attachment : defaultscroll. 화면 스크롤에 따른 배경 이미지의 움직임 여부 지정하는 속성. 속성값으로 scroll, local, fixed가 있음.

 

6-5. [속성] boxmodel

boxmodel의 구성

content : 요소의 실제 내용을 포함하는 영역.

border : content 영역을 감싸는 테두리 선.

padding : content 영역과 테두리 사이의 여백! content 영역이 배경, 색 또는 이미지가 있을 때 패딩 영역까지 영향을 미침. 이에 따라 paddingcontent의 연장으로 볼 수도 있음.

margin : border 바깥쪽의 영역. border 영역을 다른 요소와 구별하기 위해 쓰이는 빈 영역. , 주변 요소와의 여백(간격)margin을 이용해 지정 가능.

 

6-6. [속성] border

border-width : 선의 굵기 지정. 상하좌우 선의 굵기를 다르게 표현 가능.

border-style : 선의 모양 지정.

border-color : 선의 색상 지정.

위 속성들은 공백으로 축약하여 사용할 수 있음.

 

6-7. [속성] padding

padding- top/right/bottom/left : content 영역의 위쪽/오른쪽/아래쪽/왼쪽 여백을 지정함.

padding4가지 속성을 축약해서 사용 가능! 속성의 순서는 고정됨. 위쪽을 기준으로 시계방향으로! 상하, 좌우 영역의 값이 같으면 하나로 합쳐서 적용 가능.

CSS에서는 0값에 대해선 단위 따로 X

 

6-8. [속성] margin

margin- top/right/bottom/left : border 영역의 위쪽/오른쪽/아래쪽/왼쪽 여백을 지정함.

padding과 마찬가지로 축약하여 사용 O, 상하, 좌우에 대해서 값이 같으면 하나로 합하여 사용 O.

margin에서는 수치 이외에 사용할 수 있는 'auto' 값이 있음.

margin collapse (마진 병합) : 인접한 두 개 이상의 수직 방향 박스의 마진이 하나로 합쳐지는 것. 1) 두 요소가 상하로 인접한 경우, 2) 부모 요소와 첫 번째 자식 요소 또는 마지막 자식 요소, 3) 내용이 없는 빈 요소의 경우에 발생.

마진 병합은 수직 방향으로만 이루어짐. 또한, 마진이 반드시 맞닿아야 발생하므로, 2,3번째의 경우에는 패딩과 보더가 없어야함.

 

6-9. [속성] margin & padding

두 속성 모두 여백이 필요할 때 적용하는 속성! 그래서 border의 경계가 명확하게 표시되지 않으면 어떤 속성을 쓸지 헷갈릴 수 있음.

marginpadding의 비교

%는 요소의 크기를 기준으로 상대적인 값 결정. %는 상하좌우의 방향에 관계없이 모두 요소의 width값을 기준으로 값이 결정됨.

 

6-10. [속성] width

요소의 가로 크기를 정의하는데 사용하는 속성. content 영역의 너비 지정. 속성값으로는 auto, length, percent가 있음.

인라인 레벨 요소를 제외한 모든 요소에 적용됨.

특정한 값을 지정하여 사용하면, 그 크기는 margin 영역을 제외한 모든 영역에 대해 영향을 받음.

 

6-11. [속성] height

요소의 세로 크기를 정의하는데 사용하는 속성. content 영역의 높이 지정. 속성값으로는 auto, length, percent가 있음.

특정한 값을 지정하여 사용하면, 그 크기는 margin 영역을 제외한 모든 영역에 대해 영향을 받음.

Containing Block, 즉 부모가 명시적인 높이 값을 가지고 있지 않으면, 자식의 높이를 %로 지정해줘도 적용 X.

6-12. [속성] boxmodel 정리

boxmodelcontent, padding, border, margin의 총 4가지 영역으로 나누어짐.

content 영역의 너비는 width, 높이는 height을 통해서 제어 가능.

widthheight 그리고 paddingborder을 모두 더한 것이 요소의 전체 크기가 된다

다른 요소와의 여백은 margin을 이용하여 줄 수 있으며 음수값 사용 가능.

margin은 상하 요소 사이의 병합 현상이 일어나고 이때는 큰 값을 기준으로 병합됨.

 

 

 

 

7. CSS - 폰트, 텍스트

7-1. [속성] typography

타이포그래피의 구조

모든 폰트는 em박스를 가지고 있고 위 그림과 같은 구조로 이루어져 있음.

em : 폰트의 전체 높이를 의미.

ex ( = x-height ) : 해당 폰트의 영문 소문자 x의 높이를 의미.

Baseline : 소문자 x를 기준으로 하단의 라인을 의미.

Descender : 소문자에서 baseline 아래로 쳐지는 영역을 의미. 서체에 따라 descender의 길이가 다름. ( g, j, p, q, y )

Ascender : 소문자 x의 상단 라인 위로 넘어가는 영역을 의미. ( b, d, h, l )

 

7-2. [속성] font-family

글꼴을 지정하는 속성.

상속되기 때문에 기본적으로 대표 폰트를 선언하고, 특정 폰트가 필요한 부분에서 재정의.

family-name : 사용할 폰트의 이름. ,로 구분하여 여러개 선언 가능. 먼저 선언한 순서대로 우선적. 한글일 경우 홑따옴표로 묶기.

generic-family : family-name으로 지정된 글꼴을 사용할 수 없을 경우, 브라우저가 대체할 수 있는 폰트. 맨 마지막에 선언. 키워드라서 따옴표로 안 묶는 게 원칙.

 

7-3. [속성] line-height

텍스트 라인의 높이 조정. 행간을 제어할 때 사용.

line-height로 제어되는 부분인 line-box[em 박스]+[상하단의 여백]까지를 의미.

가능하면 단위가 없는 값을 사용하는 게 좋음.

 

7-4. [속성] font-size

글꼴의 크기 지정.

absolute size : 기본값인 medium에 대한 상대적인 크기. 브라우저마다 사이즈 다름.

relative size : 부모 요소의 font-size 크기에 대해 상대적.

length : px, em, rem 등의 단위를 이용하여 고정된 크기 지정.

percent : 부모 요소의 font-size를 기준으로 백분율 계산된 값 지정.

viewport units : vw, vh 단위로 뷰포트를 기준으로, 유동적인 font-size 지정.

 

7-5. [속성] font-weight

글꼴의 크기 지정.

normal : 기본값. 400

bold : 굵게 표현. 700

bolder/lighter : 부모 요소 보다 두껍게/얇게 표현

number : 숫자가 클수록 더 두껍게 표현 (100단위)

font-weightfont-family, font-size는 서로 밀접하게 연관되어있음.

 

7-6. [속성] font-style

글꼴의 스타일 지정.

normal : 기본값.

italic : italic 스타일(=기울어짐)로 표현

oblique : oblique 스타일로 표현. oblique 텍스트의 기울기에 대한 각도 추가 지정 가능. (-90~90)

 

7-7. [속성] font-variant

글꼴의 형태를 변형하는 속성. 소문자를 (실제 대문자 사이즈보다) 작은 대문자로 변환. 한글에는 적용 X.

normal : 기본값.

small-caps : 소문자를 작은 대문자로 변형

 

7-8. [속성] font

글꼴 속성의 축약형. 속성마다 선언 순서를 지켜야하고, 반드시 꼭 넣어야하는 속성들이 있는 등 규칙이 많고 가독성이 좋지 않아서 실무에서 선호

속성값 : (선언 순서대로) font-style, font-variant, font-weight, font-size/line-height, font-family

축약형 선언시 유의사항 : font-sizefont-family는 반드시 선언해야 하는 필수 속성. 빠진 속성이 있다면 기본 값으로 지정됨. 각 속성의 선언 순서를 지켜야 함.

 

7-9. [속성] webfont

서버에 저장해 제공하거나, 웹 경로를 통해 사용하는 폰트

@font-face : 웹에 있는 글꼴을 사용자의 로컬 환경(컴퓨터)으로 다운로드하여 적용하는 속성.

@font-face의 속성값

font-family (필수) : 글꼴의 이름을 지정

src (필수) : 다운로드 받을 글꼴의 경로(URL)

font-style (선택) : 글꼴의 스타일 지정, 기본 값은 normal

font-weight (선택) : 글꼴의 굵기 지정, 기본 값은 normal

cf) 시스템 폰트 : font-family로 선언한 글꼴이 사용자 시스템에 기본으로 설치가 되어 있어 사용할 수 있는 경우. 이미지 폰트 : 특정 글꼴을 사용하는 게 아니라, 글꼴 대신 이미지를 이용해서 표현하는 경우. 엄연히 따지면 이미지폰트는 이미지임.

웹폰트는 선언 시 필요에 따라 굵기나 스타일 등을 같이 지정해서 사용

 

7-10. [속성] vertical-align

인라인 요소의 수직 정렬 지정. defaultbaseline.

속성 값

length : px값 사용 시 baseline을 기준으로 이동. 음수 사용 가능

% : line-height를 기준으로 내에서 이동. 음수 사용 가능.

keyword : baseline(기본 값), sub, super, top, text-top, middle, bottom, text-bottom

 

7-11. [속성] text-align

인라인 요소의 수평 정렬 지정.

속성 값

left, right, center, justify(텍스트를 라인 양쪽 끝으로 붙여서 정렬)

text-aligndisplay의 관계

1) text-aligninline-level에 적용

2) text-alignblock-level에 적용할 수 없음

cf) 그렇다면 block 요소를 가운데 정렬 하고자 한다면 어떻게..?

박스모델 챕터에서 다룬 marginauto 값을 이용!

가운데 정렬 인라인 요소 : text-align (center) 블럭 요소 : margin (auto)

 

7-12. [속성] text-indent

텍스트의 들여쓰기 지정.

속성 값

length : px, em 등 고정 수치로 지정. 문단 첫줄에 대한 들여쓰기 수행. 음수 사용 가능. 음수 사용하면 왼쪽으로 이동.

% : 부모 요소(=텍스트를 포함하는 컨테이너 블록)width를 기준으로 변환된 백분율 값으로 들여쓰기.

 

7-13. [속성] text-decoration

텍스트의 장식을 지정

속성 값

text-decoration-line : 텍스트 꾸밈의 종류 지정

속성값 : none, underline, overline(윗줄), line-through(중간을 지나는 줄)

text-decoration-color : 텍스트 꾸밈의 색상 지정

기본값은 currentColor. 색상값을 사용하여 원하는 색상 지정.

text-decoration-style : 꾸밈에 사용되는 선의 스타일 지정.

기본값은 solid. 속성값 : solid(한줄), double(이중선), dotted(점선), dashed(파선), wavy(물결)

 

7-14. [속성] 단어 관련 속성

white-space : 요소 안에 공백 처리 지정

letter-spacing : 자간 지정 (음수 허용)

word-spacing : 단어 사이의 간격 지정 (음수 허용)

word-break : 단어가 라인 끝에 나올 경우 어떻게 처리할지 지정

word-wrap : 요소를 벗어난 단어의 줄바꿈(개행)을 지정

 

 

 

 

 

8. CSS - 레이아웃

8-1. [속성] display

요소의 렌더링 박스 유형 결정! 모든 요소는 기본적으로 갖고 있는 display 값이 있고, 그 값에 따라 블록레벨, 인라인 레벨 등 렌더링 박스의 유형 결정됨.

display 속성으로 해당 요소의 렌더링 박스 유형 변경 가능. 렌더링 여부도 결정 가능. display 속성을 잘 알아야 요소가 화면에 표현되는 방식을 이해하기 쉬움.

속성값 : none, inline, block, inline-block(=inline level 요소처럼 렌더링(배치)되지만 block level의 성질 가짐.) 이외에도 list-item, flex, inline-flex, table, table-cell 등 다양한 속성 값 존재.

 

8-2. [속성] visibility

요소의 화면 표시 여부를 지정. defaultvisible.

속성 값 : visible, hidden(화면에 표시되지 않으나 공간은 차지함.), collapse(셀 간의 경계를 무시하고 숨김. 테이블 관련 요소에만 적용됨.)

display: none = 요소가 렌더링 되지 않음(DOM에 존재하지 않음). 하지만, visibility: hidden = 요소가 보이지는 않지만 렌더링 되며 화면에 공간을 가지고 있음(DOM에 존재함)

 

8-3. [속성] float

요소를 float(요소를 보통의 흐름에서 벗어나게 함) 시킬지 지정하는 속성. float 속성은 요소를 보통의 흐름에서 벗어나 독자적인 공간 위에 배치됨. float을 이용하면 주변 요소들과 더욱 자연스럽게 배치될 수 있음.

속성값 : none, left, right

요소를 보통의 흐름에서 벗어나 띄어지게 함. 주변 텍스트나 인라인 요소가 주위를 감쌈.

대부분 요소의 display 값을 block으로 변경함 (display 값 변경 예외: inline-table, flex )

 

8-4. [속성] clear

요소를 floating 된 요소의 영향에서 벗어나게 하는 속성. float과 항상 따라다니는 속성.

속성값 : none(양쪽으로 floating 요소 허용), left(왼쪽, 허용X), right(오른쪽, 허용X), both(양쪽, 허용X)

block-level 요소만 적용 가능

 

8-5. [속성] position

요소의 위치를 정하는 방법을 지정하는 속성. 요소의 레이아웃을 설정하는 대표적인 속성. (offset : 요소를 이동시키기 위한 좌표 속성. top, bottomheight, left, rightwidth값에 대해 계산됨.)

속성 값

static : Normal-flow 에 따라 배치. offset 값 적용 X.

absolute : 부모 요소의 위치를 기준으로 offset 에 따라 배치된다. 부모가 position (static 제외)을 가지면 offset 값의 시작점이 됨. Normal-flow에서 벗어남.

relative : 자신이 원래 있어야 할 위치를 기준으로 offset 에 따라 배치됨. 부모의 position 속성에 영향 X. Normal-flow의 흐름에 따름. 주변 요소에 영향을 주지 않으면서 offset 값으로 이동.

fixed : 뷰포트(브라우저의 창)를 기준으로 offset 에 따라 배치됨. 화면 스크롤에 관계없이 항상 화면의 정해진 위치에 나타남. 부모의 위치에 영향 X.

 

8-6. [속성] z-index

요소가 겹치는 순서(쌓임 순서 또는 stack order)를 지정하는 속성.

속성 값 : auto (쌓임 순서를 부모와 동일하게 설정(기본값)), number (해당 수치로 쌓임 순서를 설정(음수 허용))

position 값이 static이 아닌 경우 지정가능

순서 값이 없을 경우 생성순서(코드상 순서)에 따라 쌓임

부모가 z-index 값이 있을 경우 부모 안에서만 의미있음

큰 값이 가장 위쪽(음수 사용 가능)

 

8-7. HTML/CSS 유효성 검사

HTML/CSS 코드를 작성하고 나면 항상 유효성 테스트를 실시해야 함. 유효성 검사를 통해 마크업 문법상 에러가 없는지 표준에 맞게 작성되었는지 알 수 있고, 사용성과 접근성, SEO 최적화 개선에도 도움이 됨.

유효성 검사를 할 수 있는 주소 : https://validator.w3.org/

HTML/CSS이 익숙하지 않을 때는 반드시 코드 작성 후 항상 유효성 검사하는 습관을 들이기.

 

 

 

 

 

9. CSS 미디어쿼리

9-1. 미디어쿼리 소개

미디어퀴리(Media Queries)는 각 미디어 매체에 따라 다른 스타일(css style)을 적용할 수 있게 만드는 것. 반응형 웹사이트 제작에 반드시 필요.

미디어쿼리는 동일한 웹 페이지를 다양한 환경의 사용자들에게 최적화된 경험을 제공.

미디어 쿼리로 인해, 웹 사이트를 제작함에 있어 이전의 정적인 고정 레이아웃 웹사이트 동적으로 반응하는 반응형 웹사이트로 패러다임이 새롭게 변화

 

9-2. 미디어 타입 & 미디어 특성

미디어 쿼리 선언 방법 : @media (=이제부터 미디어 쿼리를 시작한다는 뜻) mediaqueries {style rules} / CSS 파일 내부에 또는 <style> 태그 내부에 사용가능.

미디어 쿼리 구문은 논리적으로 평가됨. (: 스타일 규칙 적용, 거짓 : 무시됨.)미디어쿼리구문은 미디어 타입과 미디어 특성으로 이루어짐.

미디어 타입 : 우리가 알아야 할 타입은 all, print, screen 정도. 그 중에서도 screen이 거의 대부분.

미디어 특성 : 우리가 알아야 할 특성은 width(뷰포트의 너비, 브라우저 창의 너비)orientation(미디어가 세로모드(portrait 키워드와 매칭)인지 가로모드(landscape 키워드와 매칭)인지) 정도

 

9-3. Syntax

미디어 특성은 이름 앞에 min-또는 max- 접두사를 붙일 수 있음. 반응형 웹사이트 제작할 때 보통 접두사 붙임! 그게 더 효율적이고 간결해서!

 

9-4. viewport의 이해

뷰포트(viewport) : 스마트폰을 사용하여 웹을 이용하는 사용자의 빈도가 급격히 높아지면서, 모바일 브라우저에서 만드는 가상의 화면.

뷰포트 설정 : <meta> 태그로, <head> 태그에 위치해야함.

<meta name="viewport" content=" 뷰포트의 설정 값" >

content에는 몇 가지 설정을 할 수 있음.

1) width(height) : 뷰포트의 가로(세로) 크기를 지정. px단위의 수치가 들어갈 수 있지만, 대부분 특수 키워드인 "device-width(height)"를 사용.(뷰포트의 크기를 기기의 스크린 width(height) 크기로 설정한다는 의미.)

2) initial-scale : 페이지가 처음 나타날 때 초기 줌 레벨 값을 설정.(소수값)

3) user-scalable : 사용자의 확대/축소 기능을 설정할 수 있음.

 

대부분의 모바일 웹 사이트의 뷰포트 설정은 아래와 같음!

<meta name="viewport" content="width=device-width, initial-scale=1.0">

 

 

 

 

학습한 강의 : https://www.boostcourse.org/cs120/joinLectures/33586

 

⭐공부한 걸 토대로 간단히 만들어본 반응형 웹페이지(라고 쓰고 과제라고 읽는다^_^*) : https://linason-esc.github.io/week2_html_css/

 

'개발냥발 > FE (FrontEnd)👩🏻‍💻' 카테고리의 다른 글

React 익히기❗  (0) 2022.05.30
Javascript 활용하기❗  (0) 2022.05.25
Javascript 익히기❗  (0) 2022.05.16
HTML 익히기❗  (0) 2022.05.09
Git 과 Github 익히기❗  (0) 2022.05.01