: Cascading (계단식) Style (멋을 내다) Sheets ((종이) 한장) = 계단식으로 스타일을 정의하는 문서
CSS는 HTML 문서에 스타일을 더해줌
HTML 문서는 태그가 태그를 포함하는 계단식 구조 지님
(HTML 문서(코드) + CSS 문서(코드) => 문서열기 => 코드해석)
선택자{
속성명: 속성값;
}
ex.
p{
color: red;
}
: 사람에게는 보이지만, 컴퓨터(웹브라우저)에게는 보이지 않는 코드, 주로 코드에 대한 메모를 남기기 위한 용도로 사용
p{
/*
이 안에 작성하면
주석으로 처리된다
*/
/* color: red; */
}
: HTML 문서에 CSS 문서(코드)를 적용하고자 할 때는 다음과 같은 방식 사용 가능
: 태그에 style 속성을 추가해 요소에 직접적으로 스타일을 정의하는 방식, 선택자 필요 x
빠르고 간단하지만 웹 콘텐츠와 스타일시트를 분리하기 위해서는 사용하지 않는 편이 좋음
(서로 역할이 다른 코드들을 서로 분리해서 관리해야 코드를 유지/보수하기 편하기 때문)
<p style="color: blue;">
글자를 파랗게 만들어줘
</p>
: HTML 문서에 <style></style>태그를 추가해 그 안에 CSS 코드를 작성 가능
스타일 태그는 html 태그이지만 그 안에 들어가는 코드는 css코드
스타일 관련 코드는 html 문서에 대한 정보로 취급하므로 일반적으로 html의 헤드 태그 안에 주로 위치
<style>
/* style 태그 안에는 CSS 코드를 작성해야 한다 */
p{ color: red; }
</style>
: 확장자가 *.css인 스타일시트 파일을 생성해 그 안에 CSS 코드를 작성하고, HTML 문서에 이를 연결 가능
이때는 <link>(단일태그) 태그 사용
<link href="./style.css" rel ="stylesheet>
<link>태그는 HTML 문서의 <head></head> 내부에서 사용해야함<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
</head>
<body>
<p style="color: blue;"">
HTML 문서를 준비하고, 에디터로 여신 다음, 내용을 작성하고 브라우저로 확인해주세요.
</p>
</form>
</body>
</html>
<실습결과>
2. 스타일 태그
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
p{
color: red;
<!--세미콜론은 스타일 하나에 대한 정의가 끝났음을 의미 따라서 세미콜론 뒤에 이어서 또 다른 스타일 정의 가능>
} <!--css코드에서는 html코드와 마찬가지로 공백(가독성위함) 무시-->
</style>
</head>
<body>
<p>
HTML 문서를 준비하고, 에디터로 여신 다음, 내용을 작성하고 브라우저로 확인해주세요.
</p>
</form>
</body>
</html>
<실습결과>
3. 문서 간의 연결
1. */style.css 코드
p{
color: red;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<link href="./style.css" rel="stylesheet">
</head>
<body>
<p>
HTML 문서를 준비하고, 에디터로 여신 다음, 내용을 작성하고 브라우저로 확인해주세요.
</p>
</form>
</body>
</html>
<실습결과>
: 어떤 요소에 스타일을 적용할 것인지에 대한 정보
선택자{
속성명: 속성값;
}
*(애스터리스크)는 '문서 내의 모든 요소'를 의미하는 기호*{
color: blue;
}
=> 문서 내 모든 요소의 글자 색을 파란색으로 지정
p{
color: blue;
}
=> 문서 내 모든 p태그 요소의 글자 색을 파란색으로 지정
.text{
color: blue;
}
=> 문서 내 class가 "text"인 모든 요소의 글자 색을 파란색으로 지정
#topic{
color: blue;
}
=> 문서 내 id가 "topic"인 요소의 글자 색을 파란색으로 지정
h1, p, div{
color: blue;
}
=> 문서 내 모든 h1, p, div 태그 요소의 글자 색을 파란색으로 지정
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
*{ color: red; }
</style>
</head>
<body>
<h1>제목을 나타낸다!</h1>
<p>문단을 표시한다 가가가</p>
<p>문단을 표시한다 나나나</p>
<p>문단을 표시한다 다다다</p>
</body>
</html>
<실습결과>
2. 태그 선택자
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
h1{ color: red; }
</style>
</head>
<body>
<h1>제목을 나타낸다!</h1>
<p>문단을 표시한다 가가가</p>
<p>문단을 표시한다 나나나</p>
<p>문단을 표시한다 다다다</p>
</body>
</html>
<실습결과>
3. 클래스 선택자
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
.text{ color: green; }
</style>
</head>
<body>
<h1 class="text">제목을 나타낸다!</h1>
<p>문단을 표시한다 가가가</p>
<p class="text">문단을 표시한다 나나나</p>
<p>문단을 표시한다 다다다</p>
</body>
</html>
<실습결과>
4. id 선택자
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
.text{ color: green; }
#gagaga{ color: orange; }
</style>
</head>
<body>
<h1 class="text">제목을 나타낸다!</h1>
<p id="gagaga">문단을 표시한다 가가가</p>
<p class="text">문단을 표시한다 나나나</p>
<p>문단을 표시한다 다다다</p>
</body>
</html>
<실습결과>
5. 그룹 선택자
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
h1, p{
color: purple;
}
</style>
</head>
<body>
<h1 class="text">제목을 나타낸다!</h1>
<p id="gagaga">문단을 표시한다 가가가</p>
<p class="text">문단을 표시한다 나나나</p>
<p>문단을 표시한다 다다다</p>
</body>
</html>
<실습결과>
6. 우선순위
(1) 뒤에 적은 거 우선순위
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
h1{color: red;}
h1{ color: blue; }
</style>
</head>
<body>
<h1 class="text">제목을 나타낸다!</h1>
<p id="gagaga">문단을 표시한다 가가가</p>
<p class="text">문단을 표시한다 나나나</p>
<p>문단을 표시한다 다다다</p>
</body>
</html>
<실습결과>
(2) .text 우선순위
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
.text{color: red;}
h1{ color: blue; }
</style>
</head>
<body>
<h1 class="text">제목을 나타낸다!</h1>
<p id="gagaga">문단을 표시한다 가가가</p>
<p class="text">문단을 표시한다 나나나</p>
<p>문단을 표시한다 다다다</p>
</body>
</html>
<실습결과>
? ) a요소가 블록을 형성하게 만드는 방법이 있을까?
: 선택된 요소를 블록과 인라인 요소 중 어느 쪽으로 처리할지 정의함
/*
블록 레벨 요소인 div 요소를
인라인으로 처리하고 싶다면
*/
div{ display: inline; }
/*
인라인 요소인 a 요소를
블록 레벨로 초리하고 싶다면
*/
a{ disply: block; }
: display에는 미리 정의되어 있는 키워드를 속성값으로 지정
: 요소가 차지하고 있는 영역에 테두리를 그림
border 속성에는 속성값으로 테두리의 두께, 모양, 크기 등을 함께 지정할 수 있는데, 이러한 속성을 '단축속성'이라고 함
span{ border: 2px solid green; } : 두께가 2px인 직선 모양(solid)의 초록(green) 테두리를 만들어줘
: 단축속성은 여러가지 속성을 함께 지정해 줄 수 있는 속성
border 속성에 지정하는 값들을 따로따로 지정할 수도 있음. 각 속성은 다음과 같음
(1) 인라인 블록 알아보고 바꿔보기
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<!--차지하고 있는 영역 보기 위함, div를 인라인으로 바꾸면 필요한만큼의 영역만 차지하므로 블록 형성 x->아래 있던 span태그가 위로 올라옴(인라인이 블록이 아닐때)-->
<style>
div{
border: 1px solid red;
display: inline;
}
span{
border-width: 5ps;
border-style: dashed;
border-color: rgb(100%, 50%, 0%);
display: block;
}
</style>
</head>
<body>
<div>나는야 블록 레벨</div>
<span>나는야 인라인</span>
</body>
</html>
<실습결과>
(2) none과 inline-block
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<!--차지하고 있는 영역 보기 위함, div를 인라인으로 바꾸면 필요한만큼의 영역만 차지하므로 블록 형성 x->아래 있던 span태그가 위로 올라옴(인라인이 블록이 아닐때)-->
<!--none은 display 안한다 = 요소 자체가 아예 사라진 것이 아니라 보이지 않게 한 것 (존재하지만 보여주지 않는다) -->
<!--인라인 블록은 인라인처럼 배치하되, 블록의 속성(width, height)을 가질 수 있다 (인라인요소는 기본적으로 필요한 영역만 차지하므로 높이와 너비를 임의로 조절 x, 블록은 가능)-->
<!--인라인 요소의 너비와 높이를 임의로 조절할 수 있게 하고 싶으면 인라인 블럭 사용-->
<!--디스플레이는 여러가지 속성 값을 추가해서 다양한 디스플레이 특성들을 가질 수 있다.( 대표적: 디스플레이 요소 안에 들어가는 자식 요소의 배치를 바꾸는 레이아웃 관련 속성도 존재) -->
<style>
div{
border: 1px solid red;
display: none;
}
span{
border-width: 5ps;
border-style: dashed;
border-color: rgb(100%, 50%, 0%);
display: inline-block;
}
</style>
</head>
<body>
<div>나는야 블록 레벨</div>
<span>나는야 인라인</span>
</body>
</html>
<실습결과>
: 브라우저가 요소를 렌더링 할 때, 각각의 요소는 기본적으로 사각형 형태로 영역을 차지하게 되는데 이 영역을 '박스'라 표현함
CSS는 박스의 크기, 위치, 속성(색, 배경, 테두리 모양 등)을 결정 가능
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
/*테두리 표시하기 위해 border 속성활용*/
div{
border: 3px solid red;
padding: 10px;
/*padding은 요소를 감싸고 있는 테두리 안쪽에 여백 추가 속성*/
/*컨텐츠 영역을 넘어 상하좌우로 연두색으로 하이라이팅 되는 영역 추가됨*/
margin: 20px;
/*margin 바깥쪽의 여백 나타내주는 속성*/
/*주황색으로 표시되는 여백 추가 확인 가능*/
/*여백이 추가됐으므로 이 div요소 외의 다른 요소를 웹묺서에 추가하면 이만큼의 여백을 두고 거리를 떨어뜨리게 됨*/
width: 90px; height: 35px;
/*콘텐츠 영역은 두가지 값으로 크기 조절 width와 height*/
}
span{
width: 100px; height:100px;
/*인라인요소는 border,margin,padding 다 가질 수 있지만 width와 height는 가질 수 없음*/
/*span 태그에 width와 height 지정하려면 display를 인라인 블록으로 바꿔주면 가능*/
display: inline-block;
}
</style>
</head>
<body>
<div>요소의 콘텐츠</div>
<!--body 부분의 위의 코드만 있을떄 개발자도구에서 마우스 갖다대서 하늘색 영역 표시 확인 -> 콘텐츠 영역-->
<span>check</span>
<!--span태그와 div차이 : span 태그가 인라인 요소(인라인 요소에는 width와 height가 지정되지 않는다!) -->
</body>
</html>
<실습결과>

