본문 바로가기

HTML5+CSS

CSS 기본1

CSS : Cascading Style Sheets

 

CSS 적용방법 3가지:

1. 인라인 : 해당 태그에 직접 style속성을 활용

2. 내부참조 : HTML 파일 내에 <style>태그에 지정 -> html이 여러개 라면 중복이 발생.??

3. 외부참조 : <head><link>를 통해 .css 불러오기(프로젝트시 외부참조로 하도록 한다)

 

 

선택자 : HTML문서에서 특정한 요소를 선택하여 스타일링 하기 위해서는 반드시 선택자라는 개념이 필요하다.

id 의 선택자는 #

class 의 선택자는 .

 

 

 

CSS 상속 : CSS는 상속을 통해 부모 요소의 속성을 모두(X) 자식에게 상속한다. (모두 상속는 틀린말!(MDN에서 확인))

속성(프로퍼티) 중에는 상속이 되는 것과 되지 않는 것들이 있다.

상속되는 것 : Text 관련 요소(font, color, text-align), opacity, visibility

상속되지 않는것 : Box model 관련 요소(width, height, margin, padding, border, box-sizing, display)

                        position 관련 요소(position, top/right/bottom/left, z-index)

 

** CSS 적용 우선순위(cascading order) **

CSS 우선수위를 아래와 같이 그룹을 지어볼 수 있다.

1순위 : 중요도(Importance) (무적) !important

      ex)  h2 {colorpink !important}

      주의) 앞에 세미콜론 없이 뒤에  !important 작성

2순위 : 우선 순위(Specificity) 인라인 내부id선택자(#)>class 선택자(。)/요소 선택자pp{}

3순위 : 소스 순서 (선언 순으로 계속 덮어간다... 결국 마지막이 적용 반영된다)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!-- 색으로 알아보는 우선순위 -->
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <style>
        #first {color: violet;}
        #first .red {color: red;}
        #second {color:green;}
        .black {color: black;}
        .blue {color: blue;}
        h1 {color: yellow;}
        h2 {color: pink !important} ★주의) 앞에 세미콜론 없이 뒤에  !important 작성
    </style>
    <!-- id > class 보다 위인데!! 스타일 선언시 #-. > . 에서도 우선순위가 적용되는 것?! -->
    <div id="first"><h1 class="blue red black">A</h1></div>
    <!-- 정답: 레드 A-->
    <h1 id="first" class="blue black">B</h1>
    <!-- 정답: 바이올렛 B-->
    <!-- /* 동일 우선순위 내에서는 마지막에 선언된게 적용됨 */ -->
    <div id="second"><h1 class="blue black">C</h1></div>
    <!-- 정답: 블루 C-->
    <div id="second"><h1 class="black blue">D</h1></div>
    <!-- 정답: 블루 D-->
    <h1>E</h1>
    <!-- 정답 : 노랑 E -->
    
    <!-- #. > # 보다 위이다 -->
    <div id="first"><h1 class="blue red black" id="second">F</h1></div>
    <!-- 정답 : 레드 F-->
    <div id="first"><h2 id="second" class="blue red black">G</h2></div>
    <!-- 정답 : 무적핑크 G-->
</body>
</html>
 
 
 
 
 
 

우선순위 주의보 1
우선순위 주의보2

 

 

* 크기 단위

1. px

2. %

3. em : 배수 단위, 요소에 지정된 사이즈에 상대적인 사이즈를 가짐.

         자신이 가질 수 있는 사이즈의 배수

         -> 24px * 1.5em = 36px

         -> 24px * 0.5em = 12px

4 rem : 최상위 요소(html)의 사이즈를 기준으로 배수 단위를 가짐.

         -> root em -> 기본 16px

         어디에 정의되어도 같은 크기를 가진다.

5. Viewport 기준 : vw, vh, vmin, vmax

 

 

box model 구성

Content : 실제 내용이 위치

padding : 테두리 안쪽의 내부 여백, 요소에 적용된 배경의 컬러, 이미지는 패딩까지 적용

Border : 테두리 영역 (보이는 너비에 값이 계산됨됨)

Margin : 테두리 바깥의 외부 여백, 배경색을 지정할 수 없다. (안보임 보이지 않는 손...)

박스모델

값 넣는 순서

1개 모든영역

2개 상하 / 좌우

3개 상 / 좌우/ 하

4개 상/우/하/좌 (시계방향 적용)

 

실제 보이는 너비나 높이의 총 값 = 텍스트크기 + 패딩 + 보더 (마진은 보이지 않음)

{ box-sizing : border-box }를 이용하면 원하는 만큼으로 정의가능

 

마진 상쇄: 인접 형제 요소 간의 margin이 겹쳐서 보임, 제일 큰 값으로 적용

'HTML5+CSS' 카테고리의 다른 글

Flex  (0) 2020.03.25
부트스트랩 기본1  (0) 2020.03.24
CSS 기본2  (0) 2020.03.23
HTML5 기본정리  (0) 2020.03.20