Direkt zum Inhalt

HTML-Akkordeon

Dies ist eine Umsetzung des Accordion Design Pattern für dynamisches HTML. Es kann in beliebige HTML-Seiten eingebettet werden.

Wenn im Browser JavaScript deaktiviert ist, funktioniert das Akkordeon nicht, sondern alle Slider sind ausgeklappt.

1. Herunterladen und entpacken

Lade das folgende ZIP-Archiv herunter: accordion.zip. Entpacke es und speichere die enthaltenen Dateien in dem Ordner, in dem sich die HTML-Datei befindet, in der du das Akkordeon verwenden möchtest.

2. HTML-Datei vorbereiten

Füge in den <head>-Bereich deiner HTML-Datei folgenden kleinen Codeschnipsel ein:
<link href="accordion.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="accordion.js"></script>
Ändere das <body>-Element deiner HTML-Datei ab, indem du das fett Markierte hinzufügst:
<body onload="accord_loader()">

3. Akkordeon erstellen

Erstelle nun das Akkordeon an einer beliebigen Stelle innerhalb des <body>, indem du nacheinander für jeden Slider folgenden Codeblock hinzufügst:
<div class="accordionSlider"><div class="accordionSliderHead">
Titel
</div><div class="accordionSliderBody"><div class="accordionSliderInBody">
Inhalt
</div></div></div>

4. Styling

Das Erscheinungsbild des Akkordeons kann mittels CSS beliebig gestaltet werden. Dabei ist ein Slider (inkl. Header) von einem div der Klasse accordionSlider umgeben, deren Stil fast beliebig verändert werden kann (allerdings sollten sowohl position als auch display und float nicht verändert werden, damit das Akkordeon weiterhin funktioniert). Bei den Klassen accordionSliderHead, accordionSliderBody und accordionSliderInBody darf nur Hintergrund- und Textstil verändert werden, nicht jedoch der Rahmen (border, padding und margin müssen unbedingt unangetastet bleiben).
Das Stylesheet, mit dem das Akkordeon auf dieser Seite gestaltet wurde, findet sich hier.

Tipp

Es müssen nicht alle Slider gleich hoch sein, damit das Akkordeon funktioniert, allerdings ist es in diesem Fall besser bedienbar. Verwende zum Beispiel folgende Zeile in deinem Stylesheet, damit alle Slider eine bestimmte Höhe haben und nur im »Notfall« größer werden:
.accordionSliderInBody { min-height:16em }

Beispiel

Folgendes ZIP-Archiv enthält ein sehr einfaches Akkordeon, inklusive Stylesheet: accordion-sample.zip. Es kann beliebig erweitert werden.
Tipp: Als Besonderheit verwendet dieses Beispiel nach dem letzten Akkordeon-Slider noch ein leeres div-Element, der Klasse accordionCloser das zusammen mit dem passenden Stil im Stylesheet dazu dient, das Akkordeon durch eine einfache horizontale Linie abzuschließen. Dieses div muss direkt im Anschluss an den letzten Slider des Akkordeons im Quellcode auftreten.

Lizenz

Dieses Werk steht unter einer der sog. MIT-Lizenz entsprechenden Lizenz. Die Lizenz ist dem Download beigefügt.

Besonderheiten

  • Umschaltung bei Maus-Hover
  • Sanfte Animation
  • Fade-Effekt ein-/ausschaltbar
  • Ohne JavaScript-Kenntnisse verwendbar
  • Beliebig stylebar
  • Freie Software - von jedem kostenlos verwendbar

Viel Spaß beim Akkordeon-Spielen!

Kommentare zu dieser Seite

1. Markus Thommessen bedauerte am 27.5.2013 um 14:05:

Hallo "plippo"!

Ich versuche dein HMTL-Akkordeon in eine Website einzupflegen, die mittels Jimdo erstellt wird.

Leider ist es dort nicht möglich, den <body> zu bearbeiten, sondern nur den <head>.

Kann man den Slider auch so zum Laufen zu bringen?

Ich habe es bereits im <head> versucht mit:
<script type="text/javascript">
accord_loader();
</script>

Leider ohne Erfolg.

2. Philipp antwortete am 30.5.2013 um 19:52:

Hallo Markus,

statt accord_loader in deinem Script direkt aufzurufen, kannst du es mit folgendem Code probieren:
<script type="text/javascript">
window.onload = accord_loader;
</script>

(Wichtig: keine Klammern hinter accord_loader!)

3. urs beschwerte sich am 31.1.2014 um 17:55:

hallo

habe eine einfache html-seite erstellt und die scripts gemäss anleitung ausgeführt.
funktioniert überhaupt nicht

urs

4. Philipp entgegnete am 5.2.2014 um 21:52:

Geht's etwas genauer? Wenn ich helfen soll, muss ich schon wissen, wo das Problem ist. Auf dieser Seite funktioniert das Akkordeon ja auch.

5. Nicole sagte am 14.11.2014 um 16:36:

Hallo, ich habe auch versucht dein Script einzubinden. Leider scheitere ich irgendwo...

Hier mal der Link dazu: http://mein-finanz-profi.de/test
Ich arbeite mit dem System Worldsoft und hab hier irgendwie Probleme...

