Akkordeons sind ein UI-Muster, bei dem man auf einen Titel klickt (in einem vertikalen Stapel von Titeln) und sich darunter ein Inhaltsbereich öffnet. Typischerweise schließen sich alle anderen geöffneten Bereiche, wenn sich ein neuer öffnet. Sie sind ein cleverer und ansprechender Mechanismus, um viele Informationen auf kleinem Raum unterzubringen.
Basis-Akkordeon von jQuery UI
Eine Möglichkeit, ein Akkordeon zu betrachten, ist wie eine eingeklappte einzelne Spalte einer Tabelle. Ich habe kürzlich eine Seite für eine Kunden-Website erstellt, bei der die von ihnen bereitgestellten Informationen am besten in einer Tabelle dargestellt werden konnten. Aber es waren zu viele Informationen, um sie auf einmal anzuzeigen. Ich dachte, das wäre visuell überwältigend gewesen. Ich dachte auch, dass die Leute, die diese Seite besuchen, wahrscheinlich sofort wissen würden, was sie brauchen, daher schien es ziemlich vernünftig, sie einmal klicken zu lassen, um es zu erhalten. Also, eine Tabelle von Akkordeons!
Eine weitere Überlegung bei dieser Tabelle, die ich gerade erstellt habe, ist, dass es genügend Spalten gab, dass jede einzelne Spalte (wenn sie in dem verfügbaren Platz gleich breit gewesen wären) nicht sehr breit war, vielleicht 150 Pixel. Einige dieser Zellen enthielten mehrere Textabsätze. Eine 150 Pixel breite Zelle mit mehreren Textabsätzen wäre unglücklich hoch. Daher wurde das Grid-Akkordeon geboren!
Das Grid-Akkordeon funktioniert nach der gleichen Theorie wie die meisten anderen Akkordeons. Nur eine Zelle ist gleichzeitig geöffnet. Das Wichtigste ist, dass sich die Spalte der aktuell geöffneten Zelle auf eine angemessene Lesebreite erweitert.

