Ich möchte ein Bildkarussell erstellen, in dem ein Benutzer durch Klicken auf die Pfeile zwischen den Bildern wechseln kann. Beispielsweise:
Ich kann jedoch nur HTML und CSS verwenden - kein JavaScript (und daher jQuery). Ich brauche nur die Grundeinstellung; glatte Übergänge und dergleichen sind nicht erforderlich.
Wie kann ich dies erreichen?
javascript
jquery
html
css
Royhowie
quelle
quelle
:hover
; schließlich einen Ausschnitt Verwendung zusammengesetztclick
,css
; Obwohl die Verwendung von nur zwei Pfeilen für die Steuerung hier nicht besonders trivial war. Wenn "zu viele mögliche Lösungen" korrekt sind, kann eine alternative Lösung erstellt werden, um die unten stehende Antwort zu erfüllen, die der spezifischen Anforderung "wo ein Benutzer durch Klicken auf Pfeile zwischen Bildern wechseln kann" entspricht ?Antworten:
Das ist einfach! Verwenden Sie einfach Optionsfelder und gezielte Beschriftungen.
Optionsfelder haben das (notwendige) Verhalten, dass jeweils nur eines ausgewählt werden kann - genau wie ein Bild in unserem Karussell.
Demo
Code-Snippet anzeigen
TLDR: Wichtige Hinweise
input(type="radio")
istchecked
standardmäßig oder das ganze Karussell wird ausgeblendet.labels
, dass der vorherige / nächste Funkeingang korrekt ausgerichtet ist (Informationen zur Ausrichtung finden Sie im Abschnitt mit den Beschriftungen am Ende).:checked
Erläuterung
So sollte die grundlegende HTML-Struktur aussehen:
div#holder
wird alle unsere Inhalte an Ort und Stelle halten. Anschließend gruppieren wir unsere Optionsfelder, Beschriftungen und Bilder unter adiv.group
. Dies stellt sicher, dass unsere Funkeingänge nicht unter zerstörerischen Interferenzen (Wortspiel) leiden.Der Schlüssel befindet sich in den Selektoren (und den Beschriftungen - lesen Sie unbedingt diesen Abschnitt).
Zuerst verstecken wir unsere Optionsfelder - sie sind sowieso hässlich:
Wir müssen niemals auf die Optionsfelder klicken. Stattdessen formatieren wir unsere Beschriftungen und fügen Ziele (
for
Eigenschaften) hinzu, damit sie den Klick auf den entsprechenden Funkeingangsblock umleiten.Die meisten unserer Etiketten sollten versteckt sein:
(Ich werde jegliches ästhetische Styling weglassen, um das Styling verständlicher zu machen. Sie können die besser aussehende Version im Stack-Snippet sehen.)
Außer denen neben einem Radioeingang, der eingeschaltet ist, oder
:checked
Darüber hinaus sollte die
div.content
folgende überprüfte Eingabe angezeigt werden:Wenn das Optionsfeld jedoch nicht aktiviert ist,
div.content
sollte es ausgeblendet werden:Bazinga! Jetzt sollte unser Karussell größtenteils
vollfunktionsfähig sein, wenn auch etwas hässlich. Bewegen wir unsere Etiketten an die richtige Position:Und zentrieren Sie unsere Bilder innerhalb ihrer jeweiligen Divs:
Der letzte Schritt ist, wie Sie Ihre Etiketten einrichten:
Beachten Sie, wie angesichts einen Funk Eingang mit einem
id
vonn
demlabel.previous
hat einfor
Attribut(n - 1) % M
und daslabel.next
wird einfor
Attribut(n + 1) % M
, woM
die Anzahl der Bilder in dem Karussell.Extra
Wenn Sie Jade (oder eine andere Vorlagen-Engine) verwenden, können Sie es mit einer einfachen for-Schleife wie der folgenden einrichten:
quelle
Beachten Sie, dass
css
unten die spezifischen Anforderungen in Frage nicht erfüllt sindNutzt Pseudo-Klasse , Thumbnails als Kontrollen zwischen den Bildern zu wechseln; modelliert nach dem Muster, das unter Auslösen von CSS3-Übergängen bei Click using: target beschrieben wird
:target
quelle
Inspiriert von royhowie fand ich eine viel einfachere Lösung, wenn es um HTML-Syntax geht. Auch mit schöner Animation und voll anpassbar!
Die Hauptidee war, die Pfeile nicht durch einzelnes Platzieren in HTML zu erstellen, sondern durch Erstellen und anschließendes sorgfältiges Positionieren von Pseudoelementen.
JSFiddle
Sie können mehr über Anpassungen und einige technische Einschränkungen meiner Geige lesen.
quelle
Bitte überprüfen Sie diesen Link für ein CSS-Karussell mit der Option "Automatische Wiedergabe" am Anfang, Navigationsschaltflächen "Links rechts", Navigationspunkten und setzt die Wiedergabe fort, wenn Sie auf die Schaltfläche klicken ...
Demo Link - http://blog.puneets.in/2016/02/pure-responsive-css3-slider-with.html
quelle
Erweitern der großartigen Lösung von royhowie durch Hinzufügen einer Animationseigenschaft für
img
:quelle
Warum nicht mit nur CSS glatt und gut aussehend machen?
Dies ist Teil einer von mir erstellten Bibliothek, Picnic CSS . Diese jsfiddle enthält jedoch die Bibliothek und alle Plugins für die nächste Version (4.0 wird gerade fertiggestellt ). Sie können hier die aktuelle 3.x-Version desselben Plugins sehen, die auch alle Ihre Anforderungen erfüllt, aber nicht so reibungslos ist, wie ich es gerne hätte:
Momentan können Sie den scss-Quellcode nur im Dev-Zweig sehen, aber es ist geplant, dass er in den nächsten Tagen veröffentlicht wird, daher werde ich meine Antwort aktualisieren.
Etwas Code bitte! Dies ist die HTML , dass Sie für die Version 4.0 benötigen, wie andere bemerkt, Sie im Grunde mit spielen
<input type='radio'>
und<label>
den gewünschten Effekt zu erzielen:quelle