CSS
CSS
-
HTML 문서를 꾸밀때 사용하는 언어
-
기본적인 사용 방법
- css 파일에는
@charset "utf-8";
작성해두는게 좋음.(혹시모르는 영어가 아닌 다른 문자 포함될 시 적용 안될 수 있음.)
- css 파일에는
<link rel="stylesheet" href="경로">
/* 또는*/
<style>
@import url(style.css);
</style>
select{
color : red;
}
CSS 선택자
CSS 는 상속개념이있음. 만약 body 태그를 선택해서 특정값을 지정하면 body 에 존재하는 모든 요소들은 영향을 받음.
*
: 모든 요소를 선택- id 선택자 : 한페이지에 무조건 동일한 id은 단 하나만 선언 가능 ` #idname `
- class 선택자 : 한페이지에 같은 클래스 이름을 가진 요소 2개이상 선언 가능
.classname
- type 선택자 : 특정 태그 선택 시 사용
p
- 그룹 선택자 : 다수의 태그를 선택할 때 사용 ` , `
- 자식 선택자 : 계층구조 안 바로 아래에 오는 자식요소 선택 ` header > h1 `
- 자손 선택자 : 계층구조에서 하위에 오는 모든 자손요소 선택 ` header p`
- 인접형제 선택자 : 계층구조 하위에 나오는 다음 인접한 요소 선택 ` .list li + li `
- 속성 선택자 : 특정 태그의 속성(
<a href="#" title="tit">
) 을 선택a[title]
=
: 특정값과 동일한지 비교 후 선택하는 옵션href = "#"
^=
: ~로 시작하는 태그만 선택하는 옵션href ^= "g"
$=
: ~로 종료하는 태그만 선택하는 옵션href $= ".pdf"
~=
: 해당하는 단어 포함하는 태그 선택title ~= and
*=
: 해당하는 문자 포함하는 태그 선택title *= a
:link
: 선택 시 이동되는 주소가 포함되어있는 태그 선택:visited
: 주소에 다녀온 뒤 상태 설정:hover
: 마우스 오버시 상태:active
: 누른 뒤 상태:focus
: tab 키 로 포커스가 선택되었을때 상태 설정:first-line
: 항상 첫줄만 선택:first-letter
: 첫번째 글자만 선택:before
: 해당 태그의 컨텐츠가 시작하기 전:after
: 해당 태그의 컨텐츠가 시작 후
* {
font-size: 10px;
}
.class {
font-size : 30px;
}
#id{
background-color: aqua;
}
h1, p{
color: rgba(255,0,0,0.3);
}
.list li+li {
background-color: lightblue;
}
a[title]{
background-color: pink;
}
a[href = "#"]{
background-color:black;
color : yellow;
}
a[href ^= "g"]{
background-color:white;
color : red;
}
a[href $= '.pdf']{
background-color: yellow;
}
a[title ~= 'and']{
font-size : 100px;
}
a[title *= 't']{
color: aqua;
}
<header>
<h1>CSS Selector</h1>
<p>CSS basic</p>
<p class="class">class</p>
<h2 class="class">class</h2>
<p id="id">id</p>
<ol class="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ol>
<ul>
<li>
<a href="google.con">test</a>
<a href="#" title="a">test</a>
<a href="#">test</a>
</li>
</ul>
</header>
우선순위
- inline style (1000) > ID,Class,tag 를 한꺼번에 선택한 선택자(111) > ID(100) > 클래스(10) > 태그(1)
우선순위가 같으면 먼저 나중에 작성한 css가 적용됨.
!important
는 무조건 적용되는 값
font
font-size, font-family 는 사이트 작성 시 기본값으로 설정 후 시작
- font-style
- serif : 명조
- sans-serif : 고딕
- cursive : 필기
- monospace : 고정폭
- font-size
- px 로 기본값 정한 뒤 em(배수) 값으로 세밀히 지정함.
- font-variant : small-caps
- 소문자의 문자를 크기는 동일하게 대문자의 형태로 변경하는것.
- Letter-spacing
- 글자간 간격
- line-height : 배수;
- 문자 열의 간격이 벌어지는 정도
-
text-align : left center right justify - 문자열 정렬
- text-indent : 배수;
- 들여쓰기
-
text-transform : uppercase lowercase capitalize - 대소문자 지정
-
vertical-align : top middle baseline bottom - 위아래 정렬, 픽셀값을 줄수도있음.
- white-space: nowrap;
- 줄바꿈 설정
- word-spacing : 배수;
- 단어와 단어 사이의 간격
구글웹폰트 적용하기
- webfont
- Googlefonts
- 원하는 특정 굵기,font 선택
- link 또는 import 예시값 가져오기
- style 적용
박스모델
요소의 형태를 지정할때 사용됨.
- border : px, 선의 형태, 색상 = 박스모델에 선을 지정할때 사용
- padding = border 와 본문 사이에 있는 공간
- margin = border 기준으로 바깥 공간
- width, height : 컨텐츠의 크기
.box{
width: 600px;
margin : 30px;
background-color: lime;
}
.box2{
border: 5px solid black;
padding : 20px;
}
.box3{
box-sizing: border-box;
}
<div class="box">content</div>
<div class="box box2">content</div>
<div class="box box2 box3">content</div>
동일한 크기의 박스모델에 컨텐츠의 크기를 지정 후 padding, border 등의 값을 추가적으로 설정 시 컨텐츠 외의 값이기때문에 부가적인 크기 부여가 됨. 그런 경우 box-sizing 옵션을 부여하면 컨텐츠 안에 border와 padding 값이 모두 부여되서 보여짐.
- padding
패딩 또는 마진의 값은 1개부터 4개까지 적용 가능함. 1개는 동서남북 모두 적용 , 2개는 첫번째 부터 북남,동서 적용, 3개는 북,동서,남 으로 지정, 4개는 북동남서 로 적용됨.
.box{ padding: 100px; /*4방향 모두적용*/ padding: 100px 50px; /*2방향씩 그룹 적용(top|bottom , right|left)*/ padding: 100px 10px 50px; /*3방향 적용(top, right|left, bottom)*/ padding: 100px 10px 50px 0px; /*4방향 적용(top, right, bottom, left)*/ }
- margin
margin 값이 위아래가 동일할 경우 겹쳐서 30만 나올수도있음, display의 속성이 inline 일 경우 패딩은 겹쳐지고, 마진은 좌우만 표현됨
- margin : 0 auto 로 지정 시 좌우 가운대 정렬이 됨.
float
- 지정값에 따라 왼쪽 오른쪽에 해당모델이 위치하게됨. 지정 시 다음 컨텐츠의 값이 바로 위치하게 됨.
img 태그는 vertical-align top 을성정해야 남는 공백이 없어짐.
float : left | right;
- 해지하기
float 해제 시 감싸고있는 태그의 가장 뒤쪽에 float 해지값을 써야함.
.thumb{
float: left;
border: 3px solid black;
}
/*해지하는 코드*/
.wrap:after{
content: '';
display: block;
clear: both;
}
/*IE6 , IE7 의 경우 float 값을 인식하지 못하므로, zoom 옵션을 통해 해지함.*/
.wrap{
*zoom : 1;
}
/*overflow 옵션을 사용해 영역에서 넘치는 부분을 감추는 방법도 있으나, 영역 밖에 위치한것들이 모두 안보이므로 사용 시 주의*/
.wrap{
width: 800px;
/*영역에서 넘치는 부분*/
overflow: hidden;
margin: 0 auto;
border: 3px dashed red;
*zoom: 1; /* IE, Chrome 전용*/
}
position
element 를 배치하는 방법을 지정하는 속성, static relative absolute fixed sticky 5가지의 속성이 존재함.
- static
- position 값을 지정하지 않았을 때 기본으로 적용되는 값
- 위치지정(top,right,bottom,z-index) 속성 효과를 받지못함.
- relative
- 일반적인 흐름에 따라 배치가 되는 값
- 위치지정 속성에 의한 상대적인 위치에 배치됨
- 다른 요소들의 위치에 영향을 주지않는 특성을 가짐
- fixed
- 뷰포트를 기준으로 위치를 설정하는 방식
- 웹페이지가 스크롤 되어도 고정위치로 지정된 요소는 항상 같은곳에 위치함.
- absolute
- 가장 가까운 위치에 있는 조상에 대해 상대적위치로 배치 됨.
- 조상이 없으면 body 기준으로 삼고 페이지 스크롤에 따라 움직임.
- z-index 속성
HTML 요소의 위치를 설정 하면 요소들은 설정된 위치 및 방식에 따라 서로 겹칠 수 있음. z-index 속성은 이렇게 겹쳐지는 요소들이 쌓이는 스택(stack)의 순서를 설정함. 스택의 순서는 음수,양수 모두 설정 가능하고, 크기가 클수록 앞쪽에 위치, 작을수록 뒤쪽에 위치함.
- position 을 이용해 컨텐츠 중앙 지정하기
- absolute 이용
.content{ position: absolute; width: 800px; height: 400px; background-color: khaki; left: 50%; top: 50%; margin-left: -400px; margin-top: -200px; }
- relative 를 이용한 컨텐츠 중앙 지정
*{ margin: 0px; padding: 0px; } html, body{ width: 100%; height: 100%; } .content{ position: relative; left: 50%; top: 50%; width: 800px; height: 400px; background-color: khaki; margin-left: -400px; margin-top: -200px; }
- 크기가 없는 콘텐츠의 중앙 정렬
.content{ position: absolute; left: 100px; right: 100px; top: 100px; bottom: 100px; background-color: khaki; }
- absolute 이용