IT/Etc

CSS 기초 / SASS / 반응형 웹 기초

상짱 2024. 4. 7. 17:39
반응형

HTML : 웹 문서의 콘텐츠를 구성하는 언어

CSS: 웹 문서의 콘텐츠를 꾸며주는 언어

 

- CSS ( Cascading Style Sheets  )

선택자 {
	속성명: 속성값;
}

ex)
p {
	color: red;
}

 

적용방식

1. 인라인 스타일: 태그에 직접 기술

2. 스타일 태그: 스타일시트를 위한 태그를 추가하여 기술

3. 문서 간의 연결: 스타일시트 문서를 따로 작성하여 HTML 문서와 연결

<p style='color: red;'>
	인라인 스타일
</p>
/* 스타일 태그 */
<style>
p { color: red;}
</style>
// 문서 간의 연결
<link href='./style.css' ref='stylesheet'>

 

 

- 선택자

전체 선택자
* {
	color: blue;
}

태그 선택자 or 유형 선택자
p {
	color: blue;
}

클래스 선택자
.text {
	color: blue;
}

아이디 선택자
#topic {
	color: blue;
}

그룹 선택자
h1, p, div {
	color: blue;
}

특성 선택자
[class] {
	color: blue;
}
[class='item'] {color: blue;} /*클래스값이 item 이면*/
[class *= 'it'] {color: blue;} /*포함되는*/
[class ^= 'it'] {color: blue;} /*시작하는*/
[class $= 'it'] {color: blue;} /*끝나는*/

결합 선택자
div p {color: blue;} /*div 요소 안에 위치하는 모든 */
div > p {color: blue;} /* div 요소의 바로 아래에 위치하는 모든 */
h1 ~ p {color: blue;} /* h1 요소의 뒤에 오는 형제 중 모든 */
h1 + p {color: blue;} /* h1 요소의 바로 뒤에 오는 형제(붙어있어야) */

선택자가 겹치는 경우, 나중에 작성된 스타일이 적용된다.

선택자가 다르지만 요소가 겹치는 경우, 선택자 우선순위에 의해 적용된다.

태그 선택자 < 클래스 선택자 < 아이디 선택자(1순위)

 

- 속성

텍스트 관련 속성

font-family : 글꼴 정의
font-size : 글자 크기 
px : 모니터 상의 화소 하나 크기에 대응하는 절대적인 크기
rem : html태그의 font-size에 대응하는 상대적인 크기(배수)
em : 부모태그(상위태그)의 font-size에 대응하는 상대적인 크기(배수)

text-align : 정렬 방식
left/right/center/justify : 왼쪽,오른쪽,가운데,양끝 정렬

color : 글자색

 

- 인라인 / 블록

블록 레벨 요소

자기가 속한 영역의 너비를 모두 차지하여 블록을 형성한다. div, p, h1

 

인라인 요소

자기에게 필요한 만큼의 공간만 차지한다. span, a

/*
블록 레벨 요소인 div 요소를 인라인으로 처리하고 싶다면
*/
div{ display: inline; }
/*
인라인 요소인 a 요소를 블록 레벨로 처리하고 싶다면
*/
a{ display: block; }

 

border 

요소가 차지하고 있는 영역에 테두리를 그린다.

 

- 박스모델

콘텐츠 영역: width, height

안쪽 여백: padding

바깥쪽 여백: margin

테두리: border-width

 

- box-sizing: 요소의 너비와 높이를 계산하는 방법을 지정한다.

속성값

content-box: 기본값, 너비와 높이가 콘텐츠 영역만을 포함한다.

border-box: 너비와 높이가 안쪽 여백과 테두리까지 포함한다.

 

- float

요소가 문서의 일반적인 흐름에서 제외되어 자신을 포함하고 있는 컨테이너의 왼쪽이나 오른쪽에 배치되게 한다.

필요한 만큼 공간을 차지한다.

속성값

none: 기본값, 원래 상태

left: 자신을 포함하고 있는 박스의 왼편에 떠 있어야 함.

right: 자신을 포함하고 있는 박스의 오른편에 떠 있어야 함.

 

- clear

float 요소 이후에 표시되는 요소가 float을 해제(clear)하여 float 요소의 아래로 내려가게 할 수 있다.

속성값

none: 기본값, 아래로 이동되지 않음을 나타내는 키워드

left: float이 left인 요소의 아래로 내려가겠다

