작성일자
카테고리 CSS/CSS기초

1. 형제 선택자(Sibling Selector)


이웃 형제 선택자(Adjacent Selector, Adjacent Sibling Selector)는 이웃한 형제 선택자 중 나중의 요소만 선택되지만 형제 선택자는 이웃한 형제 선택자 중 처음의 선택자를 제외한 모든 요소가 선택됩니다. 첨부 파일에 다음과 같은 코드가 있습니다. div과 p가 섞여있죠. 


<div>1</div>

<p>2</p>

<div>3</div>

<div>4</div>

<p>5</p>

<div>6</div>


스타일시트에 다음과 같이 선언하면 3,4,6의 div이 선택됩니다.


div ~ div {

  background: green;

}



다음처럼 하면 p 태그중 나중의 것만 선택됩니다. p 태그는 두개밖에 없으므로 마지막 하나만 선택됩니다.

p ~ p {

  background: green;

}



다음은 p 다음에 있는 div은 모두 선택됩니다. div ~ div과 같은 결과입니다.


p ~ div {

  background: green;

}



2. 속성 선택자 (Attribute Selector)


a 태그나 img 태그 등 여러가지 태그에는 속성이 사용됩니다. src, href, alt, title 등 여러 가지가 있죠. 이들 요소에 별다른 아이디나 클래스 선택자를 추가하지 않고도 이미 색다른 속성이 있다면 특정해서 선택할 수 있습니다. 속성 선택자는 대괄호를 사용해서 선택합니다.


<ul>

<h3>상품</h3> <li> <figure class="first"> <a href="http://naver.com" title="네이버"> <img src="smartphone.png" alt="naver"></a> <figcaption></figcaption> </figure> </li> <li> <figure> <a href="http://google.com" > <img src="smartphone.jpg" title="구글 사이트"></a> <figcaption class="second"></figcaption> </figure> </li> <li> <figure> <a href="http://daum.net" title="다음"> <img src="smartphone.gif" alt=""></a> <figcaption class="new"></figcaption> </li> </ul>


첨부 파일에는 위와같은 코드가 있고 웹브라우저에서 보면 아래와 같이 나옵니다.




아래처럼 정의하면 모든 a 태그에는 같은 속성이 있으므로 스마트폰 이미지가 나타나지 않습니다. a를 빼고 사용해도 마찬가지입니다. 


a[href] {  

   display: none;  

}  


보다 더 특정하기 위해서 다음과 같이 url을 추가했습니다. 그러면 첫번째 이미지가 나타나지 않습니다.


a[href="http://naver.com"] {  

   display: none;  

}  


이번에는 url 중 일부 글자만 입력했습니다. 그대신에 href에 별표를 삽입해야합니다.


