Cascading Style Sheets :
Style을 사용하는 이유 : 웹 문서의 내용과 상관없이 디자인만 변경 가능
HTML : 웹 사이트의 내용 나열 + CSS : 웹 문서의 디자인 구성 → 웹 표준
서로 독립적인 영향을 줄 수 있다.
/* 기본형 */
선택자 { 속성1: 속성값1; 속성2: 속성값2 }
세미콜론( ; )으로 구분하여 스타일 규칙을 여러 개 지정 가능
선택자에 대해 어떤 속성 적용시킬건지 정한다.
p {
text-align: center;
color: blue;
} // p단락태그에 글자는 중앙정렬하고 파란색으로 컬러
/*
CSS 주석은 이렇게 표시
한 줄 또는 여러 줄을 입력할 수 있습니다.
*/
/*한줄 주석도 이렇게 해야한다*/
스타일 규칙을 한눈에 확인하고 필요할 때마다 수정하기도 쉽도록 한군데 묶어 놓은 것
웹 브라우저에 기본을 만들어져 있는 스타일
적용태그에 직접 태그내에 스타일 작성해주는것
/* style="속성: 속성값;" */
<h1>2023 프로야구 우승팀</h1>
<p style="color: blue;">롯데 자이언츠</p>
head 태그 부분에 사용할 스타일을 정의해주는것
style과 /style 태그 사이에 작성
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>I Like Baseball</title>
⭐<style>
h1 {
width: 350px;
padding: 10px;
background-color: black;
color: tomato;
}
p {
color: tomato;
font-size: 20px;
}
</style>
</head>
<body>
<h1>2023 프로야구 우승팀</h1>
<p>롯데 자이언츠</p>
</body>
</html>
단점 : 한 사이트 내에서만 적용된다는 단점이 있다.
웹 사이트에서 같은 스타일을 여러 웹 문서에 사용하는 경우
→ 각각 내부 스타일 시트를 적용할 경우 서버 공간과 내려받는 시간 낭비
여러 웹 문서에서 사용할 스타일을 별도 파일로 저장
→ 따로 저장된 스타일 정보 : 외부 스타일 (확장자 .css)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>I Like Baseball</title>
⭐<link rel="stylesheet" href="./styleSheet.css">
</head>
<body>
<h1>2023 프로야구 우승팀</h1>
<p>롯데 자이언츠</p>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS - Selector</title>
<style>
/* CSS 선택자 */
/* 스타일 속성을 적용할 대상을 선택하는 것 */
/* 전체 선택자 */
/* 모든 HTML요소에 대해서 해당 스타일 시트를 적용하기 위한 선택자 '*' */
* {
margin: 0;
font-size: 14px;
font-weight: 300;
}
웹 브라우저의 기본 스타일을 초기화 할 때 사용
→ 웹 문서 내용을 브라우저 창에 바짝 붙지 않도록 문서 내용과 브라우저 테두리 사이 여백 ⭕ 마진(margin) / 패딩(padding)
특정 태그를 사용한 모든 요소에 스타일 적용
(= 태그 선택자(tag selector) = 요소 선택자(element selector))
타입 선택자를 사용해 스타일을 지정하면 해당 태그를 사용한 모든 요소에 적용
/*기본형*/
태그명 { 스타일 규칙 }
/* 타입 선택자 */
/* 특정한 요소에 대해 스타일을 적용하기 위한 선택자(요소명) */
h1 {
color: #ff0000;
}
h2 {
color: #00FF00;
}
p {
color: #0000ff;
}
특정 부분에 스타일 적용
클래스 이름을 사용하여 다른 선택자와 구별 → 클래스 이름 앞에 마침표( . )를 반드시 붙여야 한다❗
클래스 스타일 적용
→ 태그 안에 class=”클래스명” : class 속성을 사용하여 지정
/*기본형*/
.클래스명 { 스타일 규칙 }
/* 클래스 선택자 */
/*특정 클래스에 대한 스타일을 적용하기 위한 선택자(.클래스명) */
.title {
font-size: 20px !important; /*최우선 순위로 스타일 적용*/
font-weight: 700;
}
.sub-title {
font-size: 16px;
font-weight: 500;
}
아이디 이름을 사용하여 다른 선택자와 구별 → id 이름 앞에 # 기호를 반드시 붙여야 한다
클래스 선택자는 문서에 여러 번 적용 → id 선택자는 문서에서 한 번만 적용할 수 있다.
주로 문서의 레이아웃과 관련된 스타일을 지정 OR 웹 요소에 자바스크립트 프로그램을 사용하면서 요소를 구별할 때 사용
/* 아이디 선택자 */
/* 특정 아이디에 대한 스타일을 적용하기 위한 선택자 (#아이디명) */
#h1-sub-title {
color: black;
}
(전체 선택자처럼 기본설정을 변경하려고 할때 많이 쓰인다)
하나의 스타일에대해서 여러 선택자에 적용시킬수 있다. 같은 스타일 규칙을 사용하는 요소를 묶어서 적용. 여러 선택자에서 같은 스타일 규칙을 사용하는 경우
→ 쉼표( , )로 구분해 여러 선택자를 나열한 후 스타일 규칙을 한 번만 정의
/* 그룹 선택자 */
/* 같은 스타일을 사용하는 선택자들을 나열하는 방법 (,) */
.class-1, .class-2, .class-3, .class-4 {
background-color: rgba(0,0,0,0.4);
}
/* 자손 선택자 */
/* 특정 자손들에 대해서 스타일을 적용하기 위한 선택자 ( ) */
/* html에 종속되기 때문에 사용을 지양해야한다. */
div h1 { /*자손에 대해 스타일을 적용?*/
color: black;
}
.div-h1 {
color: #ff00ff;
font-size: 10px;
text-align: center;
}
</style>
</head>
전체 스타일 화면
<body>
<div>
<div class="div-h1">
<!--부모에 지정한 요소를 자식에 상속되게한다.
색상은 안되고 text에 대한 것들만 상속된다-->
<h1 class="title">H1 제목 태그입니다</h1>
<!--기본적으로 margin이 설정되어있다-->
<h1 class="sub-title">H1 부제목 태그입니다</h1>
<!--개발자가 지정한 분류가 class-->
<!-- .title 또는 .h1-sub-title을 이용해서 지정한
class에 대해서 스타일을 지정할 수 있게 된다-->
<!--title div-h1처럼 중첩되는 스타일 지정이 있는 경우
제일 오른쪽에 지정한 값이 적용되게 된다-->
<!--id를 사용하면 정확한 구분자로 쓸수 있다.-->
</div>
</div>
<h1 class="title">H1 제목 태그입니다</h1>
<h1 id="h1-sub-title" class="sub-title">H1 부제목 태그입니다</h1>
<h2 class="title">H2 제목 태그입니다</h2>
<h2 class="sub-title">H2 부제목 태그입니다</h2>
<h2 class="title">H2 제목 태그입니다</h2>
<h2 class="sub-title">H2 부제목 태그입니다</h2>
<p class="class-1">P 태그입니다</p>
<p class="class-2">P 태그입니다</p>
<p class="class-3">P 태그입니다</p>
<p class="class-4">P 태그입니다</p>
</body>
</html>
캐스케이딩(Cascading) + 스타일 시트(Style Sheets)
스타일 시트에서는 우선순위가 위에서 아래 → 계단식으로 적용❗
CSS : 우선순위가 있는 스타일 시트
컴퓨터가 제일 마지막으로 읽는게 적용이 된다
중요도 적응범위
1. !important 를 붙이면 어떤 스타일보다 우선 적용❗
2. 인라인 스타일 : 태그 안에 style 속성을 사용해 해당 태그만 스타일 적용
3. id 스타일
4. 클래스 스타일
5. 타입 스타일
글꼴 ≠ 텍스트 스타일
글꼴 : 폰트와 관련
텍스트 : 글자와 단어, 그리고 글자로 이루어진 문단에 사용하는 스타일
font가 붙으면 글꼴과 관련되었다.
/*기본형*/
font-family:<글꼴 이름> | <글꼴 이름>, <글꼴 이름>
첫번째 글꼴이 없다면 그 다음 글꼴로 넘어가서 적용된다
두 단어 이상으로 된 글꼴 이름은 큰 따옴표로 표시
글자 크기를 지정. 글자 크기의 단위는 px(픽셀)이나 pt(포인트) 등으로 지정 OR 백분율 사용. 보통px를 쓰는데 반응형의 경우 em이나 rem을 사용하기도 한다.(비율에 대한 값)
px로 지정하면 딱 그 값으로 고정되어서 웹사이즈의 크기를 줄이면 범위를 침범해서 사용되기도한다.
‘백분율’을 사용하여 글자 크기 지정
→ 부모 요소의 글자 크기를 기준으로 계산하여 지정하는 방법
→ 부모 요소의 글꼴 크기가 font-size: 16px처럼 단위로 표현되어 있어야 한다❗
이탤릭체로 글자를 표시
italiic & oblique → 웹에서는 주로 italic 사용
글자 굵기를 지정
100 ~ 900 사이에서 400은 normal, 700은 bold에 해당
RGB (빨강 초록 파랑) 16진수로 표현 #ff0000
10진수로 표현시 rgb(255,0,0)
grba(0,0,0,투명도)
텍스트의 정렬 문단의 정렬방법 지정
text-align 속성값 중 justify는 여백을 동일하게 줘서 정렬하는것
한 문단이 두 줄을 넘으면 줄 간격이 생긴다.
줄 간격이 너무 좁거나 넓을 경우 가독성 떨어짐.
텍스트에 밑줄을 긋거나 취소선을 표시
하이퍼링크를 적용할 때 기본적으로 생기는 밑줄을 제거
div를 지정했을때 이 구역이 얼만큼의 자리를 차지하는지에 대한 게 box
눈으로 볼수 있는 제일 마지막 공간이 테두리 boder, 내용물이 width height를 차지한다
block는 한줄을 다 차지하고 Inline은 요소만큼 차지한다
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Box</title>
<style>
* {
margin: 0;
}
.span-1 {
display: block;
background-color: aquamarine;
width: 100px;
height: 100px;
/*width, height는 '실제' 내용물의 크기만을 나타낸다*/
border: 5px black solid; /*가로 세로 총 110 * 110을 가지게 된다*/
padding: 10px; /* padding까지하면 총 공간 130 * 130을 가지게 된다*/
margin: 10px; /*요소와 요소 사이의 거리,
margin까지 하면 전체 사이즈가 150 * 150을 차지하게 된다 */
/* 디자인 시안 보고 작업할때 작업물의 높이만
생각하면 안되고 margin, padding, bolder을 고려해서 적용해줘야한다 */
}
.span-2{
display: block;
background-color: beige;
width: 100px;
height: 100px;
/*bolder이 없기때문에 전체 공간이 100 * 100을 가진다*/
}
.div-1{
display: inline; /*가로 세로의 크기를 지정할수없다?*/
}
.div-2{
display: block;
}
.div-3{
background-color: grey;
display: flex;
height: 300px;
⭐flex-direction: column;
/*flex의 '방향'이 바뀌는것, 중심축이 가로에서 세로로 바뀌게 되는것이다*/
align-items: center;
/*align-items, justify-content 모두 쌓이는 방향! 에 따라서 바뀌게 된다. /
justify-content: space-between;
/*left, right, flex-start, flex-end, center,
space-between, space-around*/
}
</style>
</head>
<body>
<span class="span-1">Content</span> <!--span은 InLine요소-->
<span class="span-2">Content</span>
<div class="div-1">Content</div> <!--display와 관련되서 보기-->
<div class="div-2">Content</div>
<div class="div-3">
<div class="span-1" style="flex: 1">1</div> <!--div는 block 요소-->
<div class="span-1" style="flex: 1">2</div>
<div class="span-1" style="flex: 1">3</div>
<div class="span-1" style="flex: 1">4</div>
</div>
</body>
</html>
한 줄을 전부 사용하여 가로폭이 늘어나는 요소입니다. (자동 줄바꿈)
높이(height)와 너비(width)를 모두 지정할 수 있습니다.
기본적으로 새로운 줄에서 시작합니다.
예시: div, p, h1~h6, ul, ol, li, table, form 등
글자와 같이 한 줄을 차지하는 요소입니다.
높이(height)와 너비(width)를 지정할 수 없습니다.
새로운 줄에서 시작하지 않으며, 문장 내에서 자연스럽게 이어집니다.
예시: span, a, strong, em, img, input, button 등
Inline과 Block의 중간형태로, inline처럼 한 줄을 차지하지만 block처럼 높이와 너비를 지정할 수 있습니다.
새로운 줄에서 시작하지 않습니다.
예시: input, button 등
Flexbox 레이아웃을 사용하기 위한 요소입니다.
Flexbox는 요소들을 행(row)이나 열(column)의 형태로 배치할 수 있습니다.
요소들 사이의 간격과 정렬, 순서 등을 설정할 수 있습니다.
예시: div 등