자손과 자식의 차이는 말 그대로 해석하면 됩니다. 자식은 바로 아래의 아들 딸이고 자손은 손자, 손자의 손자까지 모두 포함하죠. 그러므로 자식 선택자는 바로 아래의 자식 요소만 선택할 때 편리합니다. 일반적으로 자손 선택자를 많이 사용하는데 필요할 경우 자식만 제한해서 선택하고자 할 때 사용할 수 있습니다. 아이디나 클래스 선택자를 넣고 스타일시트에서 이를 지정해서 사용하면 될 것을 굳이 이런 선택자까지 만들어낸 것은 그만큼 웹디자인을 원활하게 하기 위해서입니다. 디자인을 많이 경험하다보면 반드시 필요하죠.
첨부 파일을 열어보면 여러 단계의 서브 메뉴를 만들고자 ul과 li 태그가 많이 있습니다. nav 태그의 자식은 바로 아래의 ul 태그 하나 뿐입니다. 하지만 자손은 그 아래에 있는 모든 태그입니다. 만일 nav ul li 라는 선택자를 사용한다면 모든 li 태그가 선택될 것이고 nav > ul > li를 사용한다면 빨간색 부분만 선택됩니다.
실제로 어떻게 나타나는지 선택자를 입력해서 알아보겠습니다. style.css 파일에서 다음과 같이 입력하고 웹브라우저에서 보면 모든 li 태그에 대해 녹색의 배경이 나타납니다.
nav ul li {
background: green;
}
처음의 li 태그만 선택하고자 하면 다음과 같이 하면 됩니다.
nav > ul > li {
background: green;
}
이러한 자식 선택자가 필요한 것은 위와 같은 메뉴를 만들 때 사용합니다. 위 메뉴의 스타일시트는 첨부 파일에 있는 main.css에 있는데 이곳의 코드를 보면 다음과 같이 ul에 대해서 나타나지 않도록 설정해놨습니다. 마우스를 올렸을 때만 나타나도록 해야하기 때문이죠.
nav ul li에 마우스를 올리면 위 ul이 나타나도록 해야하는데 자손 선택자를 사용하면 그 아래의 하위메뉴까지 나타나기 때문에 제한할 필요가 있습니다. 그래서 자식 선택자만을 사용해서 아래와 같이 설정해야 합니다.nav ul li ul {
display: none;
position: absolute;
top: 40px;
border-radius: 0;
background: #ffffff;
border: 3px solid #cccccc;
border-top: none;
}
nav ul li:hover > ul {
display: block;
}