Das ist ziemlich schlampig für meinen Geschmack, aber im Grunde ist es
erfordert
text-indent
statt
padding
oder
margin
die Verschachtelung zu erreichen. Aber dann, um ein Sprite-Bild als die Kugel für die
<a>
zu verwenden, müssen Sie am Ende nehmen Sie die aktuelle
text-indent
für die Ebene und stoßen das Sprite-Bild über diese viele
px
, minus der Sprite Bildbreite.
Ich habe es geändert padding-left
auf dem anchor
stattdessen zu verwenden, aber dann erfordert dies overflow: hidden
auf der übergeordneten div
die zusätzliche Grenze zu verbergen, die auf der rechten Seite mit jeder Verschachtelung geschoben wird.
Und natürlich, visualisieren Sie irgendwelche der Sachen wie .two_deep
, .expanded
, etc. als getan mit jQuery, und nicht hardcoded in die CSS. Es sollte ziemlich einfach sein, eine Tiefe von ul
im Menü zu erhalten.
<html>
<head>
<style>
body {font: normal 11px Arial;}
a:link, a:visited {color: #888; text-decoration: none;}
a:hover, a:active {color: #000; text-decoration: none;}
div {width: 250px; border-top: 1px solid #888; overflow: hidden;}
ul {
width: 100%;
margin: 0; padding: 0;
list-style-type: none;
}
li {
padding: 5px 0;
border-bottom: 1px solid #888;
}
li a {
display: block;
}
.two_deep li a {
padding-left: 25px;
}
.three_deep li a {
padding-left: 50px;
}
.four_deep li a {
padding-left: 75px;
}
.expanded {
display: block;
width: 100%;
border-bottom: 1px solid #888;
margin: -5px 0 5px;
padding: 5px 0;
}
li > ul {margin: -5px 0 -6px;}
</style>
</head>
<body>
<div>
<ul>
<li><a class="expanded" href="#">First Link</a>
<ul class="two_deep">
<li><a href="#">Child One</a></li>
<li>
<a class="expanded" href="#">Child Two</a>
<ul class="three_deep">
<li>
<a class="expanded" href="#">Child One of Child Two</a>
<ul class="four_deep">
<li><a href="#">Child One of . . .</a></li>
<li><a href="#">Child Two of . . .</a></li>
</ul>
</li>
<li><a href="#">Child Two of Child Two</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Second Link</a></li>
<li><a href="#">Third Link</a></li>
</ul>
</div>
</body>
</html>
Aber ehrlich gesagt, vielleicht würden Sie lieber verwenden nur ein Hintergrundbild, und haben es hässlich aussehen/gebrochen, wenn der Text geändert wird. Das CSS ist ein bisschen "hack-y" für meinen Geschmack, vor allem alle Padding-Kompensation benötigt, weil die anchor
und li
Geschwister sein müssen.
Ich habe dies in Firefox 3.5, Safari 4 und Opera 9.6 getestet. Ich habe momentan keinen Zugang zu etwas anderem, also ist es wahrscheinlich nicht einmal sehr hübsch.
Unnötig zu sagen, es ist wahrscheinlich ein komplettes Wrack in allen IE-Versionen. Entschuldigung ... Es war nur mein eigener kleiner Test, um zu sehen, ob ich der Aufgabe gewachsen bin!
Edit: Es stimmt nicht mit Seite Zoom und Text Resize arbeiten, aber auch hier IE Unterstützung ...
Ich hatte ein Tiling bg Bild für die Teiler Reihen betrachtet verwenden, aber dann wird der Text nicht die Größe wird (soweit ich weiß ...) – ironkeith