HTML로 구성된 페이지 골격에 디자인을 입히는 언어
※ 표 컬러 코드 = #b3f2df
서술 방법
(1) HTML 문서에 의존한다. (특정 HTML에서만 유효)
1 2 3 4 5 | <head> <style [type="text/css"]> ... CSS 구문 ... </style> </head> |
(2) CSS 구문만을 별도로 저장한 외부파일을 참조.
파일명 : hello.css
css 구문을 위 파일명으로된 css 파일에 저장
1 | <link rel = "stylesheet" [type="text/css"] href="hello.css" /> | cs |
(3) HTMl 태그의 style 속성을 활용
거의 사용 안함.
1 | <div style="CSS구문"></div> | cs |
selector
CSS가 적용될 대상을 지정하는 방법
1. 태그이름 -> ex) h1 { color: red; }
2. class : 앞에 점을 포함한 단어명시 (단어는 직접 네이밍)
HTML 태그에 class 속성으로 단어를 연결 (이때는 점은 제외)
- 태그 종류에 상관없이 여러번 재사용 가능
1 2 3 | .hello { color: red; } | cs |
1 | <div class="hello"></div> | cs |
3. id : 앞에 #을 포함한 단어를 명시 (단어는 직접 네이밍)
HTML 태그에 id 속성으로 단어를 연결 (이때는 #은 제외)
- 하나의 HTML 문서 안에서 다른 요소와 중복될 수 없다.
1 2 3 | #hello { color: red; } | cs |
1 | <div id="hello"></div> | cs |
selector 조합하기
1) 구체적으로 서술하기
div.hello div#hello (띄어쓰기 X) |
2) 쉼표로 구분하기 (and의 의미)
3) 가상클래스
HTML 요소가 어떤 상황을 직면했을 때 적용되는 selector (~~할 때)
a:link { 글자 모양 } <---- 링크에 대한 기본 글자 모양을 적용
a:visited { 글자 모양 }
a:hover { 글자 모양 }
a:active { 글자 모양 }
selector 조합하기 (2)
자식셀렉터
HTML의 계층구조를 순차적으로 ">"를 사용하여 표현한 것.
div > span > input.from_control
1 2 3 | <div> <span><input class="form_control" /></span> </div> | cs |
자손셀렉터
1 2 3 4 5 | <div> ... ? ... <span> ... ? ... <input class="form_control" /> ... ? ... </span> ... ? ... </div> | cs |
속성셀렉터
셀렉터 |
설명 |
a[href] |
href라는 속성을 갖는 a태그(값은 상관 없음) |
a[href="#"] |
href속성값이 "#"인 a태그 (값이 반드시 일치해야 함) |
#hello[method="post"] |
method속성의 값이 post인, id값이 hello인 어떤 태그 |
.choose[value="123"] |
value속성의 값이 123인, class값이 choose인 어떤 태그 |
nth-child
셀렉터 |
설명 |
foo:nth-child(2) |
foo라는 셀렉터를 갖는 요소 중에서 2번째 |
foo:nth-child(odd) |
홀수번째 |
foo:nth-child(2n) |
짝수번째 |
foo:nth-child(3n) |
3의 배수 번째 |
foo:nth-last-child(숫자) |
nth-child와 같은 규칙이지만 뒤에서부터 요소를 카운트 |
foo:first-child |
foo라는 셀렉터를 갖는 요소들 중에서 첫 번째 |
foo:last-child |
foo라는 셀렉터를 갖는 요소들 중에서 마지막 항목 |
CSS 구체성 단위
글자 모양 관련 속성
속성 |
설명 |
font-family |
글꼴의 이름을 쉼표로 구분하여 나열. |
font-size |
글자크기 (px단위를 주로 사용함) |
font-style |
글자의 기울임 여부 --> italic, normal(기본값) |
font-weight |
글자의 굵게 표현 여부 -->bold, normal(기본값) |
color |
글자 색상 |
line-height |
한 줄의 높이 (px, %단위 표현) --> % 단위인 경우 font-size를 기준으로 함 |
font |
일괄표현 --> [style][weight] size[/line-height] family |
웹 폰트
구글 웹 폰트 (https://fonts.google.com)
문단 관련 속성
속성 |
설명 |
값 |
text-align |
텍스트의 가로축 정렬 |
left, center, right |
text-indent |
첫 번째 줄에 대한 들여쓰기 |
px단위 값 |
text-decoration |
밑줄, 윗줄, 취소선, 깜박임 효과 |
none(기본값), underline, over-line, line-through, blink |
vertical-align |
어떠한 요소를 기준으로 한 세로축 위치 |
top, middle, bottom |
letter-spacing |
글자간의 간격 (자간) |
px단위 값 |
word-spacing |
단어간의 간격 (어간) |
px단위 값 |
white-space |
줄 바꿈 속성 제어 |
normal, nowrap |
- vertical-align: ~~을 기준으로 텍스트를 배치해야 하기 때문에 텍스트 주변의 이미지나 input 요소에게 부여해야 한다
- text-decoration: blink 속성은 모든 브라우저에서 지원되지는 않는다.
- white-space : normal인 경우 공백을 기준으로 줄 바꿈이 되므로 공백이 없다면 줄바꿈 처리되지 않는다.
- word-wrap : break-word 속성과 함께 사용하여 글자 단위로 무조건 줄바꿈 처리하도록 설정할 수 있다.
텍스트 자동 말줄임 처리
텍스트 그림자 효과
- x-offset : 본체와 그림자의 가로축 거리 (px 단위) + 값인 경우 오른쪽 방향
- y-offset : 본체와 그림자의 세로축 거리 (px 단위) + 값인 경우 아래 방향
- blur-radius : 그림자의 번짐 정도 (px단위)
- color : 그림자의 색상
x-offset y-offset blur-radius color,
x-offset y-offset blur-radius color; <-- 맨 밑의 레이어
박스모델
박스라 함은 block-level 요소를 의미하는 것으로 가장 대표적인 요소에는 <div>가 있다.
박스의 크기를 구성하는 기본 속성
속성 |
설명 |
값 |
width |
내용 영역의 가로 폭 |
px단위, %단위 |
height |
내용 영역의 세로 높이 |
px단위, %단위 |
border |
박스의 테두리 |
굵기 종류 색상 |
padding |
테두리와 내용영역 사이의 여백 |
여백 사이즈에 대한 px단위 |
- border 속성에서의 종류값
- none : 투명
- solid : 직선
- dotted : 점선
- dashed : 끊긴선
- border 값의 세분화
- 위치에 따른 구분 : border-top, border-left, border-bottom, border-right
- 속성에 따른 구분 : border-width, border-color, border-style
- padding 값의 설정
- 하나의 값 : 상,하/좌,우 모두 같은 값이 부여된다.
- 두 개의 값: 첫 번째 값은 상,하를 의미. 두 번째 값은 좌,우를 의미한다.
- 네 개의 값: 상단부터 시게방향으로 회전하면서 부여된다.
박스의 크기는 관련 속성들의 총합으로 이루어 진다.
테두리와 여백은 내용영역(width, height)의 크기 바깥으로 형성된다.
- 가로 : border-left + padding-left + width + padding-right + border-right
- 세로 : border-top + padding-top + height + padding-bottom + border-bottom
중첩 관계에서의 박스 크기
auto 값의 사용
- 부모 요소의 width에서 현재 자신의 padding, border 크기를 뺀 나머지를 자동으로 계산하여 갖는다.
- 실질적인 100% 처리 효과
- 자신이 포함하고 있는 내용만큼 높이를 구성한다. (박스의 기본특성)
화면을 가득 채우는 박스 만들기
body { padding: 0; margin: 0; } | cs |
html, body { width: 100%; height: 100% } | cs |
overflow 속성
속성 |
설명 |
visible |
기본값. 벗어나는 내용이 부모 요소를 벗어나도록 그대로 둔다. |
scroll |
벗어나는 내용에 대하여 스크롤 처리하낟. 이 속성이 부여되면 부모 요소는 항상 스크롤바의 트랙을 표시한다. |
hidden |
벗어나는 내용에 대하여 화면에 표시되지 않도록 잘라낸다. |
auto |
내용이 벗어나지 않을 경우에는 박스의 기본 모양대로 표시되지만, 내용이 벗어날 경우에는 scroll처리 된다. |
- overflow 속성은 x축, y축을 모두 처리한다.
가로 혹은 세로 방향만 처리하고자 하는 경우 overflow-x, overflow-y 속성을 사용할 수 있다.
박스의 가변 크기 지정
속성 |
설명 |
min-width |
최소 넓이 지정. 내용이 없더라도 이 속성이 지정한 만큼 넓이가 보장된다. |
max-width |
최대 넓이 지정. 이 속성의 값 이상 커지지 않는다. |
min-height |
최소 높이 지정 |
max-height |
최대 높이 지정 |
박스 그림자 효과
- x-offset : 본체와 그림자의 가로축 거리 (px단위)
- y-offset : 본체와 그림자의 세로축 거리 (px단위)
- blur-radius : 그림자의 번짐 정도 (px단위)
- color : 그림자의 색상 ( #ff00ff 방식 혹은 rgba(0~255, 0~255, 0~255, 0~1) 방식 )
inset이 없는 경우
그림자가 박스의 뒤에 생성된다. (DropShadow 효과)
- x-offset : + 값인 경우 박스의 오른쪽에 생성된다.
- y-offset : + 값인 경우 박스의 아래쪽에 생성된다.
inset이 적용된 경우
그림자가 박스의 안쪽으로 생성된다. (InnerShadow 효과)
- x-offset : + 값인 경우 박스의 왼쪽에 생성된다.
- y-offset : + 값인 경우 박스의 위쪽에 생성된다.
박스의 위치
- 바깥 여백을 의미
- 벽을 밀어서 자신이 이동하거나 주변의 다른 요소를 밀어내는 효과
- 서로 마주보고 작용하는 margin은 겹침 현상 발생
- 음수 값을 지정할 경우 반대 방향으로 힘이 작용(끌어당김)
- 값을 하나만 지정할 경우 : 상, 하 , 좌, 우 모두 동일
- 값을 두 개 지정할 경우 : 상/하, 좌/우
- 값을 네 개 지정할 경우 : 상단부터 시계방향 회전
속성 |
설명 |
margin-left : auto |
박스가 부모의 오른쪽에 배치된다. |
margin-right: auto |
박스가 부모의 왼쪽에 배치된다. (기본값) |
left와 right에 모두 auto 적용 |
박스가 부모의 가운데 배치된다. |
margin: auto |
값이 하나인 경우 상, 하, 좌, 우 모두 적용되지만 auto는 상, 하에 대해서는 동작하지 않기 때문에 left, right에만 부여한 것과 동일하게 작용한다. |
display 속성
block-level과 inline-level의 특징을 결정짓는 속성
1) display: block;
- Block-Level 요소의 기본 값.
- 어떤 요소를 문단처럼 구성할 수 있도록 한다. (줄바꿈)
- width, height가 적용된다.
2) display: inline;
- Inline-Level 요소의 기본 값.
- 어떤 요소를 문장처럼 구성할 수 있도록 한다. (줄바꿈 안함)
- width, height를 적용할 수 없다.
3) display: inline-block;
- 크기 지정이 가능한 문장요소
4) display: none;
- 어떤 요소를 화면 표시하지 않도록 숨긴다.
응용1 : 링크의 영역을 확장하기
1. <a> 태그에게 width, height를 부여하면 그 만큼 클릭 가능한 영역이 확장
2. <a> 태그가 inline-level이므로 display속성을 block으로 지정해야만 처리가 가능.
응용2 : 목록정의 요소
float 속성
박스를 부모의 왼쪽이나 오른쪽에 고정시키고 문장을 그 옆으로 흐르도록 하기 위한 속성
적용가능한 값
- left(왼쪽), right(오른쪽), none(해제), inherit(부모값 상속)
제약사항
- 새로운 문단을 시작하기 위해서는 이전 float를 off시켜야 한다.
- 부모요소가 float가 적용된 자식요소를 감싸지 못한다.
해결책
- 이전 float 속성을 해제. (마감제)
- 부모요소가 끝나기 전(혹은 새로운 문단이 시작하기 전) float: none; clear: both가 적용된 Block-Level요소를 배치.
특성
두 개 이상의 Block-Level요소에게 float를 연속적으로 적용하면 박스의 배치 효과
레이아웃 구성하기
사이트의 전체 넓이와 정렬을 구성하기 위한 <div> 태그 안에 각 영역을 구성하기 위한 <div> 태그를 배치하고,
float 속성을 사용하여 각 영역을 배치하는 처리
3단 레이아웃
<div id="container"> <div id="header">상단영역</div> <div id="content">내용영역</div> <div id="footer">하단영역</div> </div> | cs |
#container에 넓이와 margin 속성을 사용하여 정렬을 구성
#header, #footer에 각 영역에 대한 height 지정 (고정높이)
#content 영역은 내용에 따라 높이가 변경되어야 하므로 min-height 지정 (가변높이)
사이드바 구성
<div id="container"> <div id="header">상단영역</div> <div id="content"> <div id="sidebar">사이드바</div> <div id="body">내용영역</div> </div> <div id="footer">하단영역</div></div> cs
#container에 넓이와 margin 속성을 사용하여 정렬을 구성
#header, #footer에 각 영역에 대한 height 지정 (고정높이)
#content 영역은 내용에 따라 높이가 변경되어야 하므로 min-height 지정 (가변높이)
<div id="container"> <div id="header">상단영역</div> <div id="content"> <div id="sidebar">사이드바</div> <div id="body">내용영역</div> </div> <div id="footer">하단영역</div> </div> | cs |
- 3단 레이아웃 상태에서 #content에 사이드바와 본문영역을 위한 <div>를 추가
- #sidebar와 #body를 float 속성을 사용하여 가로 배치
Position 속성
- 요소의 배치 방법을 결정하는 속성
- relative(상대좌표), absolute(절대좌표), fixed(고정좌표)
- 좌표설정
- position이 부여된 상태에서 요소의 좌표를 설정할 수 있다.
- 사용속성: left, top, right, bottom
- 각 속성에 px이나 %단위로 수치값 부여.
- relative, absolute에 따라 좌표의 기준 선정 방식이 변경된다.
relative
요소의 원래 위치를 기준으로 좌표가 설정된다.
absolute
1. 브라우저의 끝을 기준으로 좌표가 설정된다.
2. 부모요소에게 position 속성이 relative나 absolute로 지정된 경우 부모를 기준으로 좌표가 설정된다.
fixed의 특성
1. 기본적으로 absolute와 동일.
2. 스크롤이 이동하더라도 요소의 위치가 화면상에 고정되어 있다.
z-index
position 속성으로 인해 요소가 화면상에서 겹치는 경우 z-index 속성에 부여된 값의 크기를 비교해서 순서가 결정된다.
(값이 클 수록 위에 배치된다)
배경관련 기본 속성
속성 |
설명 |
background-color |
배경색상 지정 |
background-image |
배경이미지. url("파일경로"); 외부 css파일에서 명시할 경우 파일 경로는 html기준이 아닌 css파일 기준이 된다. |
background-repeat |
배경이미지 반복 설정 repeat, repeat-x, repeat-y, no-repeat |
background-attachment |
스크롤에 따른 배경 이미지 처리 scroll, fixed |
background-position |
배경이미지 위치. left, right, top, bottom, center, px값 가로와 세로를 공백으로 구분하여 지정 |
background |
위의 다섯가지 속성을 공백으로 구분하여 일괄 명시. 불필요한 요소는 생략 가능 |
배경관련 속성 활용
- 이미지에 텍스트가 포함된 경우
- 원본 텍스트를 HTML안에 명시
- 이미지는 그 안에 배경으로 설정
- 원본 텍스트를 text-indent 속성으로 화면에서 멀리 떨어지게 설정.
- 이미지 클립핑
- 아이콘, 버튼 등의 이미지를 하나의 이미지 파일에 모두 모아 놓기.
- 표시할 항목의 크기와 동일한 박스를 준비. 그 안에 배경이미지로 설정.
- background-position 속성으로 이미지를 표시하고자 하는 위치까지 이동.
background-size
- px단위 값: 배경이미지의 크기를 절대값으로 설정
- %단위 값: 자신이 표시될 박스 크기에 기준하여 백분율로 설정
- cover: 가로우선
- contain: 세로우선
background 속성의 중첩 사용
- 콤마(,)로 구분하여 여러 겹의 배경을 지정할 수 있음.
- 마지막에 명시된 항목이 가장 뒤에 배치된다.
그라디언트 색상 처리
webkit 계열 브라우저의 경우 (Chrome Browser -> CSS3 Generate)
mozila 계열 브라우저의 경우
'Frontend > CSS' 카테고리의 다른 글
CSS 기본 배경 잡을 때 (0) | 2019.01.16 |
---|---|
스마일 코드 (0) | 2019.01.16 |
자동 줄 바꿈 처리 (0) | 2019.01.15 |
CSS로 탭 메뉴 만들기 (0) | 2019.01.15 |
active 샘플 (0) | 2019.01.15 |