Der Quellcode im Inhalt:
<script type="text/javascript">
window.onload = accord_loader;
</script><!--?xml version="1.0" encoding="UTF-8"?-->
<title></title>
<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
<meta content="application/xhtml+xml; charset=UTF-8" http-equiv="content-type" />
<meta content="text/css" http-equiv="content-style-type" />
<link href="http://mein-finanz-profi.de/wcms/ftp/m/mein-finanz-profi.de/staticfiles/sample.css" rel="stylesheet" type="text/css" />
<link href="http://mein-finanz-profi.de/wcms/ftp/m/mein-finanz-profi.de/staticfiles/accordion.css" rel="stylesheet" type="text/css" /><script type="text/javascript" src="/wcms/ftp/m/mein-finanz-profi.de/staticfiles/accordion.js"></script><!-- frei stylebar: accordionSlider, accordionCloser --><!-- nicht berahmbar: accordionSliderHead, accordionSliderBody, accordionSliderInBody -->
<div class="accordionSlider">
<div class="accordionSliderHead">
<h3>Slider 1</h3>
</div>

<div class="accordionSliderBody">
<div class="accordionSliderInBody">
<div>Das ist Slider 1<br />
Mit viel Inhalt<br />
Jawoll, das isser!</div>
</div>
</div>
</div>

<div class="accordionSlider">
<div class="accordionSliderHead">
<h3>Slider 2</h3>
</div>

<div class="accordionSliderBody">
<div class="accordionSliderInBody">
<div>Slider 2<br />
Inhalt<br />
Jawoll!</div>
</div>
</div>
</div>

<div class="accordionSlider">
<div class="accordionSliderHead">
<h3>Slider 3</h3>
</div>

<div class="accordionSliderBody">
<div class="accordionSliderInBody">
<div>Der Slider 3<br />
<a href="#">hat Inhalt</a><br />
Oh Jawoll!</div>
</div>
</div>
</div>

<div class="accordionCloser"></div>

Und hier der Quellcode im Header / Kopfzeile:
<link href="http://mein-finanz-profi.de/wcms/ftp/m/mein-finanz-profi.de/staticfiles/accordion.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/wcms/ftp/m/mein-finanz-profi.de/staticfiles/accordion.js"></script>

Kannst du mir evtl. weiterhelfen und mir sagen, wo das Problem liegt oder bin ich ein hoffnungsloser Fall? ;-)

Danke im Voraus
Nicole

6. Philipp erklärte am 16.11.2014 um 14:04:

Hallo Nicole,
das Problem sind Zeilenumbrüche bzw. Leerzeichen in deinem Code. Aus bestimmten Gründen stören diese auf deiner Seite das Skript, während es auf meiner Beispiel-Seite und vielen anderen Seiten funktioniert. Du müsstest das Akkordeon bei dir so anpassen:

<div class="accordionSlider"> [ZEILENUMBRUCH ENTFERNEN]
<div class="accordionSliderHead">
<h3>Slider 1</h3>
</div>[ZEILENUMBRUCH ENTFERNEN]
[ZEILENUMBRUCH ENTFERNEN]
<div class="accordionSliderBody"> [ZEILENUMBRUCH ENTFERNEN]
<div class="accordionSliderInBody">
<div>Das ist Slider 1<br />
Mit viel Inhalt<br />
Jawoll, das isser!</div>
</div>
</div>
</div>

-> damit es dann so aussieht:
<div class="accordionSlider"><div class="accordionSliderHead">
<h3>Slider 1</h3>
</div><div class="accordionSliderBody"><div class="accordionSliderInBody">
<div>Das ist Slider 1<br />
Mit viel Inhalt<br />
Jawoll, das isser!</div>
</div>
</div>
</div>

Und das bei allen drei Slidern. Dann sollte es funktionieren. Sorry dass das Skript da nicht robuster ist. Ich hoffe es klappt!

Viele Grüße
Philipp

7. Rainer sagte am 2.12.2014 um 17:10:

Kann ich die Umschaltung auch per Klick anstatt Mouse-Over einstellen?

8. Philipp antwortete am 3.12.2014 um 17:11:

Sollte kein Problem sein, wenn man im Skript das mousemove durch ein mousedown ersetzt.

9. Tilla sagte am 27.1.2015 um 13:49:

Erstmal: Danke für das script!
Und meine Frage: Ist es einstellbar, dass auch der 1. Slider erst aufklappt, wenn man drüber fährt?
Dank im Voraus

10. Tilla sagte am 27.1.2015 um 20:39:

Ah, entsprechenden ?:-Operator gefunden.
Damit gelöst.
LG

11. Matze sagte am 6.10.2017 um 10:58:

Hallo,
ich würde gerne wissen, wo ich den Operator finde, damit auch der erste Slider zu Anfang eingeklappt bleibt. Außerdem, gibt es eine Möglichkeit, am Ende der Überschrift jeweils ein + und - einzufügen, je nach dem ob die Slider offen oder geschlossen sind?
Vilen Dank

Neuen Kommentar schreiben

Die Kommentare sind leider deaktiviert.

Zurück zum Anfang