a[href*="nave"] {  

   display: none;  


다음과 같이 하면 모든 a 태그에 http가 있으므로 모든 스마트폰 이미지가 나타나지 않습니다. ^ (caret)이 추가됐습니다.

a[href^="http"] {  

   display: none;  

}  


url에 이미지 확장자가 있는 경우 $ 사인을 사용합니다. href의 경우 [href$=".jpg"]처럼 하면 되지만 현재 a 태그에는 이런 url이 없습니다. 그래서 img 태그에 있는 것을 사용했습니다. 이미지의 url에는 href가 아닌 src를 사용하므로 다음과 같이 하면 됩니다.


img[src$=".jpg"] {  

   display: none;  

}  


title 속성에 여러개의 단어가 있고 단어 사이에 공백이 있는 경우 하나의 단어를 사용해서 선택하려면 ~ (tilde)를 사용합니다.


img[title~="구글"] {  

   display: none;  

}  


다른 속성도 마찬가지 방법을 사용하면 됩니다.


a[title="네이버"] {  

   display: none;  

}  

a[title*="네이"] {  

   display: none;  

}  


3. not 선택자


현재 세개의 figcaption 태그가 있습니다. 두번째 태그에 second 클래스가 있는데 이것에 대해 다음과 같이 사용하면 이 선택자가 있는 figcaption을 제외한 figcaption이 선택됩니다. 세번째 figcaption의 new 이미지가 있는데 나타나지 않게 됩니다.


figcaption:not(.second) {  

   display: none;  

}  


4. nth-child 선택자


first-child를 사용하면 li 태그중 첫번째 태그가 선택되고 last-child를 사용하면 마지막 li가 선택됩니다. 중간의 요소를 선택하려면 nth-child(숫자)의 경우 처음부터 숫자에 해당하는 곳의 요소가, nth-last-child(숫자)의 경우 마지막부터 숫자에 해당하는 곳의 요소가 선택됩니다. 숫자는 부모요소내부에 있는 자식요소를 기준으로 합니다. 예를들어 현재 상품 이미지가 있는 곳의 ul 태그에는 자식요소가 4개 있습니다. h3 하나와 li 3개인데 아래와 같이 li:first-child라고 하면 선택이 안됩니다. ul 의 첫번째 자식은 h3이기 때문이죠. 그래서 첫번째 li를 선택하려면 li:nth-child(2)라고 해야합니다. 마찬가지로 li:nth-last-child(4)로 하면 선택이 안됩니다. ul 안의 뒤에서부터 마지막은 h3이기 때문이죠.


li:first-child {  

   display: none;  

}  

li:nth-child(2) {   

   display: none;  

}  

li:nth-last-child(3) {  

   display: none;  

}  


5. nth-of-type(숫자) 선택자


h3가 없는 경우 위 nth-child와 비슷한 것 같지만 같은 종류의 태그(type)에 대해서 선택합니다. 즉 부모요소를 기준으로 같은 종류의 요소에 대해서 순서를 정합니다. 이와 반대의 순서로 선택하려면 nth-of-last-type을 사용합니다. 현재의 상황에서 li 태그 중 첫번째를 선택하려면 다음과 같이 합니다. nth-of-type(1)대신에 first-of type을 사용할 수 있고 마지막은 last-of-type입니다.


li:nth-of-type(1) {  

   display: none;  

}  


 태그의 종류가 뒤섞여 있다면 같은 종류만을 기준으로 순서를 정합니다. 현재 html에는 p 태그가 두개 있는데 아래처럼 하면 두번째 p 태그가 선택됩니다.


p:nth-of-type(2) {  

   display: none;  


CSS-selectors3.zip


저작자 표시 비영리 변경 금지
신고
BlogIcon 윰(건즈)

인터넷 검색중 우연히 들어왔어요,,, 저에게 필요한 내용들이 많이 있어서 이렇게 글 남기고 가요... 종종 들러도 되겠죠. ㅎㅎ

BlogIcon 베누시안

안녕하세요. 반갑습니다. 언제든 오셔서 글을 보셔도 됩니다. 댓글 감사합니다.

비밀댓글입니다

BlogIcon 베누시안

안녕하세요. 자세한 디자인이나 내용을 이메일로 보내주시면 감사하겠습니다. martian36@naver.com

ella

호기심많은VIP님 블로그에서 자주뵙고 들어와 봅니다.
배울께 참 많은거 같네요!

또 놀러와서 차근차근 배워가야겠어요 ㅎ

좋은하루보내세요 ^^

BlogIcon 베누시안

안녕하세요. 좋게 봐주셔서 감사합니다.

BlogIcon 메리앤

오늘도 잘 배우고 갑니다.
날씨가 다시 추워지지만 좋은 하루 되시기 바랍니다~. ^^;

BlogIcon 베누시안

안녕하세요. 메리앤님 제가 바쁘다보니 댓글도 늦게 달고 그러네요. 찾아주셔서 감사합니다.

비밀댓글입니다

BlogIcon 베누시안

안녕하세요. 답변 드렸는데 못보셨나보군요. 이전 댓글의 내용은 다음과 같습니다. ->테마는 특성이 있어서 잘 안되는 경우도 있더군요. 그런 메시지를 처음 보는 것이라서 구글 검색해보니 전혀 나오지 않더군요. 해당 사이트에 문의를 하시는 것이 좋을 듯합니다.

BlogIcon 텐션

워드프레스에 한창 꼽혔을때 정말 자주 왔었는데;;; 한동안 찾지를 못했네요.
지금은 제 능력을 알아보고 티스토리만 열심히 하는중입니다.^^;;
즐거운 하루 되세요.

BlogIcon 베누시안

안녕하세요. 댓글 감사합니다. 좋은 주말 되세요.

BlogIcon 닥포

안녕하세요.. 닥포입니다.. 요즘한창 블로그 공부 중인데.. 좋은 자료가 많네요.. 알기 쉽게 설명해주셔서 감사합니다..^^

티스토리 툴바