코딩 기록들

[FrontEnd] 5. CSS 본문

FrontEnd Programming

[FrontEnd] 5. CSS

코딩펭귄 2024. 3. 6. 22:16

What is CSS?

html = 웹페이지를 구성하는 방식 (컨텐츠를 추가 & 보여줄 때 사용, 웹페이지의 필수사항)

CSS (Cascading Style Sheets) : html을 꾸밈. (색, 그림자효과 부여 & html위치 조정 등 html요소가 화면또는 기타 미디어에 표시되는 방법을 작성), 계단식 스타일의 문서(부모태그에 CSS가 정의되면 자식태그에도 동일하게 적용됨)

- selector : css를 누구에게 지정할것인지 대상 선택(id, class, attribute, sudo, universial, tag ... )

- declaration : 스타일 정의, 여러개 작성할수 있음, ';' 세미클론으로 구분

    - property : 이미 css에 존재하는 값 

body {
    background-color : lightblue;
}
h1 {
	color : white;
    text-align : center; /*align : 수평정렬*/
}
p {  
    font-family : verdana;
    font-size : 20px
}

 

 

 


 

CSS selectors

  ID selectors  

ex. #header { } = id의 속성이 header인것

 

  Class selectors  

ex. .header--logo{ } -> 태그의 클래스에 속성 값이 header-logo인것

-> 가장 많이 사용하게 됨(재사용성 때문)

 

  Element selectors  

p{ } -> html문서의 모든 p 의 스타일 지정을 하겠다

 

  Universal selectors  

* { } -> 모든 태그를 대상으로 공통스타일을 지정하겠다 (단, 느리므로 안쓰는것을 추천)

 

 


CSS를 정의하는 3가지 방법

- CSS는 적용범위에 따라 3가지방법으로 작성할수있다

1. Inline Style
한 태그의 레이아웃만 적용할 수 있음 

- 태그에 직접 스타일을 추가함(추적어렵기때문에 권장x)

2. Internal Style
한 페이지의 레이아웃만  적용할 수 있음-> html안에서 정의한 'style'만 이용해서 만든것

- 웹페이지의 <style> 태그안에 스타일을 정의하는 방법

- external style의 내용중 일부를 추가/수정하고싶을때 사용

3. External Style
 한페이지를 한번에 관리하는 방법-> 자주쓰임 (재사용성 때문) -> html밖에서 style 정의

- 별도의 CSS파일을 만들어 필요한 웹페이지에 로드하는 방법

- 관련된 태그에대한 스타일을 하나로 모아 관리 : 스타일수정, 추가가 용이

- CSS파일만 작성하므로 변경이력 추적에도 용이

 

Cascading Order (우선순위가 존재함) 

- 우선순위가 높다 = 먼저 브라우저에 표시시킨다

- 순서에 따라 덮여쓰여지는 결과가 다름

# mystyle.css
body {
    background-color: lightblue;
}

h1 {
    /* color : 텍스트의 색상을 변경 */
    color: navy;
    /* h1태그의 왼쪽여백을 20px만큼 띄운다*/
    margin-left: 20px
}

 

아래 예시에서는 external style인 link태그 이후에 internal style이 위치하므로, background-color = green

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS 작성방법 실습</title>
    <!--link에는 상대경로작성 : ./styles/mystyle.css (절대경로 : 폴더의 실제 저장위치)
        상대경로에서 ./의 의미 : 현재 폴더
        상대경로에서 ../의 의미 : 상위폴더-->
    <link rel="stylesheet" href="./styles/mystyle.css">
        <style> /*internal style 이용하기*/
            p {
                /*글자의 크기를 100px로(기본: 16px) 변경한다.*/
                font-size: 100px;
            }
            body{
                background-color: green;
            }
        </style>
</head>
<body>
    <h1>This is a heading (Overwrite)</h1>
    <p>This is a paragraph (Overwrite)</p>
</body>
</html>

 

아래 예시에서는, internal style보다 external style이 이후에 위치하므로 external style적용됨 : backgroun-color = navy

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS 작성방법 실습</title>
        <style> 
            p {
                /*글자의 크기를 100px로(기본: 16px) 변경한다.*/
                font-size: 100px;
            }
            body{
                background-color: green;
            }
        </style>
        
    <link rel="stylesheet" href="./styles/mystyle.css">
    
</head>
<body>
    <h1>This is a heading (Overwrite)</h1>
    <p>This is a paragraph (Overwrite)</p>   
</body>
</html>

 

 


 

Cascading & Specificity

 

Cascading : 하나의 태그에 여러 스타일을 지정할 수 있다

 

-> Spectificity 

- 충돌이 될 때 : 나중에 쓰여진게 표현된다

- 단, id에 적는 값은 해당 html파일에서 유일해야함.

    -> id로 스타일을 관리하지 않음

- 하나의 body안에서 여러 div 스타일을 별도로 주고싶다면,

  class로 주는게 좋음

 

 

 

 

 

 


Inheritance 상속

-부모태그에 정의된 스타일은 자식태그에도 동일하게 적용됨(상속을 명시하지않아도 자동으로 적용됨)

- 모든 페이지에 동일한 스타일 정의하려면 <body> 태그에 스타일을 정의한다

- 자식태그에서의 상속 명시도는 가장 낮음(브라우저 기본스타일보다 낮음)


Box model

- html의 (헤더를 제외한)모든 태그는 box 이다.

- box model : 여백(margin, 태그와 태그 사이의 여백), 테두리, 패딩 및 실제콘텐츠로 구성됨

- 빨간선 박스가 하나의 태그 범위임

- margin은 태그와는 관련이 없음(태그와 태그를 떨어트림)

- padding : 경계선과 컨텐트 사이에 영역을 줌. 태그 안쪽의 영역!(여백줄때 사용)

* width에 320px을 주면= content에 320px이 들어감 -> padding + 20px, boarder : +10 px 되어 결과 : 350px이 됨

=> 패딩과 border를 합친것이 하나의 태그의 길이가 됨 !

 

* box-sizing : border-box : html의 모든 박스테이블을 변경해라! -> 보더까지 계산한 길이가 320이 됨