HTML같은 구조화 된 문서(Document)를 화면, 종이 등에 어떻게 렌더링할 것인지를 정의하기 위한 스타일시트 언어. (마크업 언어인 XHTML, XML 등에도 사용한다.)
HTML 각 요소의 스타일을 정의한다. → 디자인과 레이아웃 등
inline style
: HTML 요소에 CSS를 직접 작성
embedding style
: HTML 문서 내부에 CSS를 포함
link style
: HTML 외부에서 CSS 파일을 로드
inline style
<h1 style="color: red">Hello World</h1>
embedding style
<head>
<style>
h1 { color: red; }
p { background: aqua; }
</style>
</head>
link style
<head>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
특정 요소에 css 속성을 부여하고 싶을 때 selector 사용
추상적 tag <<< class <<< id 구체적
id는 구체적이긴하지만 중복 적용이 어려워서 유지보수가 어렵다.
→ class
를 사용하자.
class나 id는 태그와 결합할 수 있다.
p.p-tag {
color: gray;
}
p#third-line {
text-decoration: underline;
} /* id는 어차피 고유하니까 이건 과한 표현이다 */
.pre span {
background-color: yellow;
}
/* 아래 HTML 예시 */
<span class="pre"> 적용 되지 않는다 !!!!! </span>
<p class="pre">
<span> 이건 적용된다!!!!! 노란색배경! </span>
</p>
/* 폰트 스타일을 지정 - 띄어쓰기 있으면 따옴표로 감싼다. */
#title {
font-family: Georgia, "Times New Roman", Times, serif;
}
/* 폰트 크기를 지정 - px, em, pt 등 여러 단위가 있다. */
.big-size-font {
font-size: 50px;
}
/* 폰트 두께를 지정 - normal은 400, bold는 700이며, 100단위로 900까지 있다. */
.bold-font {
font-weight: bold;
}
/* 글씨 스타일을 바꾸기 */
a {
font-style: italic;
}
/* 글씨색 바꾸기 - 색상 표현은 hex, rgb, hsl 방식이 있다. */
h1 {
color: #eb4639;
}
h1 {
color: rgb(235, 70, 57);
}
h1 {
color: hsl(4, 82%, 57%);
}
<span>
태그는 inline 이어서 text-align
으로 정렬이 되지 않는다./* 텍스트 정렬하기 - <span>은 inline이어서 정렬 불가*/
.left {
text-align: left;
}
.center {
text-align: center;
}
.right {
text-align: right;
}
/* 텍스트 들여쓰기 */
.js-description {
text-indent: 50px;
}
/* html의 blockquote 태그는 기본으로 양쪽 여백을 적용한다. */
- width와 height 프로퍼티를 비롯한
모든 박스모델 관련 프로퍼티(margin, padding, border, box-sizing 등)는 상속되지 않는다.
콘텐츠 영역의 너비와 높이를 지정한다.
→ box-sizing 프로퍼티의 값이 content-box 일때 (기본값)
box-sizing : border-box;
를 적용하면 padding, border를 포함한 영역을 지정한다.
실제 콘텐츠가 더 크면 넘치게 되고 overflow: hidden;
으로 감출 수 있다.
max-width
를 지정하면 브라우저의 너비가 작아졌을때 요소 너비도 작아진다.
auto
를 설정하면 중앙에 위치 시킬 수 있다.border-style
: 테두리 모양 지정
border-width
: 테두리 두께 지정
border-color
-> border-style
과 함께 사용해야 적용된다.
border
로 한번에 설정하기
/* border-width border-style border-color */
p { border: 5px solid red; }
border-radius
: 테두리를 둥글게 표현
→ 원형으로 만들때는 값을 50%
로 지정
width, height 프로퍼티의 대상 영역을 변경할 수 있다.
→ CSS Layout을 직관적으로 사용할 수 있다.
box-sizing: content-box
; (기본값)
→ width, height 값은 content 영역을 의미한다. (padding, border 미포함)
box-sizing: border-box;
→ width, height 값은 content + padding + border 까지 모두 포함
* {
box-sizing: border-box;
}
스타일이 상속되어 자식에게도 같은 스타일이 적용된다.
본인 속성을 갖고 있다면 부모 속성보다 본인의 스타일이 우선한다.
.what-is-blockquote, span {
color: green;
}
대부분의 HTML 요소는 block 요소이다.
block 요소는 옆에 다른 요소가 붙을 수 없다. <p>
, <div>
, <li>
등 대부분
→ <div>
의 width는 항상 100% 이다.
→ height는 내용의 크기 혹은 자식 태그 내용의 세로 크기에 의해 결정된다.
inline 요소는 서로 한 줄에, 옆에 붙을 수 있다. <span>
, <a>
, <img>
등
.inline-p {
display: inline-block;
}
.float-left {
float: left;
}
.float-right {
float: right;
}
.block-span {
display: block;
}
.hide {
display: none;
}
/* 요소를 보이게or안 보이게 할 수 있다.
ex) JavaScript를 이용해 display: block; 으로 바꾸는 등 */
<div>
에 width 값을 주면 길이가 정해진다.
→ 이때 margin 값을 auto
로 설정하면 요소가 가로 중앙에 온다.
.has-width {
width: 150px;
}
.center {
margin: 20px auto; /* 위아래 마진 20, 좌우 마진 auto */
}
/* HTML */
<div class="has-width center">너비 값을 주고 중앙으로 보내기</div>