문제
순수한 마크 업으로 내비게이션 인터페이스와 같은 트리를 만들고 싶습니다 (즉, JavaScript/jQuery 등이 필요하지 않음).
순서가없는 목록 <ul>
최상의 솔루션처럼 보이고 이것을 찾았습니다. simplebits.com 튜토리얼 필요한 솔루션에 매우 가깝습니다. 그러나 저자는 모든 지점의 최종/최대 깊이가 이미 알려져 있다고 가정하여 스타일 시트를 정의합니다.
#sitemap li ul li ul li {
padding-left: 16px;
background: url(bullet.gif) no-repeat 0 50%;
}
마크 업이 "무한히"내려 오는 방법이 있는지 알고 싶습니다. 스타일링이이를 완벽하게 지원하도록합니다.
이에 대한 자세한 내용이 필요한 경우 알려주십시오.
해결책
이것에 대한 자습서가 있지만 두 가지 문제가 있습니다.
- IE6은 지원하지 않습니다 : 앵커 이외의 태그에 호버링하므로 해당 브라우저에 대한 JavaScript 솔루션이 필요합니다. 그리고
- 주요 브라우저에서 일관되게 작동하는 것은 실제로 복잡합니다.
jQuery와 Superfish (Suckefish에서 영감) 플러그인을 사용하여 대안을 고려하십시오.
<ul class="menu">
<li>...
</ul>
<script type="text/javascript">
$(function() {
$("ul.menu").superfish();
});
</script>
완료.
(반) 순수한 CSS 루트를 사용하는 경우, 나는이를 위해 기존 프레임 워크 중 하나를 사용하는 것이 좋습니다 (Suckerfish 또는 Detivative). 그렇지 않으면 당신은 단지 머리카락을 꺼내고 제대로 작동하기 위해 많은 시간을 할애 할 것입니다.
깊이에 대한 질문에 답하기 위해 : 본질적으로 언급 한 규칙은 무한한 깊이가 될 것입니다. CSS의 공간은 아동 선택기가 아닌 자손 선택기임을 기억하십시오. 반복 된 그룹의 이유는 규칙이 세 번째 레벨 다운에서만 적용되기 때문입니다.
첫 번째와 두 번째 레벨에는 특별한 스타일이 있기 때문입니다. 첫 번째는 HoritzOntal 또는 수직 막대입니다. 두 번째는 그로부터 팝 아웃하지만 세 번째 레벨에서 같은 방식으로 지속적으로 팝 아웃됩니다.
다른 팁
제공 한 마크 업은 직접 지정하지 않고 추가 요소에 대해 작동해야합니다.
예를 들어:
#sitemap li {} -->level 1 and under
#sitemap li li {}--> level 2 and under (overrides previous rule)
#sitemap li li li {}--> level 3 and under (overrides previous rule)
따라서 마지막 규칙은 4, 5, 6 이상에 자동으로 적용됩니다.
모든 레벨에 대한 특정 스타일을 원하지 않는 한 괜찮을 것입니다.
순서가없는 목록 요소에 클래스를 할당하는 것은 어떻습니까?
#sitemap li.tree
{
padding-left: 16px;
}
왜 이것이 효과가 없는지 모르겠지만 내가 틀렸다면 바로 잡으십시오.