: 여백은 상하좌우 네 개의 면에 존재하는 영역
작성자는 각 면에 개별적으로 두께를 정의 가능
이를 위해 다음 두 가지 방법을 사용
: 여백은 네 면에 모두 존재하므로 여백에는 네 개의 하위 속성이 존재함
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
div{
width: 100px; height: 100px;
padding: 10px;
border: 5px solid red;
margin: 20px;
padding-top: 10px;
padding-right: 20px;
padding-bottom: 30px;
padding-left: 40px;
margin-top: 40px;
margin-right: 30px;
margin-bottom: 20px;
margin-left: 10px;
/* 서로 겹침 => 마지막에 쓴 것 반영*/
}
</style>
</head>
<body>
<div></div>
</body>
</html>
<실습결과>
: 4개의 면에 대한 하위 속성을 포함하는 패딩과 마진은 단축 속성으로서 4개의 면을 한꺼번에 정의하는 역할도 수행 가능
ex.
span{
display: inline-block;
width: 100px; height: 100px;
margin: 10px 20px 30px 40px;
} /* span 태그의 마진 정의를 네개의 수치를 연달아 정의 = 위에는 10px, 오른쪽 20px, 아래 30px, 왼쪽 40px의 마진을 주겠다라는 뜻
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>HTML 문서</title>
<style>
div{
width: 100px; height: 100px;
border: 5px solid red;
margin: 10px; /*4개의 면에 모두 10픽셀의 margin 생김*/
margin: 10px 30px; /*10 px는 상하 여백, 30px은 좌우 여백을 의미*/
margin: 10px 30px 20px; /*10픽셀은 맨위의 마진탑의 경우, 30 픽셀은 좌우, 20픽셀은 마진 바텀*/
margin: 10px 30px 20px 40px; /* 맨위부터 시계방향으로 지정, 위, 오른쪽, 아래, 왼쪽 순*/
}
</style>
</head>
<body>
<div></div>
</body>
</html>
<실습결과>