Die Idee von "CSS-Tabs" gibt es schon lange. Wenn man danach googelt, findet man viel über *gestaltete* CSS-Tabs, aber weniger über die Erstellung eines tatsächlich funktionalen Tab-Bereichs. Zumindest funktional, wie wir uns Tab-Bereiche heute vorstellen: einen Tab anklicken, einen neuen Inhaltsbereich sehen, ohne dass die Seite neu geladen wird.
Die Bewältigung funktionaler CSS-Tabs hat keine so tiefe Geschichte. Brad Kemper hat 2008 damit herumgespielt und versucht, den Pseudo-Selektor :checked mit Radiobuttons und Nachbar-Geschwister-Kombinatoren zu nutzen. Dies ist eine wirklich coole Technik, die man für Dinge wie erweiterbare/kollabierbare Baummenüs oder visuelle Ersetzung von Formularfeldern durch Grafiken (pionierhaft von Ryan Seddon) verwenden kann.
Ich persönlich habe vor einiger Zeit versucht, mit funktionalen Tabs herumzuspielen und bin auf sieben verschiedene Wege gestoßen, dies zu tun. Die meisten konzentrierten sich auf die Verwendung der :target Pseudo-Klasse und die meisten dieser Techniken waren schlecht. Eine war okay. Alle hatten einen Hauptfehler: Es mussten URL-Hashes verwendet werden, was die Seite zum Element mit der passenden ID "springen" ließ, was völlig unerwartet, ruckartig und insgesamt eine schlechte Erfahrung war.
Die Arbeit mit der Radio-Button/:checked-Technik ist viel besser, aber es gab einen langjährigen WebKit-Bug, der verhinderte, dass Pseudo-Klassen-Selektoren und Nachbar-Geschwister-Kombinatoren zusammenarbeiteten. Gute Nachrichten! Das ist seit stabilen Browser-Versionen Safari 5.1 und Chrome 13 behoben.
Also, machen wir das Ding auf die :checked-Weise, was meiner Meinung nach für jetzt und die nächsten Jahre der sauberste Weg ist.

