본문 바로가기
프로그래밍/CSS

[CSS] Selector , 선택자

by jjjhhhhh 2021. 8. 3.
  • CSS 구문(문법)

- 선택자 { 속성명 : 값; }

- 선택자 { 속성명 : 값; 속성명 : 값; 속성명 : 값; ..}

- h1 { color : red; }

 

  • Selector , 선택자 (***********************)

- CSS 에서 가장 중요

- HTML 소스에서 특정 태그(******)를 검색하는 도구

→ 태그를 찾아 서식을 적용

1. 태그 자체에 서식 적용

2. 태그의 내용물에 서식 적용

 

 

  1. 태그 선택자
    • 태그명을 사용해서 원하는 태그를 검색
    • 장점 : 검색된 태그가 1개 이상이면 모두 적용된다 ( 일괄 적용 → 생산성 )
    • 단점 : 태그명으로만 검색하기 때문에 원치않는 동일한 태그를 걸러낼 방법이 없다.
<head>
	<style>
		/* 선택자 { 속성명 : 값; } */
        h1{ color: red ;}

        div{ color: royalblue;}

        input{ color: yellow;}

        h2{ color: red;}

        p{ color: gray;}
	</style>
</head>
<body>
   <h1>h1 입니다.</h1>
   <p>p 입니다.</p>
   <div>div 입니다.</div>
   <blockquote>blockquote 입니다.</blockquote>
   <input type="text" value="홍길동입니다.">
   <h1>h1 입니다.</h1>
   <p>p 입니다.</p>
   <div>div 입니다.</div>
   <blockquote>blockquote 입니다.</blockquote>
   <input type="text" value="홍길동입니다.">
</body>

 

 

 

2. ID 선택자

  • 태그명#ID { 속성명 : 값; }
  • #ID { }-> *#ID { }
  • 원하는 태그에 개발자가 id속성 정의 > CSS에서 id를 검색해서 태그를 찾는 방식
  • ID : 영문자 + 숫자 + 특수문자 (-,_ ) , 한글(x), 공백(x), 나머지 특수문자(x)
  • ID : identity , 유일한 값
  • 원하는 태그를 검색하기 용이 + id를 작성하는 추가비용 발생

 

3. Class 선택자

  • 원하는 태그에 개발자가 class 속성 정의 > CSS 에서 그 class를 검색해서 태그를 찾는 방식
  • class : 영문자 + 숫자 + 특수문자 (-,_ ) , 한글(x), 공백(x), 나머지 특수문자(x)
  • 문서내에 여러개 존재 가능
  • 원하는 태그를 검색하기 용이 + class 를 작성하는 추가 비용 발생

 

<head>
	<style>
		/* ID 선택자 */
		h2#title { color : red; }
		#title { color : red; }
		#adb { color : blue; }


		/* 클래스 선택자 */
		p.content { color : red; }
		.content { color : red; } 

		
	</style>
</head>
<body>
	<h2 id="title">회사 소개</h2>

   <p class="content">회사에 대한 소개입니다.회사에 대한 소개입니다.
		회사에 대한 소개입니다.회사에 대한 소개입니다.회사에 대한 소개입니다.회사에 대한 소개입니다.
		회사에 대한 소개입니다.회사에 대한 소개입니다.</p>
		
  <h2 id="adv">사내 광고 </h2>

  <p class="content">광고 내용 ~광고 내용 ~광고 내용 ~광고 내용 ~광고 내용
	 ~광고 내용 ~광고 내용 ~광고 내용 ~광고 내용 ~광고 내용 ~광고 내용 ~광고 내용
	 ~광고 내용 ~광고 내용 ~광고 내용 ~광고 내용 ~광고 내용 ~광고 내용 ~</p>
</body>

 

 

4.그룹 선택자

  • 여러개의 선태자가 body를 공유.
  • 여러개의 선택자로 검색된 태그들이 공통된 서식을 적용받는다.
  • 기존의 선택자들을 그룹지어 선언부를 공유.
<head>
	<style> 

		p, div { color : red; }
		#item1, #item2, h1, .item { color : blue; }

	</style>
</head>
<body>
	 <h1>h1 입니다.</h1>
	 <p class="item">p 입니다.</p>
	 <div id="item1">div 입니다.</div>
	 <blockquote>blockquote 입니다.</blockquote>
	 <input type="text" value="홍길동입니다." class="item">
	 <h1>h1 입니다.</h1>
	 <p id="item2">p 입니다.</p>
	 <div class="item">div 입니다.</div>
	 <blockquote>blockquote 입니다.</blockquote>
	 <input type="text" value="홍길동입니다.">
	 <h1 id="item3">h1 입니다.</h1>
	 <p>p 입니다.</p>
	 <div class="item">div 입니다.</div>
	 <blockquote>blockquote 입니다.</blockquote>
	 <input type="text" value="홍길동입니다.">
