h1 { color: yellow; font-size:2em; }
h1
{ color: yellow; font-size:2em; }
h1 {
color: yellow;
font-size:2em;
}
/* 주석 내용 */
/*
주석은 여러 줄로도
선언 할 수 있습니다.
*/
<div style="color:red;"> 내용 </div>
<style> 을 활용한 방법<style> div {color: red;} </style>
div {color: red;}
<link>을 이용해서 CSS 파일을 연결<link rel="stylesheet" href="css/style.css">
@import url("css/style.css");
<style> 내부 상단이나 외부 스타일 시트 파일 상단에 선언하는데 성능상 좋지 않아서 거의 쓰이지 않음h1 { color: yellow; }
h2 { color: yellow; }
h3 { color: yellow; }
h4 { color: yellow; }
h5 { color: yellow; }
h6 { color: yellow; }
h1 { color: yellow; font-size: 2em; background-color: gray; }
h1, h2, h3, h4, h5, h6 { color: yellow; }
h1, h2, h3, h4, h5, h6 { color: yellow; font-size: 2em; background-color: gray; }
* { color: yellow; }
한 번의 선언만으로 문서 내에 모든 요소에 스타일 규칙이 적용
전체 선택자는 매우 편리하지만, 성능에 좋지 않으므로 될 수 있으면 사용을 지양
.foo { font-size: 30px; }
<p class="foo"> ... </p>
.foo { font-size: 30px; }
.bar { color: blue; }
<p class="foo bar"> ... </p>
class 속성은 꼭 하나의 값만 가질 수 있는 것은 아님
공백으로 구분하여 여러 개의 class 값을 넣을 수 있음
#bar { background-color: yellow; }
<p id="bar"> ... </p>
/* 요소와 class의 조합 */
p.bar { ... }
/* 다중 class */
.foo.bar { ... }
/* id와 class의 조합 */
#foo.bar { ... }
// 첫 번째는 <p>이면서 class 속성이 있는 요소이면 규칙이 적용
p[class] { color: silver; }
// 두 번째는 <p>이면서 class 속성과 id 속성이 함께 있어야 규칙이 적용
p[class][id] { text-decoration: underline; }
<p class="foo">Hello</p>
<p class="bar">CSS</p>
<p class="baz" id="title">HTML</p>
p[class="foo"] { color: silver; }
p[id="title"] { text-decoration: underline; }
// [class~="bar"] : class 속성의 값이 공백으로 구분한 "bar" 단어가 포함되는 요소 선택
// [class^="bar"] : class 속성의 값이 "bar"로 시작하는 요소 선택
// [class$="bar"] : class 속성의 값이 "bar"로 끝나는 요소 선택
// [class*="bar"] : class 속성의 값이 "bar" 문자가 포함되는 요소 선택
p[class~="color"] { font-style: italic; } /* 1, 2번째 요소 */
p[class^="color"] { font-style: italic; } /* 1, 3번째 요소 */
p[class$="color"] { font-style: italic; } /* 2번째 요소 */
p[class*="color"] { font-style: italic; } /* 1, 2, 3번째 요소 */
<p class="color hot">red</p>
<p class="cool color">blue</p>
<p class="colorful nature">rainbow</p>
div span { color: red; }
<div>의 자손 요소인 <span>를 선택하는 선택자
div > h1 { color: red; }
div>의 자식 요소인 <h1>를 선택하는 선택자
div + p { color: red; }
인접 형제 선택자는 형제 관계이면서 바로 뒤에 인접해 있는 요소를 선택하는 선택자
h1 ~ p { background-color:green; }
<h1>h1</h1>
<p>p</p><!--적용대상-->
<p>p</p><!--적용대상-->
<p>p</p><!--적용대상-->
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JS</li>
</ul>
li:first-child { color: red; }
li:last-child { color: blue; }
a:link { color: blue; }
a:visited { color: gray; }
:focus: 현재 입력 초점을 가진 요소에 적용
:hover: 마우스 포인터가 있는 요소에 적용
:active: 사용자 입력으로 활성화된 요소에 적용
a:focus { background-color: yellow; }
a:hover { font-weight: bold; }
a:active { color: red; }
::pseudo-element {
property: value;
}
:before : 가장 앞에 요소를 삽입
:after : 가장 뒤에 요소를 삽입
:first-line : 요소의 첫 번째 줄에 있는 텍스트
:first-letter : 블록 레벨 요소의 첫 번째 문자
// before와 after 가상 요소는 애초에 내용이 없는 상태로 생성되기 때문에 내용을 넣기 위해 content 속성을 이용해야 함
p::before { content: "###" }
p::after { content: "!!!" }
p::first-line { ... }
p::first-letter { ... }
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
0, 1, 0, 0 : 선택자에 있는 모든 id 속성값
0, 0, 1, 0 : 선택자에 있는 모든 class 속성값, 기타 속성, 가상 클래스
0, 0, 0, 1 : 선택자에 있는 모든 요소, 가상 요소
전체 선택자는 0, 0, 0, 0
조합자는 구체성에 영향 X. (>, + 등)
h1 { ... } /* 0,0,0,1 */
body h1 { ... } /* 0,0,0,2 */
.grape { ... } /* 0,0,1,0 */
*.bright { ... } /* 0,0,1,0 */
p.bright em.dark { ... } /* 0,0,2,2 */
#page { ... } /* 0,1,0,0 */
div#page { ... } /* 0,1,0,1 */
p#page { color: red; }
<p id="page" style="color:blue">Lorem impusm dolor sit.</p>
첫 번째는 0, 1, 0, 1의 구체성을 가지는 선택자로 스타일을 선언
두 번째는 요소에 직접 인라인 스타일 방식으로 스타일을 선언
결과적으로 <p>에는 color: blue가 적용
인라인 스타일의 구체성 값은 1, 0, 0, 0이며 규칙들 중 가장 큰 구체성을 갖기 때문
p#page { color: red !important; }
<p id="page" style="color:blue">Lorem impusm dolor sit.</p>
<em>은 부모인 <h1>의 color: gray를 상속받음h1 { color: gray; }
<h1>Hello, <em>CSS</em></h1>
* { color: red; }
h1#page { color: gray; }
<h1 id="page">Hello, <em>CSS</em></h1>
전체 선택자의 구체성은 0, 0, 0, 0 이며 id 선택자의 구체성은 0,1,0,1
<em>에는 color: red가 적용되는데 그 이유는 바로 상속된 속성은 아무런 구체성을 가지지 못하기 때문
CSS 출처는 제작자와 사용자, 그리고 사용자 에이전트(user agent) 경우로 구분
제작자의 경우는 사이트를 실제 제작하는 개발자가 작성한 CSS를 의미 (대부분이 여기에 해당)
그리고 사용자의 경우는 웹 페이지를 방문하는 일반 사용자들이 작성한 CSS를 의미
마지막으로 사용자 에이전트의 경우는 일반 사용자의 환경, 즉 브라우저에 내장된 CSS를 의미
현재의 브라우저에서는 사용자 스타일을 지원하지 않는 추세
모든 스타일은 아래의 규칙에 따라 단계적으로 적용됩니다.