css 기초 - 1

2021. 8. 27. 16:55·SE Bootcamp 내용 정리

ch – CSS 기초

CSS는 Cascading Style Sheets의 약자로 HTML과 같은 마크업 언어가 표현되는 방법을 결정
→ CSS는 구조의 외부와 내부를 꾸미는 역할

 

  • 학습 목표
    CSS의 사용목적 이해
    프론트엔드 개발자의 기초소양
    CSS의 기본문법과 구조
    → 직접 html 안에 css를 정의하는 것을 권장하지 않는 것을 이해
    id 및 class와 관련된 selector 규칙
    CSS에서 쓰이는 단위(2가지 구분)
    → 각 단위가 적합한 경우를 구분
    CSS 박스 모델
    → width, height
    → margin, padding, border
      → 박스 크기를 측정하는 2가지 기준의 차이 이해
    MDN, w3school 같은 레퍼런스 사이트를 통한 검색과 이용법
     

CSS 소개

CSS는 스타일링을 위한 도구

  • 콘텐츠의 배치와 위치(레이아웃 디자인)
  • 텍스트 강조, 밑줄 등 최소한의 타이포그래피

→ 더 나은 사용자 경험(UX, User Experience)를 제공

CSS에 대한 오해

CSS는 디자이너의 영역이 아니다. 개발자의 기본적인 소양 이다
일반 사용자를 대상으로 하는 어플은 사용자 인터페이스(UI)가 있어야 함
 

UI는 사람과 컴퓨터 프로그램이 소통할 수 있도록 만들어진 요소
→ 아무리 훌륭한 내부 기능이 있어도 Ui가 없으면 쓸모없는 어플
 

UX도 고려해야 한다. 여러 기능을 한 화면에 덕지덕지 붙여놓기 보단
깔끔하게 리디자인하는 것
→ Ux를 고려하여 디자인하는 것은 디자인을 몰라도 된다!
→ 검색으로 무료 아이콘(검색: free app icon) 찾거나, CSS 도형은 쉽게 제작 가능
 

프론트엔드 개발자
→ 크롬과 같은 브라우저에 보이는 부분: Front-end
→ 레이아웃 디자인, 타이포그래피 정도는 다룰 줄 알아야 함
→ 화면의 구성과 배치(레이아웃 디자인)
→ 굵은 글씨와 같은 타이포그래피와 색상을 적용하는 일 등
→ 프론트엔드 개발자가 아니더라도 개발자라 한다면 최소한의 UI 제작은 가능해야 함!
 

CSS는 어렵다?

CSS는 웹 개발자가 배우기 가장 쉬우면서 동시에 가장 어려운 언어이긴 하다
→ 배우는 것은 쉽지만, 대형 프로젝트에서 CSS를 의미있게 구성하는 일이 어렵기 때문


CSS 따라하기

index.html , index.css 파일 만들어서 따라 해보기

  • 시맨틱 태그?
    <header> <main> <nav> <aside> <foooter>이런 태그들
    → 사실 <div> 태그와 같은 의미
    → 부르는 이름만이 다를 뿐임
    → 이렇게 이름에 의미를 붙여 부르는 태그; 시맨틱 태그
    → 이 태그의 영역이 어떤 역할을 하는지 개발자가 쉽게 파악하도록 돕는 거

CSS 내용 분해하기

CSS의 문법 구성

body{    //선언 블록(declaration block)
    color:red;    //선언(declaration)
    font-size:30px;    // ;은 선언 구분자
    //속성명(property)    //속성값(value)
    }

background-color vs background?

background-color는 색상만 지정할 수 있다
background는 색상 뿐만 아니라 다른 옵션(image, repeat, attachment, ...)을 지정해 사용 가능하다.

em과 rem?

폰트나 마진, 패딩 등의 크기를 지정할 때 정확한 px로 지정할 수도 있지만
상대적인 값을 표현 해주는 단위인 rem, em도 사용 가능

rem은 기준이 되는 값을 지정된 배수로 변환해 표현한 크기를 의미
→ 보통 기준값은 최상위 요소(html 태그)에서 지정된 font-size값을 의미

em 또한 기준이 되는값을 지정된 배수로 변환해 표현한 크기를 의미
→ 단, 기준값은 현재 스타일 지정 요소*의 font-size값을 의미
(단 현재 요소의 값이 지정되지 않았다면 *부모 요소의 값을 상속
받아 기준 삼음)

→ 즉, rem과 em의 차이는 기준값의 차이
→ rem: 기준값; 최상위 태그의 font-size값
→ em: 기준값; 현재 요소의 font-size값

margin vs padding?

Margin 속성은 어떤 요소의 네방향 “바깥 여백” 영역 값을 설정하는 것
→ margin-top, margin-right, margin-bottom, margin-left의 단축 속성임

→ ex) 
/* 네 면 모두 적용 */
margin: 1em;
margin: -3px;

/* 위 | 가로방향 | 아래 */
margin: 1em auto 2em;

/* 전역 값 */
margin: inherit;
margin: initial;
margin: unset;

margin: 10px;               /* 모두 10px */

margin: 10px 3px 30px 5px;  /* 상: 10px */
                            /* 우:  3px */
                              /* 하: 30px */
                            /* 좌:  5px */

margin: auto;               /* 상하: 0 */
                            /* 수평 중앙정렬 */

 

반면에 padding 속성은 특정 요소의 네 방향 “안쪽 여백” 영역을 설정
→ padding-top, padding-right, padding-bottom, padding-left를 포함한 단축 속성

