Geordnete Listen sind langweilig! Klar, man kann Hintergrundbilder anwenden und regulären geordneten Listen eine ganze Menge verschönern, aber man bekommt einfach nicht genug Kontrolle über die Nummer selbst. Hier ist ein Beispiel, bei dem man die traditionelle geordnete Liste aufgibt und seine eigene erstellt!
Wenn Sie eine Schleife einrichten oder sich bereits in einer bestehenden Schleife befinden (denken Sie an WordPress-Kommentare), bietet sich die Möglichkeit für coole nummerierte Listen. Richten Sie einfach eine Integer-Variable in PHP ein, die sich selbst inkrementiert, während die Schleife läuft. Geben Sie dann die Variable dort aus, wo Sie sie benötigen, und stylen Sie sie mit CSS.
In diesem Beispiel habe ich ein h2-Element mit großer Schriftgröße, grauer Farbe, links ausgerichtet und mit einem kleinen rechten Rand verwendet. Diese Technik ist schön und bulletproof, da sie keine grafischen Elemente zur Einrahmung der Nummer verwendet.

Hier ist ein Beispiel für eine einfache PHP-Schleife
<?php for ($i = 1; ; $i++) {
if ($i > 9) {
break;
} ?>
<div class="comment-box">
<h2 class="number"><?php echo $i ?></h2>
<p>CONTENT GOES HERE.</p>
</div>
<?php } ?>
Hier ist das anwendbare CSS
h2.number {
position: relative;
top: 0px;
left: 0px;
font-size: 10em;
color: #ccc;
float: left;
margin-right: 10px
}
#page-wrap {
width: 760px;
background: white;
margin: 0 auto;
padding: 10px 0px 50px 0px;
background: white url(images/gradient2-bg.gif) bottom repeat-x;
}
#description-area {
padding: 20px;
}
.comment-box {
margin: 0px 0px 50px 50px;
padding: 20px;
width: 240px;
border: 1px solid black;
float: left;
}
Sie können Ihr PHP vereinfachen, indem Sie
Danke Mirmillo! Das ist etwas sauberer.
Obwohl ich zustimme, dass Ihr Ergebnis gut aussieht, muss ich Ihrem Titel widersprechen. Das ist keine „bessere geordnete Liste“, da es überhaupt KEINE geordnete Liste ist. Für etwas wie das hier sollten Sie wirklich eine <ol> verwenden, obwohl die Styling-Optionen sehr begrenzt sind.
Ich sehe eine Menge divs, Header und Absätze. Der einzige CSS-'Trick', den ich sehe, ist ein auf einem Raster basierendes Layout.
@kimblim: Warum denken Sie, dass Sie für „etwas wie das hier“ eine <ol> verwenden sollten? Ich sehe keinen semantischen Vorteil bei der einen oder anderen Methode. Außerdem denke ich, dass der Titel angemessen ist. Meiner Meinung nach ist das Beispiel besser als eine reguläre geordnete Liste und das Ergebnis ist tatsächlich eine geordnete Liste.
@BillyG: Obwohl alle meine Beispiele in irgendeiner Weise CSS verwenden werden, sind sie möglicherweise nicht alle speziell auf CSS ausgerichtet. Der Teil „Trick“ kann ziemlich lose interpretiert werden =).
@Chris
Sie haben es selbst gesagt: „und das Ergebnis ist tatsächlich eine geordnete Liste“. Wenn das der Fall ist, dann sollten Sie wirklich eine <ol> (geordnete Liste) verwenden. Etwas anderes als eine <ol> für eine geordnete Liste zu verwenden, macht semantisch überhaupt keinen Sinn. Ihr Beispiel nimmt eine Überschrift (<h2>) und verwandelt sie in einen nummerierten Aufzählungspunkt.
^ „nummerierter Aufzählungspunkt“ sollte „nummerierter Listenpunkt“ heißen
@kimblim: Sie sagen, wenn es keine <ol> ist, ist es keine geordnete Liste, und ich sage, nur weil es keine <ol> ist, heißt das nicht, dass es keine geordnete Liste ist. Nur verschiedene Ansichten, denke ich. Wenn es möglich wäre, dieses Beispiel mit einer <ol> zu machen, stimme ich zu, dass es semantisch besser wäre, aber leider ist es das nicht.
Ich glaube, die Leute verstehen den Punkt nicht. Das ist keine Liste und auch keine geordnete Liste, das ist eine Alternative zu einer Liste.
Ich mag es, es ist anders, aber das ist der ganze Sinn :D
Sie könnten ein gefloatetes Element haben, das den Inhalt einrückt. Dann bräuchten Sie keine serverseitige Skripte und es wäre eine semantische OL. Sie können sogar das HTML voll semantisch halten und das HTML mit JS hinzufügen.
Wow, sehr interessant und tiefgründig. Mach weiter so! :)
Wie können wir den Inhalt jedes Elements ändern?
@Ian: Schauen Sie sich Dave's großartige Code-Vorschläge oben an. Gleiche Ergebnisse, und Sie können den Inhalt für jedes Element angeben, anstatt dass er Teil der Schleife ist.
Ursprünglich dachte ich, dies wäre Teil einer bereits vorhandenen Schleife, bei der der Inhalt dynamisch generiert wird (wie z. B. aus einer Datenbank gezogen). Zum Beispiel die WordPress-Kommentarschleife...
Tatsächlich können Sie, wenn Sie wirklich daran interessiert sind, Ihren PHP-Code zu reduzieren, dies tun (auch semantisch ansprechender)
Ab PHP 5.1 ist dies eine gültige Syntax.
Sehr schön. Werde versuchen, es in mein WordPress-Design zu integrieren.
Für einfachere Stile (grundsätzlich separate Textformatierung) ist es einfacher, Folgendes zu tun
CSS
HTML
Natürlich hat dies die Einschränkung, dass die Nummern nicht (einfach) separat vom Text positioniert werden können (oder dass sie gefloatet werden), aber es sei denn, Sie müssen das tun, ist es meiner Meinung nach wahrscheinlich eine bessere Lösung.
„Wenn es möglich wäre, dieses Beispiel mit einer zu machen, stimme ich zu, dass es semantisch besser wäre, aber leider ist es das nicht.“
Warum ist das mit einer ungeordneten Liste nicht möglich? Ersetzen Sie einfach Ihre divs durch Listenelemente, entfernen Sie die Nummerierung aus der Liste und fügen Sie sie mit PHP wie geschehen ein, so ziemlich genau wie Sie es mit Ihren Kommentaren getan haben. In diesem Fall glaube ich, dass Kimblim absolut Recht hat.
Oh… Im Moment entwickle ich ein Website-Konzept und vielleicht brauche ich Ihren Tipp ;)
Ralph
vergessen hinzuzufügen: Platzieren Sie dies unter Ihrer letzten Box: (Hinweis: Habe es nicht getestet, aber es sollte perfekt funktionieren)
<script language="JavaScript" type="text/javascript"> function list_it(){ //Get all H2 elements var h2s = document.getElementsByTagName('h2'); //Set up the counter for the numbers var listCounter = 1; //start to loop true all h2's for (var i = 0; i<h2s.length; i ) { var h2 = h2s[i]; //only do the following if the H2 has the classname number if(h2.className == 'number') { //Change innerHTML h2.innerHTML = listCounter; //Add 1 to the counter listCounter } } } //Fire the list function list_it(); </script>Es wird durch alle H2-Elemente geschleift, prüft, ob sie die Klassenbezeichnung number enthalten, und ersetzt den Inhalt durch „list number“.
netter Artikel. hier ist wie ich geordnete Listen zähme ;).
Großartige Verwendung von geordneten Listen. Modifikationen von Mirmillo und anderen haben Meisterwerke der CSS-Skripte geschaffen.
Wie nummeriert man die Kommentar-Einträge? Könnten Sie Code und Anweisungen liefern, wie ich mein CSS bearbeiten kann?
sehr dank
Hier ist eine sehr einfache Methode, die ich erstellt habe, ohne PHP, Javascript – nur reines CSS –, um meine Nummern-Indikatoren in einer OL wie Drop-Caps zu floaten. es sieht aus wie das. Wie Sie sehen können, funktioniert es perfekt in Chrome und Firefox, aber natürlich scheitert IE 8 daran – die Floats funktionieren, aber die OL-Nummern werden nicht inkrementiert. Ich wette, jemand hier kann eine Lösung finden.
Schlüssel zu dieser Methode
– Setzen Sie nichts in die LIs. Sie sind leer. Der gesamte Inhalt kommt nach jedem schließenden LI.
– Floaten Sie das umschließende Div, nicht das LI.
– Die OL muss Dezimalzahlen innerhalb des Stils angeben.
.dropli {float: left;
width: .7em;
font-size: 8em;
line-height: 83%; }
.dropcontent { margin-bottom:2em; }
ol { list-style: decimal inside; }
………
<ol>
< div class=”dropli”><li ></li></div>< div class=”dropcontent”>lorem ipsum dolor sit amet, consectetuer… </div>
Wow! Ausgezeichnetes Tutorial. Ich habe nach genau so etwas gesucht. Listen können so langweilig sein.