</body>

 

 

5. 자식 선택자

  • 부모를 조건(**)으로 자식 태그(***목표)를 검색
  • 부모 > 자식 { 속성명 : 값; }
  • 자식은 조건으로 사용 불가

 

6. 자손 선택자

  • 조상을 조건으로 자식 태그를 검색
  • 직계 조상을 조건으로 검색
  • 조상 자식 { 속성명 : 값; }

 

<head>
	/* 자식 선택자 */
	li > b {color : red; }
	ol > li > b { color: blue;} 
	
	/* 자손 선택자 */
	blockquote b {color : blue; }
  
  /* 조상이 겹칠땐 -> id 사용 */
     #my b {color: red;}

</head>
<body>
		<ol>
        <li>자바, <b>Java</b></li>
        <li>오라클,<b>Oracle</b></li>
        <li>HTML</li>
    </ol>
	
	<blockquote>
        <div>
            <div>
                <ul>
                    <li>자바, <b>Java</b></li>
                    <li>오라클, <b>Oracle</b></li>
                    <li>HTML</li>
                </ul>
            </div>
        </div>
    </blockquote>

		<blockquote id="my">
        <div>
            <div>
                <ul>
                    <li>자바, <b>Java</b></li>
                    <li>오라클, <b>Oracle</b></li>
                    <li>HTML</li>
                </ul>
            </div>
        </div>
    </blockquote>
</body>

 

 

7. 인접 형제 선택자

  • 바로 전의 형태를 조건으로 검색
  • 형제 + 선택자 { }
  • 동생은 조건으로 사용 불가
  • 자식 선택자와 유사

 

8. 형제 선택자

  • 형제를 조건으로 검색
  • 형제 ~ 선택자 { }
  • 조건인 형제와 대상인 선택자 사이에 또 다른 중간 형제가 와도 좋다
  • 자손 선택자와 유사
<head>
	/* 인접 형제 선택자 */
	div + p { color : red; } 
	span + p { color : blue; }

	/* 형제 선택자 */
	div ~ p { color : red; }
	p ~ p { color : blue; } 	

</head>
<body>

		 <p>p 태그</p>
     <div>div 태그</div>
     <p>p 태그</p>
     <p>p 태그</p>
     <span>span 태그</span>
     <div>div 태그</div>
     <p>p 태그</p>
     <p>p 태그</p>

</body>

자식/자손, 형제/인접형제
- 부모 조건(o)
- (윗)형제 조건(o)
- 자식 조건(x)
- (아랫)형제 조건 x

 

 

  • 의사 클래스 , Pseudo class

- 실제 태그에는 class 속성이 없는데 선택자에서는 존재하는 class 처럼 사용

- <a> 태그에만 제공 → 다른 태그들에게도 제공

 

<head>
	/* 가장 보편적인 <a> 의 CSS 적용 모습 */
	a { color : black; text=decoratiob : none; }
	a:hover { color : red; text-decoration; }

    a:link{color: black;} /* 한번도 방문한적 없는 상태의 링크 */
    a:visited{color:orange;} /* 방문기록이 있는 상태의 링크*/
    a:active{color: red;} /* 활성화된 상태의 링크 */
    a:hover{color: pink;} /* 마우스 커서가 올라가 있는 상태의 링크 */
</head>
<body>

	 <a href="http://google.com">구글</a><br>
   <a href="http://getbootstrap.com">부트스트랩</a><br>

</body> 

 

  • 동일한 선택자 + 동일한 속성 + 다른 값 지정 → 마지막 적용된 속성 반영

 

  • 선택자 우선 순위

- 서로 다른 선택자가 하나의 태그를 선택했을때 > 동일한 속성 적용 > 속성 충돌 발생

- 점수 계산 : 선택자를 구성하는 요소들의 점수 총합을 계산해서 가장 높은 선택자가 적용

- 태그 선택자 : 개당 1점 , 클래스 선택자 : 10점, ID 선택자 : 100점

- 같은 선택자일 경우엔 마지막꺼 적용

- 선택자 우선 순위를 결정하는 점수의 의미 → 개념적인 표현 ( 클래스 100개 만들어도 ID 못이김 )

<head>

	/* 속성 충돌 발생  */

  html > body > div.box.aaa{color: red;} 
  /* 10점 ->11 -> 21 -> 22 -> 23  */

  body > div.aaa.box{color: blue;}
  /* 10점 -> 11 -> 21 */

</head>
<body>
	
	 <div id="box1" class="box">상자입니다.</div>
   <div id="box1" class="box aaa bbb ccc">상자입니다.</div> 

</body> 

 

'프로그래밍 > CSS' 카테고리의 다른 글

[CSS] Background 속성  (0) 2021.08.03