right: float이 right인 요소의 아래로 내려가겠다.

both: float이 left  및 right 인 요소의 아래로 내려가겠다.

 

- position

요소를 배치하는 방법을 정의

속성값

static: 기본값. 일반적인 문서흐름에 따라 배치

relative: 일반적인 문서 흐름에 따라 배치하되, 상하좌우 위치 값에 따라 오프셋을 적용한다.

absolute: 일반적인 문서 흐름을 제거하고, 가장 가까운 position 지정 요소에 대해 상대적으로 오프셋을 적용한다.

fixed: 일반적인 문서 흐름을 제거하고,  지정한 위치에 고정된다.

sticky: 일반적인 문서 흐름에 따라 배치하되,  스크롤 동작이 존재하는 가장 가까운 요소에 대해 오프셋을 적용한다.

 

오프셋: 위치를 얼마간 이동시키는 것을 의미. 시작 위치.

 

- flexbox

박스 내 요소 간의 공간 배분과 정렬 기능을 제공하기 위한 1차원 레이아웃 모델이다.

행, 열만을 다룬다.

flex 컨테이너라고도 한다. 기본적으로 행 방향으로 정렬한다.

display: flex; 로 적용한다.

주축(main-axis)과 교차축(cross-axis)이 있다.

 

flex-direction

flexbox 내 요소를 배치할 때 사용할 주축 및 방향(정방향, 역방향)을 지정한다.

속성값

row: 기본값, 주축은 행

row-reverse: 주축은 행, 반대방향

column: 주축은 열

column-reverse: 주축은 열, 반대방향

 

주축 배치 방법: justify-content

교차축 배치 방법: align-items

교차축 개별요소 배치 방법: align-self

줄 바꿈 여부: flex-wrap

 

- 의사클래스

요소가 어떤 특정한 상태가 되었을 때 요소를 선택하겠다는 의미이다.

선택자:의사클래스 {
	속성명: 속성값;
}
h1:hover {
	color: red;
}

hover: 마우스 포인터가 요소에 올라가 있다.

active: 사용자가 요소를 활성화했다. ex. 마우스로 누르면

focus: 요소가 포커스를 받고 있다.

disabled: 비활성 상태의 요소이다.

nth-child(): 형제 사이에서의 순서에 따라 요소를 선택한다.

nth-child(3): 3번째 형제 사이에서의 순서에 따라 요소를 선택한다.

nth-child(n): n번째 형제 사이에서의 순서에 따라 요소를 선택한다.

nth-child(2n): 2n번째 형제 사이에서의 순서에 따라 요소를 선택한다.

nth-child(2n-1): 2n-1번째 형제 사이에서의 순서에 따라 요소를 선택한다.

 

- 의사 요소

선택자에 추가하는 키워드로, 이를 이용하면 선택한 요소의 특정 부분에 대한 스타일을 정의할 수 있다.

선택자::의사요소 {
	속성명: 속성값;
}
li::first-letter {
	font-size: 20px;
}

after: 요소의 앞에 의사 요소를 생성 및 추가

before: 요소의 뒤에 의사 요소를 생성 및 추가

first-line: 블록 레벨 요소의 첫 번째 선에 스타일을 적용

marker: 목록 기호의 스타일을 적용

placeholder: 입력 요소의 플레이스홀더(자리표시자) 스타일을 적용

 

- 상속

하위 요소가 상위 요소의 스타일 속성값을 물려받는 것을 의미한다.

상속됨: color, font-family, font-size, font-weight, text-align, cursor 등

상속 안됨: background-color, background-image, background-repeat, border, display 등

 

- 공용 키워드

모든 CSS 속성에 사용 가능한 키워드, 전역값이라 표현하기도 한다.

inherit: 상위 요소로부터 해당 속성의 값을 받아 사용한다.

initial: (브라우저에 지정되어 있는) 해당 속성의 기본값을 요소에 적용한다.

unset: 상속 속성에 대해서는 inherit, 상속되지 않는 속성에 대해서는 initial처럼 적용

 

- z-index

요소의 쌓임 순서(stack order)를 정의한다.

정수 값을 지정하여 쌓임 맥락(stacking context)에서의 레벨을 정의하는 방식으로 적용되며, 위치 지정 요소에 대해 적용할 수 있는 속성이다.

위치 지정 요소(positioned element)란, position 속성이 정의되어 있는 요소를 말한다.

 


- SASS(Syntactically Awesome StyleSheets)