Sie können das Beispiel am Ende dieses Artikels ansehen und herunterladen. Ich werde nun einige der wichtigen Teile durchgehen.
HTML: Klassische Verwendung der Definitionsliste
Akkordeons sind perfekte semantische Beispiele für Definitionslisten. Eine kurze Wiederholung davon
<dl>
<dt>Title</dt>
<dd>Information about that title here</dd>
<dt>Another Title</dt>
<dd>Information about that other title here</dd>
</dl>
Unser Grid-Akkordeon wird aus divs bestehen, die in einer horizontalen Reihe gefloatet sind. Jedes div enthält den Titel der Spalte und ein Bild, sowie – am wichtigsten – die Definitionsliste selbst. Beispiel für eines dieser divs
<div class="info-col">
<h2>Batman</h2>
<a class="image batman" href="http://jprart.deviantart.com/">View Image</a>
<dl>
<dt>Super Power</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</dd>
<dt>Costume</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</dd>
<dt>Morality</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</dd>
<dt>Sidekicks</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</dd>
<dt>Vehicles</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</dd>
<dt>Weaknesses</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</dd>
</dl>
</div>
CSS: Versuch, barrierefrei zu bleiben
Der Großteil des CSS ist nur eine einfache Einrichtung und nicht wirklich hier abgedeckt (die vollständige CSS-Datei finden Sie hier).
Ein Aspekt, der es jedoch wert ist, behandelt zu werden, ist die Barrierefreiheit. Wir müssen standardmäßig alle Informationsbereiche der Tabelle "verstecken". Eine Möglichkeit, dies zu tun, wäre, dieddElemente im CSS auf display: none; zu setzen. Dies ist jedoch ein ernsthaftes Problem für die Barrierefreiheit, da viele Screenreader diesem CSS gehorchen und diese Informationen vollständig entfernen.
Stattdessen können wir die Zellen "verstecken", indem wir sie einfach aus dem Browserfenster schieben.
dd { position: absolute; top: -9999px; left: -9999px; }
Dies ist eine klassische Technik. Tatsächlich ist es ziemlich üblich, genau diese CSS-Eigenschaften und Werte mit einem Utility-Klassennamen wie diesem zu sehen.
.screen-reader-text { position: absolute; top: -9999px; left: -9999px; }
Wir haben jedoch noch eine weitere Sorge. Wir werden einige jQuery-Animationen verwenden, um die Info-Zellen nach oben und unten zu schieben. Wir können sie also nicht für normale Betrachter aus der Seite herausschneiden. Wir verschieben die Zellen zurück, wenn das JavaScript zuerst ausgeführt wird, und lassen das JavaScript sie dann verstecken.
Die Funktion slideDown von jQuery funktioniert am besten, wenn sie bereits weiß, wie hoch das Element vor dem Schließen oder Verstecken war, damit sie sich sanft auf die ursprüngliche Höhe zurückanimieren kann. Wenn wir display: none; im CSS verwenden würden, wüsste diese Funktion nicht, wie hoch diese Zellen sein sollen. Wenn wir sie stattdessen aus der Seite herausschieben, wird die ursprüngliche Höhe berechnet, was die Animation so reibungslos wie möglich hält. Wir müssen nur sicherstellen, dass die Zelle auf ihre "volle" Breite eingestellt ist, damit die Höhe bei der Breite berechnet wird, die die Zelle haben wird, wenn sie sichtbar ist.
dd { width: 299px; position: absolute; left: -9999px; top: -9999px; }
Zu diesem Zeitpunkt haben wir eine barrierefreie Informationsseite, sodass Screenreader alles erhalten sollten, was sie brauchen, und normale Benutzer ein reibungslos funktionierendes System haben. Eine Sache, die jedoch nicht vollständig berücksichtigt wird, ist einfach die Deaktivierung von JavaScript. In diesem Szenario sind die Informationszellen immer noch durch CSS versteckt. Persönlich bin ich viel mehr besorgt über die Barrierefreiheit als über Leute, die mit deaktiviertem JavaScript und einer Fackel herumsurfen. Wenn Sie es jedoch sind, können Sie entweder 1) eine <noscript>-Nachricht einfügen oder 2) das CSS-Verstecken entfernen und einfach einen kurzen Inhalts-Flash zulassen, bevor das JavaScript die Zellen versteckt.
CSS: Spaß mit CSS3
Der CSS3-Pseudo-Klassen-Selektor :nth-of-type ist besonders nützlich bei Definitionslisten. Da die dt- und dd-Elemente sich abwechseln und sogar wiederholt oder in beliebiger Reihenfolge auftreten können, wäre :nth-child eine nicht wartbare Option. Färben wir die Zellen der Tabelle mit :nth-of-type.
dt:nth-of-type(1) { background: #b44835; }
dd:nth-of-type(1) { background: #b44835; }
dt:nth-of-type(2) { background: #ff7d3e; }
dd:nth-of-type(2) { background: #ff7d3e; }
dt:nth-of-type(3) { background: #ffb03b; }
dd:nth-of-type(3) { background: #ffb03b; }
dt:nth-of-type(4) { background: #c2a25c; }
dd:nth-of-type(4) { background: #c2a25c; }
dt:nth-of-type(5) { background: #4c443c; }
dd:nth-of-type(5) { background: #4c443c; }
dt:nth-of-type(6) { background: #656b60; }
dd:nth-of-type(6) { background: #656b60; }

Für die "rabble-rabble-IE-kompatible" Menge können Sie gerne zusätzliche Klassennamen zu den Zellen hinzufügen und Ihre Farbgebung mit diesen Hooks vornehmen.
Eines der Flair-Elemente, das wir hinzufügen werden, ist das Hervorheben der aktuellen Spalte. Der Klassenname "curCol" wird nach Bedarf über JavaScript angewendet und entfernt. Die aktuelle Spalte erhält einen Schatten um sich herum, was natürlich die perfekte Anwendung für box-shadow ist.
.curCol { -moz-box-shadow: 0 0 10px rgba(0,0,0,0.2); -webkit-box-shadow: 0 0 10px rgba(0,0,0,0.2); z-index: 1; position: relative; }
Als ich damit spielte, habe ich ursprünglich versucht, einige Transformationen zu verwenden, um die Größe der aktuellen Spalte zu skalieren. Letztendlich gefiel mir das Aussehen nicht (eins-Pixel-Linien sehen beim Skalieren schrecklich aus). Ich mochte die Schatten viel mehr, aber ich stellte fest, dass der rechte Rand des Schattens vom nächsten Spalte abgeschnitten wurde. Das lag daran, dass diese nächste Spalte in der vertikalen Stapelreihenfolge leicht über der aktuellen lag. Daher hat die curCol-Klasse z-index und relative Positionierung, um sicherzustellen, dass sie über den anderen liegt.
Zufällig habe ich auch entdeckt, dass die transform-Eigenschaft das Problem gelöst hat. Da die Einstellung von -moz-transform: scale(1); (was etwas auf 100% skaliert, oder im Grunde nichts mit unskalierten Elementen macht) auch funktionierte, indem der Schatten sichtbar gemacht wurde. Mit anderen Worten: die Verwendung von Transformationen auf Elementen beeinflusst deren vertikale Stapelreihenfolge. Ich bin mir nur noch nicht ganz sicher, wie das alles genau funktioniert.
jQuery JavaScript
Auch hier werde ich nicht jede Zeile abdecken (Sie können die vollständige Datei hier sehen). Hier ist jedoch die logische Struktur:
- Wenn auf eine <dt>-Element geklickt wird...
- Wenn es die aktuell aktive Zelle ist, tue nichts
- Andernfalls...
- Schließe alle geöffneten Zellen
- Schrumpfe den alten Titel
- Vergrößere den neuen Titel
- Öffne die neue Zelle
- Markiere die aktuelle Spalte
- Stelle sicher, dass die aktuelle Spalte erweitert und die anderen geschrumpft sind
Ein paar interessante Dinge...
Ich hätte normalerweise die .live()-Funktion verwendet, um die Klicks auf die dt-Elemente zu behandeln. Aber der neumodische Hipster-Weg, dies in jQuery zu handhaben, ist die Verwendung von .delegate().
$("#page-wrap").delegate("dt", "click", function() {
// do stuff
}
Wo live das gesamte Dokument auf Klicks überwachen müsste, beschränkt delegate diese Überwachung nur auf den page-wrap, was effizienter ist.
Ich habe das Doug Neiner gezeigt, und er schlug auch vor, dass ein Klick auf die Fotos in jeder Spalte nur die Spalte öffnen würde. Dann, wenn erneut geklickt wird, würden sie tatsächlich zur Website des Künstlers gehen (wofür der href jedes Bildes verlinkt). Der Trick hierbei war, die Standardaktion (zum Link gehen) beim Klicken auf ein Bild zu verhindern, wenn es nicht die aktuelle Spalte ist. Stattdessen wird der Klick auf den ersten Titel in dieser Spalte umgeleitet (der ihn öffnet). Wir können dafür wieder delegate verwenden.
$("#page-wrap").delegate("a.image","click", function(e) {
if ( !$(this).parent().hasClass("curCol") ) {
e.preventDefault();
$(this).next().find('dt:first').click();
}
});
Demo und Download
Demo anzeigen Dateien herunterladen
Bis ich ein gutes Lizenzsystem entwickelt habe... nur eine Erinnerung, dass jedes herunterladbare Beispiel wie dieses auf dieser Website von Ihnen beliebig verwendet werden kann. Vorzugsweise verwenden Sie es in großen Unternehmensprojekten und verdienen viel Geld. Oder zeigen Sie es Ihren Freunden und sagen Sie ihnen, dass Sie es getan haben, damit sie denken, Sie seien großartig.
Sehr sehr cool – eines der Probleme, auf die ich ständig stoße, ist, dass Benutzer ALLE DATEN DER WELT in einer einzigen Tabelle anzeigen möchten. Das würde helfen!
ach, danke. das ist so interessant und ja! es ist cool.
„Vorzugsweise verwenden Sie es in großen Unternehmensprojekten und verdienen viel Geld. Oder zeigen Sie es Ihren Freunden und sagen Sie ihnen, dass Sie es getan haben, damit sie denken, Sie seien großartig.“
Bei aller Ernsthaftigkeit ist das urkomisch. Dieses Skript ist jedoch unglaublich, Sie bringen immer etwas Neues auf den Tisch, ich bin sicher, diese Art von Akkordeons wird überall sprießen. Und eine schöne CSS3-Schatten hast du auf dem hervorgehobenen Abschnitt im Grid-Akkordeon.
Ja, es ist ein großartiges Skript und übrigens, ich habe entdeckt, dass du enthüllt hast ;)
Haha, wow, ja, das hast du.
Großartig, schöne Art, sich eine großartige Idee aus den üblichen Akkordeons auszudenken.
Schick – ein weiterer großartiger jQuery-Effekt, Chris. Ziemlich schöne Beispiele und clevere Nutzung von CSS3! Mach weiter so.
Das ist wirklich flüssig, es würde gut für eine Sitemap funktionieren.
Nun, für IE7 und 8 können Sie es in CSS machen, aber auf eine weniger elegante Weise. Zum Beispiel Code
dt:first-child + dd + dt + dd + dt
würde die dritte Zelle auswählen :). Sieht so aus, als könnte es vereinfacht werden.
:first-child + * + * + * + * (Ich habe es nicht getestet, daher bin ich mir nicht 100% sicher, ob das funktionieren würde).
Ich denke, das ist viel besser als die Änderung des Markups.
Habe es schnell in IE8 ausprobiert und es scheint gut zu funktionieren. Gut gemacht.
Für die IE-Fix, was ist der eigentliche Code, den Sie für das Obige verwendet haben? Ich habe Ihren Fix oben ausprobiert, aber ich konnte ihn nicht richtig anzeigen lassen – wenn Sie die vollständige Lösung anzeigen könnten, wäre das großartig – danke!
Es wird ziemlich lang, aber es funktioniert.
dt:first-child { background: #b44835; }
dt:first-child + * { background: #b44835; }
dt:first-child + * + * { background: #ff7d3e; }
dt:first-child + * + * + * { background: #ff7d3e; }
dt:first-child + * + * + * + * { background: #ffb03b; }
dt:first-child + * + * + * + * + * { background: #ffb03b; }
dt:first-child + * + * + * + * + * + * { background: #c2a25c; }
dt:first-child + * + * + * + * + * + * + * { background: #c2a25c; }
dt:first-child + * + * + * + * + * + * + * + * { background: #4c443c; }
dt:first-child + * + * + * + * + * + * + * + * + * { background: #4c443c; }
dt:first-child + * + * + * + * + * + * + * + * + * + * { background: #656b60; }
dt:first-child + * + * + * + * + * + * + * + * + * + * + * { background: #656b60; }
Ziemlich praktisch, denke ich, aber wenn Sie den Inhalt auf Safari Mac 4.0.4 drucken wollen, sind Sie gut (genau wie der Arzt)! Stellen Sie sicher, dass alles in irgendeiner Art von Inhalt erscheint, damit Ihre Kunden nicht fragen, warum leere Seiten aus dem Drucker kommen. Firefox 3.6 Mac scheint dies jedoch richtig zu handhaben.
Nochmals vielen Dank, Chris, für diese Demo!
Das gefällt mir wirklich sehr gut – sehr schick. Die Animation ist auf Firefox und Chrome unter XP etwas ruckelig, aber ich glaube nicht, dass das viel ausmacht.
Gute Arbeit! Und auch schönes semantisches HTML :)
wow… zu beeindruckend. Viele nützliche Techniken in diesem Artikel, jetzt verstehe ich, warum viele meiner Versuche, Dinge nach unten zu schieben, komplett schief gingen (ich versteckte die Elemente im CSS). Ich habe heute definitiv viel Nützliches über jQuery gelernt :D (einige kannte ich gar nicht)
Vielen Dank!
Das sieht großartig aus, ich habe bereits ein paar Ideen, wofür ich es verwenden kann.
Außerdem..
„…Vorzugsweise verwenden Sie es in großen Unternehmensprojekten und verdienen viel Geld. Oder zeigen Sie es Ihren Freunden und sagen Sie ihnen, dass Sie es getan haben…“
Du bist großartig. Einfach großartig!
Ich habe das Skript noch nicht gelesen, aber dieser Effekt sieht brillant aus. Ich bin mir nicht genau sicher, wofür ich es verwenden werde, aber ich WERDE ES VERWENDEN!
Tolles Skript, danke.
Gibt es eine Möglichkeit, zwei separate divs in einem Akkordeon gleichzeitig offen zu halten? In diesem Beispiel, wenn ich sowohl die Superkraft als auch das Kostüm eines Helden sehen wollte, ohne dass eines davon schließt?
Danke für eine weitere großartige Einsicht, Chris.
Und natürlich für Ihr Teilen. Das wird großartige Kost für die neue Website "itsassimpleasthat.com" sein.
Nochmals vielen Dank dafür und für Ihre fortlaufenden Aktualisierungen Ihres Buches.
Wooow, das ist eine coole Idee! Vielen Dank für das Posten dieser schönen Artikel!
Erinnert mich an diesen zweijährigen Beitrag auf cssnewbie
http://www.cssnewbie.com/css-only-accordion
Das ist erstaunlich. Du bist erstaunlich.
einfach genial wie immer, besonders der saubere Markup und die sanften Animationen.
Danke fürs Teilen
Warum funktioniert ein Link wie dieser
<a href=”http://google.fr/” rel=”nofollow”>google.fr</a>
in keinem Browser: ff, ie, opera ...
Sie müssen möglicherweise den Beispielcode aktualisieren, bei dem nach allen Links "a" gesucht wird, zu etwas Spezifischerem wie ".main-image". Oder entfernen Sie einfach diesen Teil des Codes.
Super! Sehr aktuell, ich werde versuchen, es auf eine Art Familienstammbaum-Tabelle anzuwenden... äh.
Übrigens, wo ist Chuck Norris in dieser Liste?
wow!
Ich fühle mich, als schulde ich dir Geld, Mann. Die Sachen, die du machst, sind absolut phänomenal und ich kann mir nicht vorstellen, wie beschäftigt du sein musst!
Ich möchte das definitiv für die Anzeige einiger Informationen auf meinen eigenen Websites verwenden. Deine Erklärungen sind unglaublich.
Bitte sterbe nicht so schnell, denn du ziehst mich allein in eine Webdesign-Karriere, die mich vor Mittelmäßigkeit retten wird. Du hast mein Leben gerettet.
So cool… Ich habe das gesehen, als du letzte Woche auf Twitter darüber gesprochen hast. Ich werde damit spielen und sehen, ob ich es so anpassen kann, dass es einen Hover-Zustand auf den "Zellen" gibt, um anzuzeigen, dass sie klickbar sind, und vielleicht die inaktiven Spalten ausgrauen, damit die fokussierte Spalte noch prominenter hervorgehoben wird.
Das wird eine großartige Übung für meine jQuery/CSS-Tweaking-Fähigkeiten sein. :)
Toller Trick,
Deshalb bin ich ein Fan von dir, Chris.
Das ist so cool. Habe ich noch nie gesehen und ich denke, es ist eine großartige Lösung für viele Daten!
sehr cooooooooooooool
Ohne JavaScript funktioniert es nicht ganz. Wie wäre es, die Positionierung der DDs mit JS statt CSS zu machen? Dann, wenn kein JS vorhanden ist, werden alle Daten angezeigt.
Großartig! Danke
Coolstes von Cool... super-kompakte
Präsentation von Daten.
Wie der obige Poster vorgeschlagen hat,
wäre es schön, die Links hervorzuheben,
z.B.: Strengths/Sidekicks/…etc,
wenn der Benutzer mit der Maus über jeden Link fährt,
um vorzuschlagen, dass der Link klickbar ist).
GROSSARTIG, Chris!
SFdude
Chris, das ist wirklich großartig! Du bist der Mann!
Ich muss wirklich mein Spiel verbessern und jQuery/JavaScript lernen.
hohoho…großartig
Wow, erstaunlich
Sieht exzellent aus. Sehr nützliches Zeug, danke!
Das sieht großartig und sehr nützlich aus. Ich sehe bereits großartige Anwendungen dafür auf der Website meines Unternehmens.
Die Sorge, die ich habe, ist, dass ohne JavaScript die Informationen nicht sichtbar sind. Ich weiß, dass ein sehr kleiner Prozentsatz ohne JavaScript surft, und diese Leute sollten es gewohnt sein, dass die Dinge im Web ziemlich schief aussehen. Es ist nur schwierig, wenn man eine Unternehmenswebsite macht, weil man irgendwie auf den kleinsten gemeinsamen Nenner in Bezug auf Besucher eingehen muss.
Das ist ein wirklich kreatives Konzept, danke fürs Teilen!
Sehr cool! Danke fürs Teilen.
Das scheint in IE8 nicht richtig zu funktionieren. Ich bekomme es in IE7 zum Laufen, aber die Spaltenübergänge animieren sich in IE8 nicht. Sogar in der Online-Demo.
Funktioniert nicht
Windows 7 64 Bit
IE8
Funktioniert
Windows 7 64 Bit
IE8 im IE7-Kompatibilitätsmodus
Firefox 3.6
Chrome
Safari
Das ist wohl die coolste Demo, die ich je auf css-tricks gesehen habe; sie scheint jedoch in IE8 zu knirschen. Es scheint fast so, als würde IE versuchen zu animieren, aber es kann einfach nicht die ganze Verarbeitung bewältigen, die ins Spiel kommt.
Aber ich kann Chris nicht dafür verantwortlich machen, dass IE abstürzt, und wie ich schon sagte, es ist sehr cool. Definitiv lohnenswert, für eine echte Kunden-Website herumzubasteln!
Wow, Chris, wahrscheinlich mein Lieblingseffekt, den du bisher gepostet hast, ich liebe dieses Ding. Die Möglichkeiten sind endlos.
Wow, das ist großartig.
Hey, vielleicht passt diese Lizenz zu Ihren Bedürfnissen?
http://sam.zoy.org/wtfpl/COPYING
;)
PS: Exzellentes Grid. Ich werde es vielleicht irgendwo einbauen.
Das ist großartig!
Whoah, das ist erstaunlich!
Tolles Tutorial! Ich habe aber eine Frage: Gibt es eine Möglichkeit, das Grid automatisch schließen zu lassen, wenn man außerhalb klickt oder nach einer bestimmten Zeit?
Danke für diese großartige Arbeit, wieder ;)
Ich stimme zu – das ist eine brillante Lösung und genau das, was ich für die Anzeige einer kurzen Diskografie suche! :)
Entschuldigung, ich habe hier eine sehr alberne Frage – ich versuche, es mit WordPress zu verwenden und kann die Meldung 'is not a function' nicht loswerden, obwohl ich Variationen von
jQuery(document).ready(function($){ausprobiert habe. Jede Hilfe wäre sehr willkommen!Entschuldigung für die mehrfachen Posts. Nur um zu sagen, dass das Problem behoben wurde, sobald ich die Google API-Version von jQuery – 1.4.2 – verlinkt habe, wie in diesem Artikel vorgestellt.
Die aktuelle Version, die mit WordPress geliefert wird, ist 1.3.2, und soweit ich weiß, wurde .delegate erst in 1.4.2 zu einer Funktion.
Richtig. Delegate ist brandneu. Außerdem sind die Versionen von jQuery, die WP mitliefert, normalerweise automatisch im noConflict-Modus, daher die Verwendung von
var $j = $.noConflict();
Verwenden Sie dann $j überall dort, wo Sie $ verwenden würden, ist der richtige Weg. Ich füge fast immer die neueste Version von jQuery direkt von Google hinzu und beschäftige mich nicht mit all dem.
Meine größte Sorge ist die Tatsache, dass Sie DC & Marvel gemischt haben.
Das ist ziemlich gut
Danke Chris!
Ich habe genau das ohne JavaScript mit der Target-Pseudoklasse gemacht und eine Lösung gefunden, die in IE6+ funktioniert – http://www.thecssninja.com/css/accordian-effect-using-css.
Danke, Chris. Das ist wirklich großartig. Rock weiter!
Das war sehr cool. Ich war mir zuerst nicht sicher, wie es funktionieren würde, aber das ist so funktional. Großartige Arbeit!
Reichlich Genialität, und kein einziger "rel"-Attribut in Sicht! Ich LIEBE es!
Wenn ich nachts die Augen schließe, träume ich davon, deine verrückten Fähigkeiten zu haben. Danke, dass du das teilst.
Vielen Dank, Chris!
Du bist ein großartiger Lehrer für all diesen Code-Kram…
Sehr coole Arbeit, eine großartige Idee, die wirklich nützlich sein wird!
Absolut brillant..!
Eine großartige Methode für kleine, Lebenslauf-Websites..!
Ich stimme zu… Ich konnte der Versuchung nicht widerstehen, meine damit zu machen :)
Und wenn man den Hack von Michał Czernow hinzufügt, funktioniert es wie ein Zauber in IE7+.
Ausgezeichneter Artikel… und ausgezeichnetes Werkzeug!
Weiter so!
Will
Kann man das in einer WordPress-Seite machen?
Funktioniert das mit WordPress?!?!
Zugegeben, WordPress kümmert sich nicht darum, was du im Frontend machst. Ich verstehe jedoch nicht ganz, wie die Skriptseite mit JQuery/no conflict usw. von WordPress funktionieren soll? :)
Eine Antwort vom Mann selbst! Vielen Dank!
Ich mag diese Demo wirklich, sie ist cool. Es gibt nur ein oder zwei Dinge, die ich hinzufügen würde.
1: Hover-Effekt
2: Echte A-Tags, um die Animationen bei :focus auszulösen (Yeah, ich benutze manchmal die Tab-Taste ;-)
Cooler Effekt Chris! Sehr praktisch, aber nicht für jedermann.
Eine Sache. Es wäre schön, wenn man den gesamten Inhalt sehen könnte, wenn Javascript deaktiviert ist.
Man möchte, dass die Website für alle zugänglich ist.
Ein sehr guter Punkt, den ich verpasst habe, da man ohne Javascript keinen Inhalt sehen kann. Vielleicht die Boxen zu Beginn in ihrer vollen Ansicht darstellen und sie dann bei onready in ihren kleineren Zustand ändern?
Ich habe die Zugänglichkeit im Artikel kurz behandelt. Der Inhalt ist für Screenreader zugänglich. Für Menschen mit CSS an und Javascript aus ist er jedoch kaputt. Wenn Sie das beheben möchten, würden Sie die absolut positionierten Kick-off-the-page-Sachen im CSS sowie die hartcodierte Breite entfernen. Es würde für Menschen ohne Javascript ziemlich unbeholfen aussehen, und Menschen mit Javascript würden einen unbeholfenen Blitz von Inhalt sehen, bevor er versteckt wird. Wenn Ihnen diese Dinge nichts ausmachen, legen Sie los.
Sehr cool, ich suche schon seit einiger Zeit nach etwas Ähnlichem. Das sich ändernde Höhen- und Breiten-Akkordeon war für mich wirklich knifflig. Ich habe immer noch keinen Weg gefunden, es als Umschalter zu nutzen. Das kommt dem aber sehr nahe.
Vielen Dank… Ich suche schon lange nach so etwas & endlich habe ich, was ich will..
Das ist unglaublich glatt… wenn ich doch nur ein Projekt hätte, um es zu nutzen :)
Super Tutorial.. Ich werde es auf meinem Theme ausprobieren
Sehr schöner Effekt, könnte wirklich cool sein in einem „Produkte vergleichen“. Ich habe aber noch eine Frage, wie würde es sich verschlechtern, wenn jemand kein Javascript aktiviert hat?
Herr Chris, danke für dieses wundervolle Tutorial, ich bin ein glühender Leser Ihres Blogs aus Nigeria, bitte ich möchte eine spezielle Anfrage stellen, ich bitte Sie im Namen Gottes, können Sie ein Screencast von diesem Tutorial machen, weil ich es wirklich brauche. Danke nochmals und bleiben Sie gesegnet.
Ein fantastisches Menü, das eine Sitemap auf ein neues Level heben würde. Am meisten beeindruckt!!!
Ich liebe dich Mann, deine Arbeit ist stupend erstaunlich brillant!
So ein selbstloser Kerl mit so viel Tatendrang. Es wäre schwer, nicht danach zu streben, ein Mann mit so viel Talent zu sein.
Liebe es! Sehr großzügig von Ihnen, dass Sie Leute Ihre Beispiele herunterladen lassen!
Ich habe ein bisschen damit gespielt und bemerkt, dass auf schwarzem Hintergrund einige der weißen Ränder fehlen.
Siehe Bild… http://ftpwtf.au.com/lines.gif
Ich habe einiges versucht, aber ich kann sie nicht wiederbekommen!
Kann jemand Licht in die Angelegenheit bringen?
Mit freundlichen Grüßen!
Arrrrghhh, das ist großartig. Du rockst Chris!
Enorme Chris!!
Ich bin stoned von deiner Arbeit!! .. .
(französischer Typ, französischer Kommentar)
Ich liebe es, Mann.
Einfach genial. Ich kann 12 Verwendungen dafür sehen.
Aaargh, muss sofort einen Kunden dafür finden! Sooo nett, danke!
Und ich kann nicht glauben, dass es in IE6 besser animiert als in IE8 :) Oh Mann, dieser IE9-Hype muss seinem Namen gerecht werden.
Sieht gut aus Chris. Ich kann es kaum erwarten, es auszuprobieren. Danke fürs Teilen.
Das erste, was ich versucht habe, war die Navigation mit den Pfeiltasten. Ich schätze, das wäre der nächste Schritt.
Und +1 für die vorherige Bemerkung zur Funktion mit CSS an und Javascript aus, ich möchte nicht, dass Inhalte nur mit eingeschaltetem Javascript zugänglich sind.
Ich bin aber nicht nur kritisch, ich mag das Konzept wirklich!
Hallo Chris
Wieder großartige Arbeit. Wäre es möglich, diesen ganzen Block unten zu erstellen / zu kopieren / zu duplizieren, damit man eine ganz neue Kategorie wie Superhelden-Tiere haben kann ;-)
Danke
Jonathan
Wie kann ich jede Spalte in verschiedenen Farben gestalten???
Dieser Effekt ist absolut erstaunlich!!! Einer der Gründe, warum ich von Print auf Web umsteige. Man kann in Print einfach nicht solche Magie erreichen.
Ich möchte wirklich eine Ausrede finden, das jetzt zu implementieren!
Es ist so sehr cool!
Wirklich schöner Effekt. Cheers Chris.
Das einzige Problem, das ich gefunden habe, ist, dass die Scrollbar-Funktionalität zu funktionieren scheint, wenn sie in eine Website integriert ist (und sogar, wenn ich nur die Demo getestet habe). Ich bin mir nicht sicher, ob das beabsichtigt war, aber ich kann einfach nicht herausfinden, wie ich diese Funktionalität wiederherstellen kann.
Die meisten meiner Versuche konzentrierten sich auf „clear: both“, aber ich bin vielleicht komplett auf dem falschen Weg. Irgendwelche Tipps?
Und sobald ich das gesendet habe, erkenne ich meinen Anfängerfehler, dass ich nicht überprüft habe, ob html und body auf height: 100% und overflow: hidden gesetzt waren.
Das ist wirklich wirklich cool. Ich habe eine Weile nach einem solchen CSS-/JQuery-basierten Akkordeon gesucht und diese bestehenden Lösungen passten mir nicht.
Danke fürs Teilen, Chris! Ich werde es in meinem aktuellen Projekt eines Shops mit mehreren Produktgruppen verwenden, um zu erklären, was sie verkaufen.
Vielen Dank!
Oliver
Das ist ziemlich interessant… Ich hatte noch nie einen solchen Bedarf, aber wenn ich darauf stoße, werde ich daran denken, hierher zurückzukehren…
Danke mein Freund!
tolles Werkzeug, um eine ganze Webseite zu erstellen.
nette Grüße
thom
Großartig! Dieses Menü kann in Millionen von Fällen verwendet werden!
Danke und Grüße aus Deutschland
Flo
Ausgezeichnete Demo. Machen Sie es noch besser, indem Sie vollständige Tastaturunterstützung hinzufügen (z. B. Pfeiltasten nach oben und unten).
Tolles Tutorial :) das könnte auch eine interessante Möglichkeit sein, Mitarbeiter in einem Kleinunternehmen zu zeigen.
Ich werde das als Referenz aufbewahren.
Zuerst einmal möchte ich Ihnen für dieses großartige Tutorial und die Idee danken! Seit dem ersten Tag, an dem ich es gelesen habe, bekomme ich es nicht mehr aus dem Kopf. Also spiele ich heute damit herum.
Zweitens, gibt es Beispiele für die Lösung von „Michał Czernow“ für IE? Ich habe diesen Fix noch nicht ganz verstanden. Soll ich CSS3 entfernen und nur altes CSS verwenden?
Drittens: Wenn ich zusätzliche Tabs hinzufüge und mehr Informationen in jeden Tab aufnehme, die mehr als ein Bildschirm fassen, erhalte ich keine Scrollleiste oder die Möglichkeit, zum Ende der Seite zu gelangen. Mein Footer fällt, aber die erweiterten Inhalte der Tabs stoppen bei der Fenstergröße des Browsers. Irgendwelche Ideen, wie ich das beheben kann? Ich würde es bevorzugen, die ganze Webseite zu scrollen und keine Scrollbalken für die erweiterten Tabs hinzuzufügen. Auch auf kleineren Bildschirmen gibt der Browser keine seitlichen Scrollbalken aus. So sind Inhalte rechts vom Bildschirm abgeschnitten.
Danke, Mike
Das 3. Problem habe ich gerade behoben, nachdem ich es gepostet habe, ha ha. Ich habe overflow hidden vom Body entfernt, dann musste ich zusätzliches CSS ändern und hinzufügen, um den schwarzen Hintergrund beim Scrollen zu erhalten.
Mike
Schöne Verwendung von Jquery.
Tolles Interface! Das ist wahrscheinlich einfacher als ich denke: Wie mache ich es so, dass die erste Info-Spalte beim Laden der Seite geöffnet ist? Danke
Wählen Sie den Tab aus, den Sie starten möchten, und ändern Sie den Code zu
Mike
Ok, das hat nicht funktioniert, ändern Sie dt zu dt id=”starter”
Wow Chris! Das ist wirklich großartig! Danke, dass du das mit uns teilst!
Gibt es Neuigkeiten, wie man den IE-Fix implementiert? Nicht die Klassen, sondern die Lösung, die in den Kommentaren erwähnt wird?
Fantastisch, genial
Wow, toller Effekt! Danke Chris, das ist wirklich ein toller Effekt.
wirklich schön in FireFx, aber mit IE8 gibt es einen Flackereffekt. Wahrscheinlich die Handhabung der Klick-Events.
Hallo,
nutze dies unter http://jasondaydesign.com
Ich habe ein Problem. Wenn ich ein Thumbnail hinzufüge und das Bild links oder rechts mit sehr wenig Text float, ist das darunter liegende dt-Element nicht richtig abgesetzt. Das Thumbnail schwebt über den anderen Elementen, wenn sein dt das aktive Element ist.
Gedanken zur Überwindung? (Ich habe einen Div, eine Klasse usw. versucht.)
Sehr schönes Tutorial, gut erklärt, habe es befolgt und es funktioniert super
Vielen Dank.
Einzigartige Perspektive.
Vielen Dank, es wird nützlich sein!
Großartige Verwendung von JQuery, danke Chris. Wenn das Lizenzangebot noch gilt, werde ich dies in einer Webanwendung verwenden, die ich zukünftig in eine EXE konvertiere.
Beste Grüße
miike
Hallo,
Gibt es eine Möglichkeit, die geöffnete Zelle zu schließen, wenn man zum zweiten Mal auf den Titel klickt? Dadurch kann man eine Zelle öffnen und schließen, ohne auf andere Zellen zu klicken.
Danke
Matt
Hallo, großartige Arbeit! Wow! Aber eine Frage: Ich habe Links eingefügt (verwende es als Sitemap), aber sie funktionieren nicht. Was muss ich tun, damit sie funktionieren? Ich habe die Links mit normalen <a href… eingefügt.
Bitte, bitte, bitte, können Sie mir einen Workaround geben?
Cheers, ALI.
Ok, vergiss es, ein guter Freund hat mir geholfen (onClick…). Schade, dass es in IE8 nicht funktioniert (gibt es einen Fix dafür oder nicht?).
Immer noch: Superduper Arbeit und genau das, wonach ich gesucht habe.
Danke nochmals und Entschuldigung für den doppelten Post.
ALI.
Danke für diesen Akkordeon!
wirklich cool!
ich habe es für eine Website verwendet
http://www.loudnproud.it
Aber die CSS-Hintergrundregeln für „dt“ funktionieren in IE7& IE8 nicht.
In Firefox werden die schrägen Linien im Hintergrund korrekt angezeigt, aber alle CSS-Hintergrundattribute wie Farbe und Bild werden von IE nicht gelesen.
Wie kann ich das lösen?
Hallo!
Ich habe ein Problem. Ich liebe dieses Skript, aber vielleicht weißt du…
wie kann ich die Farbe in der anderen Gruppe an der 1. Position ändern?
dt:nth-of-type(2) { background: #ff7d3e; }
dd:nth-of-type(2) { background: #ff7d3e; }
Weißt du, wie das geht….
dt1:nth-of-type(2) { background: #ff7d3e; }
dt2:nth-of-type(2) { background: #00000; }
Ich habe keine Ahnung, wie man nth-of-type ändert… Danke für die Hilfe Reachelmax
Wie benutze ich es mehrmals auf derselben Seite???