ex) padding: 1em;        //네 면 모두 1em 적용

    /* 위 | 오른쪽 | 아래 | 왼쪽 */
padding: 5px 1em 0 2em;

/* 전역 값 */
padding: inherit;
padding: initial;
padding: unset;

padding: 1em 3px 30px 5px;  /* 상:  1em */
                             /* 우:  3px */
                            /* 하: 30px */
                           /* 좌:  5px */

text-align

해당 속성은 블록 요소나 표의 칸 상자의 “가로 정렬”을 설정.
→ vertical-align과 비슷한 속성이나 세로가 아닌 “가로 방향”으로 동작함

ex)
/* 키워드 값 */
text-align: left;
text-align: right;
text-align: center;
text-align: justify;
text-align: justify-all;
text-align: start;
text-align: end;
text-align: match-parent;

CSS 파일을 HTML에 추가(연동)하기

HTML 파일에서 link 태그 이용하여 그 안에 href 속성을 통해 CSS 파일 연결

<link rel=”stylesheet” href=”index.css” />

 

link tag?

Link 태그는 HTML 파일과 다른 파일을 연결할 때 사용
rel 속성은 연결하고자하는 파일의 역할이나 특징
→ CSS는 스타일시트이므로 rel 속성에 stylesheet 속성값
 
href 속성에는 파일의 위치를 추가
→ 절대경로나 상대경로를 입력
 

CSS 스타일 적용하는 방법: 3가지

인라인 스타일: 같은 줄에서 스타일을 적용
내부 스타일 시트: 내용을 별도의 파일로 구분하지 않고 style 태그 내에서 작성
외부 스타일 시트: 해당 스타일 내용을 별도의 파일로 만들어서 적용

“관심사 분리”의 측면에서 HTML 태그에 직접 CSS 속성을 추가하는 방법은 좋지 않다
→ CSS파일은 별도 파일로 분리하여 관리하는게 좋다

ex)    인라인 스타일의 예
<nav style=”background: #eee; color: red”> … </nav>

 


기본적인 셀렉터(selector)

id로 이름 붙여서 스타일링 적용하기(#id명)

특정 요소에만 스타일링 적용하려고 할 때 사용 가능

→ ex) nav 하위의 h4 요소에 색상을 변경(index.css 에서)
h4 {
    color: red;
}

→ 허나 이렇게 하면 nav 하위뿐만 아니라 aside 하위의 h4도 변경되어버림
→ 원하는 요소만 정확하게 선택하기 위해서는 이 엘리먼트에 id를 붙이면 됨

# 기호를 사용한다. id는 하나의 문서에서 하나의 요소에만 사용해야 한다
→ id는 하나의 요소에 적용할 수 있는 유일한 이름

 

<h4 id="navigation-title">This is the navigation section.</h4>
// html에서 id 속성을 추가

#navigation-title {    // css 에서 #id명    을 붙여서 사용
  color: red;
}

class로 스타일을 분류하여 적용

 
id와 유사하게 특정 요소에 스타일링을 할 수 있다.
차이점은 id는 문서 내에 단 “하나”의 요소에만 적용할 수 있었는데
class는 동일한 기능을 하는 CSS를 “여러” 요소에 적용할 수 있다

ex) html에서 class 속성 사용

<!-- 바른 예제 -->
<ul>
  <li class="menu-item">Home</li>
  <li class="menu-item">Mac</li>
  <li class="menu-item">iPhone</li>
  <li class="menu-item">iPad</li>
</ul>

ex) CSS에서 . 을 이용해서 스타일링
.menu-item {
  text-decoration: underline;
}

 

여러 개의 class를 하나의 엘리먼트에 적용하기

 

위에서는 1개 class → n개의 요소에 적용
그렇다면 n개의 class → 1개의 요소에 적용은?
 
→ html에서 class 속성 값을 설정할때 구분자로 공백을 사용하여 여러 개의 class를 적용 가능
(공백으로 적용하려는 class의 이름을 분리)

ex) html 에서 다중 class 적용
<li class="menu-item selected">Home</li>        <!-- selected 라는 class를 추가해줌 →

ex) CSS에서 요소 스타일링
.selected {        
  font-weight: bold;
  color: #009999;
}

요소를 만들거나, 요소에 스타일링을 적용할 때에는 항상 이름과 목적이 일치하는지 잘 살펴보기

'SE Bootcamp 내용 정리' 카테고리의 다른 글

Linux 기초 - 1  (0) 2021.09.01
css 기초 - 2  (0) 2021.08.31
html 기초  (0) 2021.08.27
js - 반복문  (0) 2021.08.26
js - 문자열  (0) 2021.08.25
'SE Bootcamp 내용 정리' 카테고리의 다른 글
  • Linux 기초 - 1
  • css 기초 - 2
  • html 기초
  • js - 반복문
레실이
레실이
  • 레실이
    레실이의 티스토리
    레실이
  • 전체
    오늘
    어제
    • 분류 전체보기 (88)
      • SE Bootcamp 내용 정리 (63)
      • 알고리즘 연습 (7)
      • Project 주저리 (4)
      • 기술 면접 source (3)
      • 개발 일상 (9)
      • 생성 AI 활용 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CSS
    객체
    MVC
    JS
    fastapi
    문자열
    CSR
    node
    데이터베이스
    JavaScript
    중복 순열
    Linux
    useRef
    ubuntu
    자료구조
    PickAndDrink
    알고리즘
    promise
    node.js
    CORS
    Ajax
    DOM
    IT
    react
    Python
    useState
    mongoDB
    인증/보안
    ORM
    state
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
레실이
css 기초 - 1
상단으로

티스토리툴바