지난 시간엔 데이터를 구조화하는 방식인 HTML에 배웠다. 어렵진 않지만, 최종 목표는 정적인 문서에 디자인과 동적인 기능들을 구현해야 한다.
따라서 오늘부터 시각적 요소를 구현하는 CSS에 대해서 배워보자.
HTML : 단순 Element의 구조적 나열
CSS : 나열된 Element의 LayOut 및 디자인
HTML 내부에서 속성, 값으로 디자인을 하는 건, 정말 필요한 상황이 아니고선 이젠 사용하지 않는 방식이다.
요즘은 CSS를 통해 디자인하는데, “Cascading”의 의미대로 CSS는 시트 설정에 따라 연속적으로 모든 요소를 한다.
CSS를 사용하는 방법은 크게 3가지가 있다.
style
을 적용하는 방식으로 라인 안에 사용한다.<div style="border: 1px; border-color: black; border-style: solid;">
</div>
<head>
내부에 <style>
영역을 만들어서 스타일을 적용하는 방식<head>
#div1 {
border: 1px solid coral;
}
</head>
HTML 요소를 통해 문서의 구조를 만들어 낸다. 이렇게 만들어진 구조는 뼈대 자체로서 존재할 뿐, 미적인 요소와 체계는 분배되지 않았다. 따라서 우린 CSS를 통해 요소에 디자인을 부여한다.
이때, 수많은 요소 중 디자인을 부여할 대상을 고르는, 예를 들어 도배할 벽을 고르기 위해 사용되는 것이 바로 ‘Selector’이다. 그리 어려운 개념은 아니지만, 선택자의 종류가 굉장히 많기에 주의해야 한다.
div { border: 10px, solid, red; } div태그에 모두 적용
id=“name”
라는 속성을 이용하여 식별된 요소들에 적용한다.#div1 { border: 1px solid coral; }
#div2 { border: 1px dotted darkgoldenrod; }
.클래스명
으로 사용한다.1. 기본
.fruits{ background-color: pink; }
2. 같은 클래스, 다른 요소들에 사용할 때
div.test {} "div 태그를 가진, test 클래스에게"
3. 전혀 다른 요소에 같은 스타일을 줄 때
div.test, button.test2{
color: green;
}
>.
#refrigerator>.fruits { background-color: aqua }
#table .fruits {
background-color: yellow;
}
tag ,ID, Class or null
+ [속성과 그 값]1. 기존
input[type=button] {
color: red;
}
응용 1 : 속성값이 특정하게 시작할 때 ( ^= )
input[type^=te] {
color: red;
}
응용 2 : 속성값이 특정하게 끝날 때 ( $= )
input[type$=on] {
color: blue;
}
응용 3 : 속성값이 특정글자를 포함할 때 ( *= )
input[value*=tt] {
color: blue;
}
예제
<div>
<h4>자손 1</h4>
<h5>자손 2</h5>
<p>자손 3</p>
<p>자손 4</p>
<p>자손 5</p>
</div>
1. 단일
h4+h5{} → 자손 2 선택
2. 다중
h4~p{ color: red; }
→ 자손 3, 4, 5 선택
div:hover
: 마우스를 올렸을 때.div:active
: 클릭을 하고 있는 동안에-child
가 있고, of-type
가 있다.-child
: 대상 태그와 n번째가 일치할 때만 적용of-child
: 대상 태그 중에서 n번째1. first, last, nth()
div p:first-child{
color: pink;
}
→ div 태그의 첫 번째 요소가 p일 때만 적용
2. first, last, nth() -of-type
div p:nth-of-type(3){
color: green;
}
→ div 태그 안에 3번째 p에 적용
p:first-of-type(1){
color: green;
}
→ 첫 번째 p에 적용
!important
을 사용 시, 제일 높은 우선 순위를 가진다. *{ color: cornflowerblue; }