Je cherche à créer un carrousel d'images, où un utilisateur peut basculer entre les images, en cliquant sur les flèches. Par exemple:
Cependant, je ne peux utiliser que HTML et CSS - pas de JavaScript (et donc jQuery). J'ai juste besoin de la configuration de base; des transitions douces et autres ne sont pas nécessaires.
Comment puis-je y parvenir?
javascript
jquery
html
css
Royhowie
la source
la source
:hover
; enfin composé d' un extrait en utilisantclick
,css
; bien qu'utiliser seulement deux flèches pour les contrôles n'était pas particulièrement trivial, ici. Si "trop de solutions possibles" sont exactes, peut créer, poster une solution alternative à la réponse ci-dessous répondant à l'exigence spécifique "où un utilisateur peut basculer entre les images, en cliquant sur les flèches" ?Réponses:
C'est facile! Utilisez simplement des boutons radio et des étiquettes ciblées.
Les boutons radio ont le comportement (nécessaire) de n'autoriser qu'un seul à être sélectionné à la fois, tout comme une image dans notre carrousel.
Démo
Afficher l'extrait de code
TLDR: Remarques importantes
input(type="radio")
estchecked
par défaut, sinon tout le carrousel sera masqué.labels
bien cibler l'entrée radio précédente / suivante (voir la section des étiquettes à la fin pour savoir comment faire le ciblage):checked
Explication
Voici à quoi devrait ressembler la structure HTML de base:
div#holder
tiendra tout notre contenu en place. Ensuite, nous regrouperons nos boutons radio, étiquettes et images sous un formatdiv.group
. Cela garantit que nos entrées radio ne souffrent pas d'interférences destructrices (jeu de mots).La clé se trouve dans les sélecteurs (et les étiquettes - assurez-vous de lire cette section)
Tout d'abord, nous allons masquer nos boutons radio - ils sont de toute façon laids:
Nous n'aurons jamais besoin de cliquer sur les boutons radio. Au lieu de cela, nous allons styliser nos étiquettes et ajouter des cibles (
for
propriétés), afin qu'elles redirigent le clic vers le bloc d'entrée radio approprié.La plupart de nos étiquettes doivent être masquées:
(Je vais omettre tous les styles esthétiques, afin de rendre le style plus facile à comprendre. Vous pouvez voir la version la plus esthétique dans l'extrait de code de pile.)
Sauf pour ceux à côté d'une entrée radio qui est activée, ou
:checked
En outre,
div.content
une entrée cochée suivante doit également être affichée:Cependant, lorsque le bouton radio n'est pas coché, il
div.content
doit être masqué:Bazinga! Maintenant, notre carrousel devrait être
entièrementfonctionnel, bien qu'un peu laid. Déplaçons nos étiquettes à la bonne position:Et centrez nos images dans leurs divs respectifs:
La dernière étape consiste à configurer vos étiquettes:
Notez comment, étant donné une entrée radio avec un
id
den
, lelabel.previous
aura unfor
attribut de(n - 1) % M
et lelabel.next
aura unfor
attribut de(n + 1) % M
, oùM
est le nombre d'images dans le carrousel.Supplémentaire
Si vous utilisez Jade (ou un autre moteur de template), vous pouvez le configurer avec une simple boucle for comme celle-ci:
la source
Notez que
css
ci - dessous ne répond pas à l'exigence spécifique à la questionUtilise une pseudo classe , des vignettes comme contrôles pour basculer entre les images; modelé sur le modèle décrit dans Comment déclencher des transitions CSS3 lors d'un clic en utilisant: target
:target
la source
Inspiré par royhowie, je me suis retrouvé avec une solution beaucoup plus simple en ce qui concerne la syntaxe HTML. Aussi, avec une belle animation et entièrement personnalisable!
L'idée principale était de créer les flèches non pas en les plaçant dans HTML une par une, mais en créant puis en positionnant soigneusement des pseudo-éléments.
JSFiddle
Vous pouvez en savoir plus sur les personnalisations et certaines limitations techniques de mon violon.
la source
Veuillez vérifier ce lien pour le carrousel CSS uniquement avec l'option de lecture automatique au début, les boutons de navigation gauche droite, les points de navigation et reprend la lecture lorsque vous cliquez sur le bouton ...
Lien démo - http://blog.puneets.in/2016/02/pure-responsive-css3-slider-with.html
la source
Extension de la solution géniale de royhowie en ajoutant une propriété d'animation sur
img
:la source
Pourquoi ne pas le rendre lisse et beau avec seulement CSS?
Cela fait partie d'une bibliothèque que j'ai créée, Picnic CSS . Cependant, ce jsfiddle inclut la bibliothèque et tous les plugins pour la prochaine version (4.0 est en cours de fin ). Vous pouvez voir la version 3.x actuelle du même plugin ici, qui répond également à toutes vos exigences, mais ce n'est pas aussi simple que je le voudrais:
Pour le moment, vous ne pouvez voir le code source scss que dans la branche dev, mais il est prévu de le publier dans les jours suivants, je vais donc mettre à jour ma réponse.
Un peu de code s'il vous plaît! C'est le HTML dont vous avez besoin pour la version 4.0, comme d'autres l'ont commenté, vous jouez essentiellement avec
<input type='radio'>
et<label>
pour obtenir l'effet souhaité:la source