HTML-Struktur
Ein Wrapper für die gesamte Gruppe, dann ist jeder Tab eine Div, die den Radiobutton (für die Funktionalität), ein Label (den Tab) und eine Inhalts-Div enthält.
<div class="tabs">
<div class="tab">
<input type="radio" id="tab-1" name="tab-group-1" checked>
<label for="tab-1">Tab One</label>
<div class="content">
stuff
</div>
</div>
<div class="tab">
<input type="radio" id="tab-2" name="tab-group-1">
<label for="tab-2">Tab Two</label>
<div class="content">
stuff
</div>
</div>
<div class="tab">
<input type="radio" id="tab-3" name="tab-group-1">
<label for="tab-3">Tab Three</label>
<div class="content">
stuff
</div>
</div>
</div>
CSS-Layout
Grundsätzlich
- Verstecke die Radiobuttons (wir müssen sie nicht sehen, sie müssen nur angeklickt oder nicht angeklickt sein).
- Float die Tabs, damit die Labels in einer Zeile von Links angeordnet werden.
- Positioniere die Inhaltsbereiche absolut genau übereinander.
- Wenn ein Radiobutton :checked ist, lasse den benachbarten Inhaltsbereich mit z-index darüber liegen (visuell sichtbar und die anderen versteckt).
.tabs {
position: relative;
min-height: 200px; /* This part sucks */
clear: both;
margin: 25px 0;
}
.tab {
float: left;
}
.tab label {
background: #eee;
padding: 10px;
border: 1px solid #ccc;
margin-left: -1px;
position: relative;
left: 1px;
}
.tab [type=radio] {
display: none;
}
.content {
position: absolute;
top: 28px;
left: 0;
background: white;
right: 0;
bottom: 0;
padding: 20px;
border: 1px solid #ccc;
}
[type=radio]:checked ~ label {
background: white;
border-bottom: 1px solid white;
z-index: 2;
}
[type=radio]:checked ~ label ~ .content {
z-index: 1;
}
Das ist ziemlich schlankes CSS und es lässt sich beliebig auf eine beliebige Anzahl von Tabs erweitern, indem man einfach mehr "Tab"-Divs im HTML hinzufügt.
JavaScript
Gibt es nicht, Käpten!
Warum dieser Weg genial ist
- Er verwendet kein :target, also keine Seiten-Sprünge-Mist und keine Hijacking der Zurück-Taste.
- Er ist barrierefrei. Die seltsamen Radiobuttons sind mit display: none versteckt, damit Screenreader sie nicht sehen und (vermutlich) verwirrt werden, und kein tatsächlicher Inhalt ist mit display: none versteckt;
- Er funktioniert in Safari 5.1+, Chrome 13+, Firefox 3.6+, Opera 10+ und IE 9+. Vielleicht etwas tiefer bei Chrome, Firefox und Opera, aber Safari und IE sind definitiv korrekt.
Warum dieser Weg nicht genial ist
- Er erfordert eine feste Höhe für den Tab-Bereich, was Mist ist. Ich glaube, es gibt vielleicht einen Weg, das zu beheben, auch wenn ich es noch nicht ganz geschafft habe.
- Die Radiobutton-Sache ist etwas hackelig.
- Er hat nicht die tiefste Browserunterstützung (IE 9 ist schon viel verlangt). Wenn man tiefere Unterstützung braucht, muss man JavaScript verwenden.
Verstanden, alles klar
Nur zum Spaß habe ich dem Live-Demo-Tab einige Übergänge hinzugefügt.
Sehen Sie den Pen
Funktionale CSS-Tabs von Chris Coyier (@chriscoyier)
auf CodePen.
Die Geniale Theoretische Zukunft – display: stack;
Wie ich erwähnt habe, ist die Radiobutton-Sache ein wenig hackelig. Es ist toll, dass wir das jetzt machen können und die Erfahrung ist ziemlich gut, aber die Art und Weise, wie wir codieren müssen, ist weder elegant noch intuitiv. Tab Atkins, der CSS-Spezifikationen schreibt, denkt, dass display: stack; wahrscheinlich die Zukunft für eine Tabbed-Benutzeroberfläche über CSS ist.
„Tab Atkins“? Du machst wohl Witze!
Ja, er übernimmt von Radio Vasquez
CHRIS MACHT NIE WITZE.
Danke, Chris,
dies erwies sich als sehr hilfreich für meine Website, da ich die JS-Methode nicht verwenden konnte,
aber es funktioniert nicht auf Mobilgeräten. Haben Sie das auch erlebt, und haben Sie eine Lösung für dieses Problem?
Nochmal vielen Dank,
Hallo Chris,
Ich habe gerade die Demo getestet und der Seitenkopf flackert beim Wechseln der Tabs, seltsam! (es ist keine Beschwerde)
Ich bin auf OSX Safari 5.1 (in Chrome passiert das nicht)
Das passiert bei mir auch in Safari (und nicht in Chrome). Es hängt mit den Übergängen zusammen, also lass sie weg, wenn es ein Problem ist.
Mit Chrome 13 auf einem Mac mit Leopard flackert die gesamte Seite nach jedem Übergang schwarz. Seltsam, dass bisher niemand dieses Problem hat...
Wirklich einfache/coole Demonstration, auf jeden Fall! Ich werde vielleicht bald etwas Ähnliches verwenden! (mit JS, aber)
Alter Kram, aber es löst einige Probleme in alten Browsern...
http://tjkdesign.com/articles/spry/tabbed-panels_better_version.asp
Ich habe Jacob Dubails geniale Idee aufgegriffen und eine fade-Galerie daraus gemacht http://jsfiddle.net/chrisbuttery/fWNnr/18/
Das Problem, das ich sehe, warum das auf iOS nicht funktioniert: Man klickt die Tabs an und nichts passiert
Ich liebe es, die reinen CSS-Lösungen für verschiedene Designhindernisse zu sehen. Das bedeutet nicht, dass ich mich immer dafür entscheide. Heutzutage verwende ich für Tabs meist eine CSS- und JavaScript-Methode, bei der der gesamte Inhalt sichtbar ist (oft gestapelt), wenn JavaScript nicht verfügbar ist.
Aber danke für die Arbeit. Es regt zum Nachdenken an :)
CSS ist bei solchen Dingen so ziemlich immer schlecht für die Benutzerfreundlichkeit. Persönlich verstehe ich diese Faszination nicht, eine visuelle Anzeigesprache zu verwenden, um Funktionalität und Verhalten auf einer Webseite zu ändern. Genau dafür ist JavaScript gedacht.
Ich weiß, ich weiß, das Testen der Grenzen der Sprache ist großartig. Aber ich frage mich oft, was der Sinn ist?
+1
Ich stimme dem zu, obwohl es ziemlich "cool" ist, das mit CSS zu versuchen ;)
Ich stimme Ihnen im Prinzip zu. Ich denke, manchmal war dieser Blog schuldig, reine CSS-Lösungen zu suchen, nur weil sie gemacht werden können. Aber sind Tabs nicht mehr eine "visuelle Anzeigemethode" als eine "Funktionalität" oder ein "Verhalten"? Sie sind so grundlegend und allgegenwärtig, dass es nicht notwendig sein sollte, JavaScript einzubringen.
https://css-tricks.de/13758-functional-css-tabs-revisited/
@jon Es ist eine berechtigte Frage, aber ich glaube nicht. Die Ubiquität eines Interface-Elements sollte nicht beeinflussen, ob es in einer oder einer anderen Schicht implementiert werden sollte. Ich denke, der interaktive Aspekt von Tabs ist immer vorhanden, unabhängig davon, wie verbreitet sie als visuelles Element sind, und diese Interaktion sollte immer noch von der Verhaltensschicht gehandhabt werden, solange sie noch eine separate ist.
Sehr schön. Ich wollte schon immer so etwas tun, aber ich konnte keinen Weg finden, der mir gefiel.
Man muss nur noch ein iOS-spezifisches Menü hinzufügen, das die Seite komplett wechselt.
Danke, Chris! Was ich noch hinzufügen würde, ist
cursor: pointerbeim Hovern über die Tabs :)In Firefox zeigt der linke Tab einen "fehlenden" Pixel, wenn er ausgewählt ist. Das liegt daran, dass der weiße untere Rand für die gesamte Tab-Breite aktiv ist. Das Setzen von border-bottom auf null hat dieses Problem für mich behoben.
[type=radio]:checked ~ label {
background-color:#FFFFFF;
border-bottom:0px; /* kleiner Firefox-Glitch – links unten des ersten Tabs fehlt ein Borderpixel */
z-index:2;
}
Ben Cavens, dann zeigt es den unteren Rand aus dem Selektor
.tab labelin mindestens Opera und Chrome an (habe es nicht in IE und Safari getestet). Nicht gut!Entschuldigung, mein Fehler, das tut es nicht :)
Das ist sehr cool.
Mir scheint, dass man für Tabs eigentlich den Fragment-Identifier (
#tab1,#tab2etc.) zum Verlinken möchte, und daher eine Lösung, die die gleiche Technik wie Jenna Smith (unter anderem) für JS-freie Lightboxen verwendet (wie diese hier), möglich sein sollte. Und das hätte den Vorteil einer viel breiteren Browserunterstützung, bis hin zu IE6 (9,7 % weltweit – aber schnell fallend, Gott sei Dank). Der Nachteil ist (und das ist ein großer), dass es wahrscheinlich nur für die Haupt-Tabs auf einer Seite nützlich wäre, da es den Fragment-Identifier übernimmt und wahrscheinlich nur gut funktioniert, wenn die Seite nicht gescrollt ist.Bei Chrome 15, wenn man vom Tab der Dämonenkatze zu einem anderen Tab wechselt, wird zum neuen Tab übergeblendet, dann wird das Katzenbild kurz angezeigt, dann wieder der tatsächliche Inhalt dieses Katzen-Tabs. Wahrscheinlich am besten, die Animation zu entfernen – für wen auch immer –, da es in mehreren Browsern einen Bug damit gibt.
Sehr schön,
Ich mag die Einfachheit dieser Methode.
Es gibt einige ziemlich einfache Verbesserungen, die ich sehe, die mit JavaScript als Basis hinzugefügt werden können.
Funktioniert nicht in Chrome 9 unter Windows...
Die Browserunterstützung ist im obigen Artikel aufgeführt. Chrome aktualisiert sich automatisch und ist in v13 stabil. Schalten Sie die automatische Aktualisierung aus? Ich wusste nicht einmal, dass das möglich ist.
Könnten Sie ein Video davon machen? Ich meine, um all diese Selektoren zu erklären
Danke, Chris. Ich habe gerade begonnen, eine Tab-Lösung für meine Webseite zu implementieren, und diese funktioniert perfekt. Danke für Ihre Artikel und dass Sie Leuten wie mir beibringen, wie man Websites erfolgreich modifiziert. Jeden Tag fühle ich mich dank guter Artikel wie diesem mehr und mehr wie ein Designer. Was mich sehr glücklich macht, ist die Tatsache, dass keine JavaScript verwendet wird. Danke vielmals
Funktioniert nicht bei mir auf Chrome XP. Es funktioniert mit Chrome unter Ubuntu Linux.
Bei mir dasselbe.
Aber das passiert wahrscheinlich, weil ich XP auf einer virtuellen Maschine betreibe.
Ich könnte das für ein Projekt verwenden, an dem ich arbeite, ich werde es zeigen, wenn ich es tue.
Hier eine weitere Demo http://jsfiddle.net/laukstein/fWNnr/39/
Wow, ohne JavaScript! Das ist der richtige Weg :)
Clevere Idee mit den Checkboxen :)
Aber das hat Probleme, wenn die Tab-Inhalte unterschiedliche Höhen haben.
Deshalb habe ich meine eigene Version ohne
position:absolute(undclear: both, float:left) erstellt und die HTML-Struktur ist nicht so schön wie Ihre.Ich benutze
:checked + * + label, also erfordern mehr Tabs mehr+ * +:(Hier ist der Code http://jsfiddle.net/bUjQm/18/
Die vorherige Version funktioniert nicht mit dem neuesten Chrome 13 und Safari 5.1, aber ich habe eine Lösung gefunden – und danach habe ich Ihre Nachricht über den WebKit-Bug gelesen :)
Einer meiner Webkit-Fixes:
body ~ :checked {}(oder
anything ~ any_sibling_to_+_*_+ {/*empty*/})Neuer Code: http://jsfiddle.net/bUjQm/21/
Die Breite des Tab-Containers kann beliebig eingestellt werden?
Was ist mit Überläufen?
Dies funktioniert hauptsächlich, weil das Klicken auf
als Teil des Standardverhaltens des Browsers die unsichtbare Radiobox automatisch ankreuzt.Der unerwartete Platz ist eigentlich das
<label>.Ich werde dies *sicher* in meinem persönlichen Website-Redesign verwenden. Vielen Dank!
Chris, das ist super Zeug. Mach weiter so! :)
Ich liebe das, aber ich wünschte, ich könnte etwas jQuery/JavaScript einbauen, um die Tabs alle 30 Sekunden oder so durchzuschalten…
Ich habe es mit Checkboxen verwendet, um einen Baum-Dateibrowser zu erstellen.
Zeige den Unterbaum, wenn er angekreuzt ist.
Und das Brillante ist, dass die Checkboxen ihren Wert behalten, auch wenn sie versteckt sind.
Toller CSS-Trick, danke
Eine sehr schöne und einfache Möglichkeit, gleitende Inhalte in Websites zu integrieren, nur eine Sache: Wenn wir den Hand-Cursor statt des Pfeils beim Überfahren der Tabs anzeigen könnten. Ich habe es nicht ausprobiert, hoffe aber, dass es möglich wäre
Funktioniert nicht auf dem iPad. Schade.
Ich habe früher etwas daran gearbeitet, Tabs mit semantischerer Markup zu erstellen, d.h. durch die "korrekte" Gruppierung von Headern und Inhalten, wie Sie es in Ihrem Beispiel tun: http://fittopage.org/2010/05/tabs-done-right/
Meine Lösung stützt sich immer noch auf JavaScript, hat aber den zusätzlichen Vorteil, dass sie derzeit browserübergreifend funktioniert.
Ich habe ein bisschen zusätzlichen HTML und einen Hauch von Animation hinzugefügt, um diese kleinen Dinger zu kollabierbaren Dropdowns zu machen. Probieren Sie es aus!
Ich war so aufgeregt, damit zu spielen, dass ich die fehlende iOS-Unterstützung vergessen habe, was unglücklich ist :(
http://jsfiddle.net/paullferguson/Sv54G/3/
Ich wollte Tabs mit Text darunter UND Inhalt (Slideshows) darüber haben, bezogen auf den Textinhalt IN den Tab-Panels. Ich habe nicht die JS/JQ-Fähigkeiten, um es zu schreiben, und die Plugins und so, die ich ausprobiert habe, haben nicht funktioniert.
Ich bin heute Abend auf diesen (ein paar Jahre alten) Thread gestoßen, und… http://jsfiddle.net/pixelsound/bwarQ/3/
Ich glaube, das wird funktionieren!
-Ich habe den div für den "oberen" Inhalt im Tab hinzugefügt, absolut darüber positioniert… (Platzhalter für Text vorerst – wenn dies eine Slideshow ist, wird sie mit dem Inhalt des Tab-Panels ein- und ausgeblendet und ersetzt die zuvor laufenden Slides)
-Die relative Positionierung/Höhe des gesamten Tab-Divs wird den Footer oder den darunterliegenden Inhalt schön nach unten schieben.
-Ich denke, dass ich dies mit etwas Media Query-Aktion zu einem Akkordeon für kleine/mobile Bildschirme kollabieren lassen kann.
-Ich denke auch, dass das iOS-Support-Problem seit 2011 (?) behoben ist…
DANKE! DANKE! DANKE!
Hallo Chris!
Geniales Zeug – ein Vorschlag (obwohl ich es noch nicht ausprobiert habe) – was ist mit der Platzierung der unsichtbaren Tabs unter dem Body (der einen Hintergrund haben sollte) mit z-index: -1; – das *sollte* die Höhenprobleme lösen?
eine Sache – ich benutze Chrome 14 – und ich sehe die Radiobuttons? und die Tabs funktionieren nicht – die Hervorhebung ändert sich, aber der Inhalt bleibt bei Tab 2. :/
warte.. mein Fehler – ich habe dort wohl auf die falsche Demo geschaut .. Deine funktioniert :D
Gibt es eine Möglichkeit, dies für IE8 ohne JavaScript zum Laufen zu bringen? Ich arbeite gerade für einen Kunden, der die gesamte Website ohne JavaScript codiert haben möchte. Sie verwenden IE8 als ihren primären Browser (sie haben viele Sicherheitsprobleme).
Wahrscheinlich nicht mehr hier, um das zu beantworten, aber ich habe diesen Code als sehr nützlich empfunden, meistens einfach für mich zu bekommen, wie ich es brauche… außer für die Tabs selbst. Ich kann nicht herausfinden, wie ich die Tabs skalieren kann, ich lese vielleicht etwas falsch, da ich relativ neu in HTML und Dohtml bin. Das Problem, das ich habe, ist, dass, wenn ich etwas tippe; wie ein langer Name in einem Tab, der Tab dehnt sich für den Namen. Was ich gerne tun würde; ist, den Namen gestapelt zu haben, also den Vornamen oben und den Nachnamen darunter. Ich habe versucht, einfach einen Abstand zwischen den Namen einzufügen, und das hat nichts getan, außer das Aussehen des Tabs zu verändern. Ich habe versucht, eine Höhe zu den Tabs hinzuzufügen, wie Höhe oder Zeilenhöhe, und ich konnte das auch nicht zum Laufen bringen. Könnte das alles falsch machen oder am falschen Ort sein….
@AJ – Um die Höhe des Tabs (d.h. des Teils, den Sie anklicken und der "Tab1…2…3… usw." anzeigt) anzupassen, müssen Sie eine Zeile "display:block" zur Klasse ".tab label" hinzufügen und dann wie gewohnt Höhen- und Breitenattribute hinzufügen. Ich glaube. Und ich garantiere nicht, dass das nicht alles andere durcheinander bringt.
Das ist ein nützliches Stück CSS. Ich mag es.
Obwohl reine CSS-Lösungen für Probleme übertrieben und sinnlos erscheinen mögen (einige Lösungen sind es), ist ein guter Grund für CSS-Tabs in eBay-Listings. Sie dürfen kein JS in Ihren Listings verwenden, daher ist CSS in dieser Hinsicht mein bester Freund. Ich habe CSS-Tabbing in meinen eBay-Listings bisher wegen Problemen mit der Browserkompatibilität vermieden.
Aber leider, obwohl die obige Lösung besser ist als meine früheren Versuche (und die gleichen Ergebnisse eleganter erzielt), weigert sich Internet Explorer immer noch, mitzuspielen. Aber anscheinend ist IE perfekt und es sind die meisten anderen wichtigen Browser der Welt, die ein Problem haben. Offensichtlich – ich meine, was wissen Mozilla, Google, Opera, Apple et. al.? Wer braucht schon einen globalen Standard?
Und welcher Web-Monkey mit Selbstachtung genießt es, jedes verdammte Mal eine völlig separate Lösung für IE zu entwickeln, wenn er etwas tun möchte?
Okay, Sie haben mich entlarvt. Ich bin nur hierher gekommen, um mich über Microsoft aufzuregen. Genießen Sie Ihr zufälliges Stück Information, AJ.
:-D
Zur Information: Die Lösung, um dies in älteren iOS-Versionen zum Laufen zu bringen, ist ein leeres Click-Handler, das Sie auf alle Labels anwenden können, indem Sie diesen JavaScript-Code verwenden
Diese Lösung funktioniert nicht in IE8. Hat jemand eine Lösung für IE?
Gibt es eine Möglichkeit, dass die Tabs einen Inhaltsbereich vor den Tabs und den Inhalt unter den Tabs steuern?
Vielen Dank,
Aaron
Das würde ich auch gerne wissen! Ich möchte, dass die Tab-Auswahl eine Änderung in einer JavaScript-Slideshow auslöst, die sich außerhalb der Tab-Inhaltsbereiche befindet.
Dies ist ein sehr gutes Tab-Plugin, das ich getestet habe
https://github.com/jellekralt/Responsive-Tabs
…aber ich stoße auf das Problem der variablen Höhe und möchte, dass die Tab-Auswahl einen Wechsel in der Slideshow bestimmt.
Für das Problem der variablen Höhe werde ich einige von Vesas Lösungen ausprobieren (siehe unten; http://codepen.io/Merri/pen/bytea )
Haben Sie eine Lösung gefunden, Aaron? Ich bin neu in JavaScript, scheue mich aber nicht davor, um dieses Tab-Trigger-Problem zu lösen…
Hilfe, irgendjemand?
Ich habe einige Zeit mit diesen Tabs verbracht, um das Problem der variablen Höhe zu beheben, was ein interessantes Problem zu lösen war. Dann habe ich mich auch dafür interessiert, es so zu reparieren, dass es in IE8 und darunter funktioniert. Das bedeutet also hinzugefügtes JavaScript. Ich habe das JS jedoch minimiert und stattdessen CSS die Hauptarbeit in IE8 und in IE7 und sogar in IE6 machen lassen.
Ich habe sogar etwas Responsiveness hinzugefügt mit einer einfachen Media Query.
http://codepen.io/Merri/details/bytea
Ich würde sagen, das Endergebnis ist jetzt eine ziemlich gut durchdachte CSS-basierte Tab-Lösung. Das Hinzufügen der Fallback-Unterstützung fügte auch weitere Klassen zum HTML hinzu, um Probleme mit der Verwendung von Eingabefeldern und Labels darin zu vermeiden, aber das sollte für niemanden ein großes Problem sein.
Das einzige ungelöste Problem hier ist die Linkfähigkeit zu Inhalten in Tabs, was im realen Leben eine Anforderung sein kann. Das Verlinken zu Tabs über Hashes wird von vielen gemacht, aber ich habe nicht viele Lösungen gesehen, die auch den richtigen Tab öffnen würden, wenn der Inhalt innerhalb des Tabs verlinkt ist. Dafür habe ich eine andere Lösung
http://codepen.io/Merri/details/qsdza
Dies ist nur für IE8+ und benötigt etwas Codebereinigung, ist aber ziemlich solide in dem, was es tut.
Vesa – Dein Code ist genial, danke! Die einzige Beschwerde ist, dass, wenn Sie dieses Tab-Setup irgendwo weiter unten auf der Seite haben, es in Chrome nach oben scrollt.
Ich werde das wahrscheinlich in JS kompensieren (ich werde es in unserem WordPress-Plugin verwenden und Ihnen die Anerkennung geben), aber wenn Sie einen besseren Weg kennen, bin ich ganz Ohr!
Toller Beitrag und tolle Diskussion hier.
Das sieht großartig aus – ich probiere es aus…
Gibt es Gedanken zu Aarons Frage oben – um die Tab-Auswahl ein Element außerhalb des Tab-Inhalts beeinflussen zu lassen? Ich möchte, dass die Tab-Auswahl einen Wechsel in einer JavaScript-Slideshow auslöst, die sich außerhalb des Tab-Divs befindet. JavaScript-Lösung? Jede Hilfe wäre sehr willkommen!
Vielen Dank,
AK
Ich würde gerne wissen, wie man die Tabs feste Breite hat und der Text im Tab umbricht. (ziemlich dasselbe, was AJ gefragt hat)
Ansonsten ist es eine schöne Implementierung.
O
Weiß jemand, wie man das in IE8 zum Laufen bringt?
Danke
Gute Arbeit, aber es funktioniert nicht auf meinem Tablet. Ich habe versucht, etwas JavaScript hinzuzufügen, damit es funktioniert, aber ich stecke fest. Dieser Code scheint ein wenig zu funktionieren, aber der Benutzer muss mehrmals auf die Tabs klicken, damit die Umschaltfunktion den Inhalt wie gewünscht anzeigt.
Würde jemand mit mehr JavaScript-Kenntnissen als ich bitte nachsehen?
Und der HTML
und
Ich versuche, den Toggle-Effekt zum Hinzufügen und Entfernen des Tab-Inhalts zu verwenden. Ich stecke seit vier Tagen fest, daher wäre jede Hilfe sehr willkommen… :)
Und hier der HTML-Code. Ich habe dieses onclick-Ereignis zu den input type=”radio”-Tags hinzugefügt.
Zur Klarstellung,
Dies ist der onclick-Code, den ich zu den Tab-Input-Links hinzugefügt habe
Der erste Tab
onclick=”var b = toggleAdd(‘tabc-2’); if (b) toggleRemove(tabc-1); return b;”
und der zweite Tab
onclick=”var b = toggleAdd(‘tabc-1′); if (b) toggleRemove(tabc-2); return b;”
Es funktioniert irgendwie, aber der Benutzer muss einmal auf den Tab klicken, bei dem der Inhalt entfernt werden soll (toggleRemove), und dann zweimal auf den Tab, den er sehen möchte (toggleAdd). Was mache ich falsch? :/
Das „min-height: 200px;“ kann mit CSS leicht für die gleiche Höhe der Spalten entfernt werden. Sie müssen **display: table** zum übergeordneten Element dieser Spalten und **display: table-cell;** zu seinen Kindern hinzufügen
Ich muss das korrigieren (entschuldigt): Das Beispiel ist NICHT barrierefrei. Das liegt einfach daran, dass man die Tabs nicht mit der Tastatur steuern kann. Das Problem liegt hier
.tab [type=radio] {display: none;
}
Dies macht die Radios auch für die Tastatur „unsichtbar“. Besser wäre es, etwas wie das hier zu tun
.tab [type=radio] {position: absolute !important;
height: 1px; width: 1px;
overflow: hidden;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
}
Hallo, tolle Arbeit – ich möchte diesen Code mit flexibler Höhe verwenden, da ich keine weiteren jQuery-Sachen mehr verwenden kann, um sicherzustellen, dass die Website gut funktioniert. Eigentlich funktioniert Ihr Code für mich gut, aber mir fehlt die flexible Höhe. Können Sie mir einen Rat geben, wie ich diese Funktion zu Ihrem obigen Code hinzufügen kann?
Alex
Schlechtestes Skript aller Zeiten! Der Tab-Inhalt dehnt sich nicht aus! Er hat eine feste Höhe!
Flexbox-basierter Ansatz von Klass Moerman
https://kmoerman.github.io/css-tabs/