CSS 전처리기

SCSS -> SASS 전처리기 -> CSS

 

- 중첩 규칙(nesting)

div {
    p {
        span {
        }
    }
}

 

- 단축 속성

여러 가지 CSS 속성의 값을 함께 지정할 수 있는 속성으로, 같은 주제를 가진 여러 공통 속성을 묶기 위해 정의하는 속성

단축 속성의 하위 속성을 그룹화할 수 있다.

네임스페이스 속성 중첩
p {
    font: {
        family: sans-serif;
        size: 1em;
        style: normal;
        weight: 900;
    }
}

 

- 상위 선택자 참조하기

& 을 사해서 상위 선택자를 참조할 수 있다.

button {
    &:active {
        color: red;
    }
}
-- 컴파일
button:active {
	color: red;
}

 

- 변수

$ 기호를 사용한다.

$main-color: red;

div {
	color: $main-color
    background-color: $main-color
    box-shadow: 10px 10px 10px $main-color
    text-shadow: 10px 10px 10px $main-color
    border-radius: $main-color
}

 

- 믹스인

비슷하거나 동일한 스타일을 반복해서 사용하는 경우, 믹스인을 사용하면 사이트 전체에서 재사용할 스타일 그룹을 정의할 수 있다.

@mixin 지시자를 사용한다.

@include 지시자를 사용하여 해당 믹스인을 호출한다.

@mixin my-font {
    font-family: sans-serif;
    font-size: 32px;
    font-style: normal;
    font-weight: 600
    color: orange;
}

h1 {
	@include my-font;
}

p {
	@include my-font;
}

 

- 믹스인 인자 / 믹스인 인자 기본값

@mixin my-font($font-color, $bg-color:yellow) {
    font-size: 32px;
    font-weight: 600
    color: $font-color;
    background-color: $bg-color;
}

h1 {
	@include my-font(red);
}

p {
	@include my-font(blue, purple);
}

 


- 반응형 웹 기초

컴퓨터웹, 모바일웹, 태블릿웹 화면들..

 

- 뷰포트

현재 화면에 보여지고 있는 영역을 의미한다.

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

 

- px

절대 길이 단위, 어떤 상황에서도 동일한 값을 유지, 가변성이 없다.

 

- em & rem (배수)

박스에서 텍스트 크기를 조정할 때 사용하는 상대 단위이다.

em은 부모 요소의 글꼴 크기를, rem은 루트 요소의 글꼴 크기를 의미한다.

 

- vw, vh, vmin, vmax

font-size: 1vw; /* 뷰포트 너비의 100분의 1 */
font-size: 1vh; /* 뷰포트 높이 100분의 1 */
font-size: 1vmin; /* 뷰포트 높이와 너비 중 작은 쪽의 100분의 1 */
font-size: 1vmax; /* 뷰포트 높이와 너비 중 큰 쪽의 100분의 1 */

 

- 가변 레이아웃

% 백분

 

- 함수 / calc()

계산식의 결과를 속성값으로 지정할 수 있다.

width: calc(100%-20px)

 

- 미디어쿼리

미디어 타입을 인식하고, 콘텐츠를 읽어 들이는 기기나 브라우저의 물리적 속성을 감지할 수 있는 유용한 장치(기능)이다.

@media 미디어타입 and (조건에 대한 물음) {
    /*
    미디어 타입과 조건을 모두 만족할 때 덮어씌울 스타일시트
    */
}
@media screen and (min-width: 768px) {
    /*
    화면(screen)의 너비가 768px 이하일 경우에 여기에 정의된 스타일시트 적용
    */
}

link 태그 이용
<link rel='stylesheet' href='style.css' media='screen and (min-width: 768px)'>

@import 구문 이용
@import url('style.css') screen and (min-width: 768px);

 

- 모듈화 디자인

html 엔티티

 

입문자를 위한 반응형 웹 기초 강의 #10 모듈화 디자인 (youtube.com)

 

반응형

'IT > Etc' 카테고리의 다른 글

vscode - ruby / jekyll 사용기(깃블로그 개발환경 잡기)  (0) 2024.04.03
표기법  (0) 2023.06.27
놀랍다. ChatGPT  (0) 2023.02.05
블루스크린 로그 확인  (0) 2022.11.09
Google Cloud Platform 을 이용한 svn 서버  (0) 2020.03.03
svn repository 추가  (0) 2020.02.17