css
CSS selector 선택자
전체 선택자
- 모든 요소를 선택하는 방법으로 “*“를 선택자로 선언한다
- 유니버설 선택자
{ margin:0; padding:0; }
요소(element) 선택자
- HTML요소를 선택하는 방법
- type선택자, 태그 선택자
- h1, p, div등
div {margin:0;padding:0;}
p {color:#333:front-weight:bold;text-decoration:underline;}
클래스(class), 아이디(id) 선택자
- XHTML요소에 class나 id속성을 부여한 경우 해당 class명이나 id명으로 접근하여 선택
- class명은 여러 번 사용할 수 있기 때문에 여러가지 요소들을 한꺼번에 선택하여 스타일을 지정할때 사용
- 특정 id값을 가지고 있는 유일한 요소에 접근하여 스타일을 지정할 때는 id선택자 형식을 사용
클래스(class)선택자
.box {font-size:14px;color:#fff;background-color:#000;}
.ti {font-size:20px;font-weight:normal;letter-spacing:10px;}
아이디(id)선택자
#box {font-size:14px;color:#fff;background-color:#000;}
#ti {font-size:20px;font-weight:normal;letter-spacing:10px;}
선택자 연습 - 소스코드
<style type="text/css">
/* css 주석 */
/* *{ color: red; } */
</style>
<div>div 요소</div>
<style type="text/css">
/*요소 선택자*/
p{ color: blue; }
strong{ color: yellow; }
</style>
<p>문단<p>
<strong>강조글</strong>
<p>문단2</p>
<style type="text/css">
/*class, id 선택자*/
#b1{ color:pink; }
.a2{ color:green; }
</style>
<div id="b1"> div1 </div>
<div class="a2"> div2 </div>
<div class="a2"> div3 </div>
<div class="a2"> div4 </div>
<style type="text/css">
#div1{ border: solid 1px #000; }
</style>
<div id="div1"> class는 중복가능, id는 불가능 </div>
가상요소(element) 선택자
- 실제로 존재하지 않는 요소를 마치 존재하는 것처럼(가상) 이용하는 방법
- 콘텐츠 영역의 앞, 뒤에 가상 콘텐츠 추가
- :before, :after, :first-line, :first-letter,
:first-line
- 요소의 첫번째 줄에 있는 콘텐츠만 선택하여 스타일을 지정
- 크기에 따라 유동적
:first-letter
- 요소의 첫 글자만 선택하여 스타일을 지정
<style type="text/css">
#p_con1:first-line {color:red;}
#p_con1:first-letter {color:blue;font-size:30px;}
</style>
<p id="p_con1">문단은 전체 문장에서 의미별로 단락을 나눌때 사용됩니다. 문단에서 가상선택자를 사용하여, 첫글자를 선택하거나 첫줄을 선택하여 스타일시트를 지정할 수 있습니다.</p>
- inline형 태그에서 first-line과 first-letter가 적용되지 않음
- block형 태그에서만 적용됨.
:before, :after
- 가상의 콘탠츠를 이전이나 이후에 추가할 수 있는 선택자
- content속성에 원하는 문자열을 지정
- 스타일을 위해서 사용. 문서에 내용을 추가하는 요소로 사용하지 않도록 주의
<style type="text/css">
#p_con2:before {content:"시작";color:#ff00ff;display:inline;}
#p_con2:after {content:"끝";color:#ff00ff;display:inline;}
</style>
<p id="p_con2"> 시작과 끝에 특정 콘텐츠를 추가합니다. 문서에 내용을 추가하는 요소로 사용하지 마세요. </p>
가상클래스 선택자
- 실제로 존재하지 않는 요소(클래스)를 마치 존재하는 것처럼(가상) 이용하는 방법
- 상황에 따라 구분
- :first-child, :link, :visited, :hover, :active, :focus
:first-child , :last-child, :nth-child(n)
- 첫번째 자식(child)요소에만 스타일을 적용할 수 있는 선택자
- 두번째 자식요소부터는 스타일이 적용되지 않음
<style type="text/css">
.con:first-child{ color:red; }
.con:last-child{color:olive; }
</style>
<div>
<div class="con">content1</div>
<div class="con">content2</div>
<div class="con">content3</div>
</div>
:link, :visited, :hover, :active, :focus
- :link 방문하지 않은 링크
- :visited 방문한 링크
- :hover 마우스 오버
- :active 활성화
- :focus 포커스가 생긴 경우
<style type="text/css">
.anchor1:link{color:#ff0000;}
.anchor1:visited{color:#ffff00;}
.anchor1:hover{color:#ff00ff;}
.anchor1:active{color:#00ffff;}
.anchor1:focus{color:#000000;}
</style>
<a class="anchor1" href="http://www.google.com">구글링크</a>
- chrome 60.0.3112.113~61버전에서 마우스 active시 focus되어 검은색으로 글씨 표시
- 60.0.3112.113 (2017.09.25 최신버전) 하늘색으로 active가 잘 나오는 경우도 있음
- 몇몇 브라우저, 버전에서 active 대신 focus로 적용되는 경우가 있음
- safari 에서 active로 표시됨
- 최신 크롬, 익스, 엣지 focus로 표시됨
선택자 조합
하위 선택자
- 상위 요소가 포함하고 있는 모든 하위 요소에 스타일을 지정할때
- 선택자와 선택자를 공백( )으로 구분하여 선언
<style type="text/css">
.con1 span{color:red;}
</style>
<div class="con1">
<span>content1</span><br />
<span>content2</span><br />
<div>content3<br />
<span>content3_1</span><br />
<span>content3_2</span><br />
</div>
</div>
<span>content0_1</span><br />
<span>content0_2</span><br />
자식 선택자
- 부모 요소의 바로 다음에 있는 자식 요소에 스타일을 적용
- 선택자와 선택자를 왼쪽 부등호(>)로 구분하여 선언
<style type="text/css">
.con2 > span{color:blue;}
</style>
<div class="con2">
<span>content1</span><br />
<span>content2</span><br />
<div>content3<br />
<span>content3_1</span><br />
<span>content3_2</span><br />
</div>
</div>
선택자 그룹화
- 다수의 요소에 똑같은 선언을 지정할 경우
- 반복해서 작성하는 대신 선택자를 그룹화 하여 표현
- 콤마(,)사용하여 구분
<style type="text/css">
.class1,#id1{color:red;}
</style>
<div class="class1">class1 div</div>
<div id="id1">id1 div</div>