Si vous suivez le compte @NoupeMag sur Twitter (ça marche aussi pour mon compte), vous avez certainement vu passer mon slideshow en CSS3 datant de l’an dernier.
Ce n’était pas ma première tentative de slideshow comme le présentent ces premier et second travaux datant de mai 2010.
Avant propos
La page de démonstration du slideshow full CSS3 vous propose des fichiers sources en téléchargement, profitez-en, notamment si vous souhaitez récupérer les images.
Les codes CSS fournis ici sont légèrement différents de ceux fournis dans l’archive zippée téléchargeable. En effet, la rédaction du tutoriel que vous allez lire m’a permis d’alléger, corriger et améliorer le code disponible en téléchargement. Il fera l’objet d’une refonte prochaine.
Les codes CSS3 présents sur ce tutoriel ne tiennent pas compte des préfixes parfois nécessaires (-webkit-, -moz-, -ms-, -o-) pour une question de gain de place dans le code. Ne les oubliez pas.
Enfin si les bases des langages HTML et CSS vous font défaut, n’hésitez pas à jeter un œil à cette formation HTML et CSS.
Les défauts des versions précédentes
Comme les expérimentations foireuses sont là pour faire ressortir les limites d’une technique, voyons ce qui nous manquait dans les versions précédentes (gardez-les sous les yeux pour tester, c’est mieux).
Sur la version contrôlable (la première) :
- Un saut de page est visible au clic sur les flèches ;
- Nous sommes obligés de multiplier les éléments (
div
pour les conteneurs,a
pour les flèches) ; - il faut dupliquer des règles CSS à chaque image ajoutée.
Sur la version automatique (la seconde) :
- Il n’y a pas de commandes (soit…)
- Aucune possibilité de stopper l’animation
- il faut dupliquer des règles CSS à chaque image ajoutée.
Certains de ces problèmes ne sont pas résolubles, j’ai décidé de me concentrer sur la fusion des fonctionnalités et sur la correction de certains points :
- Fusionner le slideshow automatique et contrôlable
- Ajouter une commande de stop et lecture de l’animation
- Limiter la multiplication des éléments
- Virer le saut au clic (grâce à l’astuce CSS de Vincent De Oliveira)
Les autres problèmes persisteront, vous le verrez.
À noter que ce slideshow reste expérimental même si compatible avec les derniers navigateurs du marché.
Poser les fondations
Voici du code HTML (HTML5 en l’occurrence) que j’espère suffisamment parlant.
<section id="slideshow">
<div class="container">
<div class="c_slider"></div>
<div class="slider">
<figure>
<img src="img/dummy-640x310-1.jpg" alt="" width="640" height="310" />
<figcaption>The mirror of soul</figcaption>
</figure><!--
--><figure>
<img src="img/dummy-640x310-2.jpg" alt="" width="640" height="310" />
<figcaption>Let's cross that bridge when we come to it</figcaption>
</figure><!--
--><figure>
<img src="img/dummy-640x310-3.jpg" alt="" width="640" height="310" />
<figcaption>Sushi<em>(do)</em> time</figcaption>
</figure><!--
--><figure>
<img src="img/dummy-640x310-4.jpg" alt="" width="640" height="310" />
<figcaption>Waking Life</figcaption>
</figure>
</div>
</div>
<span id="timeline"></span>
</section>
Ce code HTML pourrait être simplifié en prenant le risque de complexifier la CSS, mais cette dernière va déjà l’être suffisamment…
Pour faire simple nous avons une section pour le slideshow qui réunie le conteneur des images (.container
), la partie qui glisse (.slider
), les différentes images légendées (sous forme de figure > figcaption
) et la petite barre de défilement du temps (#timeline
).
Pour ceux qui s’interrogent sur la présence de commentaires HTML, je vous invite à lire cet autre article du blog : Display inline-block, une valeur trop peu utilisée.
Je n’ai mis aucun élément de commande pour le moment, nous verrons cela plus tard.
Voici le code CSS servant principalement à positionner, dimensionner et décorer les différents blocs, que je ne vais pas expliquer dans la mesure où ce n’est pas le cœur de l’article, mais il est un minimum commenté 😉
#slideshow {
position: relative;
width: 640px;
height: 310px;
padding: 15px;
margin: 0 auto 2em;
border: 1px solid #ddd;
background: #FFF;
/* CSS3 effects */
background: linear-gradient(#FFF, #FFF 20%, #EEE 80%, #DDD);
border-radius: 2px 2px 2px 2px;
box-shadow: 0 0 3px rgba(0,0,0, 0.2);
}
/* avanced box-shadow
* tutorial @
* https://www.creativejuiz.fr/blog/les-tutoriels/ombre-avancees-avec-css3-et-box-shadow
*/
#slideshow:before,
#slideshow:after {
position: absolute;
bottom:16px;
z-index: -10;
width: 50%;
height: 20px;
content: " ";
background: rgba(0,0,0,0.1);
border-radius: 50%;
box-shadow: 0 0 3px rgba(0,0,0, 0.4), 0 20px 10px rgba(0,0,0, 0.7);
}
#slideshow:before {
left:0;
transform: rotate(-4deg);
}
#slideshow:after {
right:0;
transform: rotate(4deg);
}
Avec ceci nous avons le support graphique des images. C’est un peu tout cassé, mais vous pouvez voir comment réaliser simplement un élément qui semble assez complexe, notamment au niveau des ombres et dégradés.
Gérons le débordement et l’alignement de tout ce contenu.
/* gestion des dimensions et débordement du conteneur */
#slideshow .container {
position:relative;
width: 640px;
height: 310px;
overflow: hidden;
}
/* on prévoit un petit espace gris pour la timeline */
#slideshow .container:after {
position:absolute;
bottom: 0; left:0;
content: " ";
width: 100%;
height: 1px;
background: #999;
}
/*
le conteneur des slides
en largeur il fait 100% x le nombre de slides
*/
#slideshow .slider {
position: absolute;
left:0; top:0;
width: 400%;
height: 310px;
}
/* annulation des marges sur figure */
#slideshow figure {
position:relative;
display:inline-block;
padding:0; margin:0;
}
/* petit effet de vignette sur les images */
#slideshow figure:after {
position: absolute;
display:block;
content: " ";
top:0; left:0;
width: 100%; height: 100%;
box-shadow: 0 0 65px rgba(0,0,0, 0.5) inset;
}
Nous voici sur une mise en forme plus propre, les éléments figure
sont placés sur une seule et même ligne et le débordement est caché.
Il ne nous reste plus qu’à présenter un peu mieux notre légende qui est actuellement planquée :
/* styles de nos légendes */
#slideshow figcaption {
position:absolute;
left:0; right:0; bottom: 5px;
padding: 20px;
margin:0;
border-top: 1px solid rgb(225,225,225);
text-align:center;
letter-spacing: 0.05em;
word-spacing: 0.05em;
font-family: Georgia, Times, serif;
background: #fff;
background: rgba(255,255,255,0.7);
color: #555;
text-shadow: -1px -1px 0 rgba(255,255,255,0.3);
}
Et voilà qui est mieux.
Nous allons maintenant nous occuper de la phase automatique du slideshow.
Nous verrons dans une troisième partie comment gérer des actions pour contrôler notre slideshow.
Animer notre contenu : phase automatique
Cette phase va être quelque peu répétitive puisque nous allons devoir créer un certain nombre d’animations grâce à la fonction CSS @keyframes
. Pour en savoir plus sur les animations, je vous invite à lire la partie « animation » de cet article sur le timing sur Alsacréations.
Pour obtenir une animation cohérente tout le long d’un cycle, vous devez vous poser la question suivante :
Combien de temps est nécessaire pour la compréhension de chaque slide ?
Bien entendu, la réponse va dépendre du contenu, mais imaginons que nous ayons 4 étapes, pas beaucoup de texte, 6 ou 7 secondes peuvent sembler suffisantes pour chaque étape. Il reste alors à estimer la durée d’une transition d’une étape à l’autre, 1 ou 2 secondes. Avec 8 secondes multipliées par 4, ça nous fait 32 secondes d’animation pour boucler un cycle complet.
Animation du conteneur
Commençons par animer le bloc qui contient nos images et légendes en le faisant glisser. Pour cela, créons notre animation :
/* fonction d'animation, n'oubliez pas de prefixer ! */
@keyframes slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
N’oubliez pas de préfixer également la règle @keyframes (oui ! Il faudra s’embêter à dupliquer le code de l’animation) de la sorte : @-webkit-keyframes slider {[…]} @-moz-keyframes slider {[…]}
, etc.
Chaque étape est exprimée en pourcentage, aussi 50% signifie que nous en sommes à la 16ième seconde de notre animation.
Si plusieurs étapes ont la même valeur d’une propriété, ou si vous souhaitez créer un arrêt, il suffit de mettre la valeur sur la même ligne séparer par une virgule.
Par exemple, sur la première étape, nous avons 0, 20 et 100% qui cohabitent. Cela sous entend que de 0 à 20%, la valeur de left
est de 0, nous créons donc un arrêt. Cela signifie aussi que de 95 à 100%, la valeur de left
passe de -300% à 0. C’est un moyen facile de retourner à la valeur initiale pour créer une boucle.
Nous avons créer l’animation, il faut maintenant l’attribuer à notre élément de cette manière :
/* complétez le sélecteur : */
#slideshow .slider {
/* ... avec la propriété animation */
animation: slider 32s infinite;
}
Cette syntaxe de la propriété animation
est le raccourci de animation-name
, animation-duration
, animation-iteration-count
, dans cet ordre précisément ici.
Animation de la ligne de temps
Notre petite ligne d’un pixel de hauteur servant de ligne de temps va être animée sur le même principe.
Mais avant cela, donnons-lui quelques styles de couleur.
#timeline {
position: absolute;
background: #999;
bottom: 15px;
left: 15px;
height: 1px;
background: rgb(214,98,13);
background: rgba(214,98,13,.8);
width: 0;
/* fonction d'animation */
animation: timeliner 32s infinite;
}
Il est ainsi placé précisément en tenant compte des marges autour des photos, et nous lui attribuons tout de suite une animation nommée timeliner
qu’il nous faut déclarer comme ceci :
@keyframes timeliner {
0%, 25%, 50%, 75%, 100% { width: 0; }
20%, 45%, 70%, 90% { width: 640px; }
}
Ici nous savons que la ligne doit être à son maximum à quatre reprise (avant chaque changement de slide). Il y a donc 4 étapes à 640px (largeur max), et 4 (si on confond 0 et 100) à 0.
Animation de la légende
Même procédé, nous allons faire monter et descendre notre légende à chaque slide.
@keyframes figcaptionner {
0%, 25%, 50%, 75%, 100% { bottom: -55px; }
5%, 20%, 30%, 45%, 55%, 70%, 80%, 95% { bottom: 5px; }
}
Puis nous accrochons cette animation à notre élément :
/* ajouter à l'élément : */
#slideshow figcaption {
/* ... la propriété animation */
animation: figcaptionner 32s infinite;
}
Je ne sais pas si vous avez vu, mais le vignettage des slides est animé. Comme vous avez compris le principe, je vous laisse vous amuser à trouver le code 😉
Nous avons désormais un slideshow qui fonctionne en mode automatique.
Maintenant, voyons comment procéder si l’on souhaite ajouter des boutons stop/marche, et suivant/précédent, ou « aller à la slide 3 », par exemple.
Contrôler notre contenu : phase manuelle
Lorsque l’on conçoit un slideshow, il est très recommandé de permettre à l’utilisateur de stopper l’animation, soit parce que ça le stresse, soit parce qu’il veut contempler une des images, soit… bref, voyons ce qu’on peut faire !
Pour rappel, nous n’avons encore aucun élément HTML pour ces contrôles, nous allons donc les rajouter progressivement.
Ces éléments de contrôles (des liens) vont cibler des ancres placés « à côté » de notre slideshow, en tant que frères indirects.
Juste avant notre élément #slideshow
, placez donc ces éléments span
:
<span id="sl_play" class="sl_command"></span>
<span id="sl_pause" class="sl_command"></span>
<span id="sl_i1" class="sl_command sl_i"></span>
<span id="sl_i2" class="sl_command sl_i"></span>
<span id="sl_i3" class="sl_command sl_i"></span>
<span id="sl_i4" class="sl_command sl_i"></span>
Ceux-ci ont des classes communes (parfois) qui nous permettrons des actions groupées par la suite.
Vous comprendrez leur utilité par la suite, ne vous faites pas de souci.
Bouton jouer et arrêter
Les boutons play et pause peuvent être ajoutés dans la section #slideshow
, juste avant notre .container
.
Il n’y a aucune obligation à les placer précisément ici, il est généralement conseillé de conserver ordre d’apparition dans le DOM et ordre d’apparition à la lecture de la page. Là nous allons les placer au milieu (verticalement) du slideshow :
<a class="play_commands pause" href="#sl_pause" title="Maintain paused">Pause</a>
<a class="play_commands play" href="#sl_play" title="Play the animation">Play</a>
Ces éléments peuvent prendre leur apparence avec quelques lignes de code uniquement, et sont par défaut cachés : ils n’apparaissent qu’à certains moments bien précis que nous définirons par la suite.
.play_commands {
/* positionnement en haut à droite */
position: absolute;
top: 25px; right: 25px;
z-index: 10;
/* dimensionnement des icônes */
width: 22px;
height: 22px;
text-indent: -9999px;
border:0 none;
/* placez l'opacité à 1 si vous souhaitez voir les commandes */
opacity: 0;
/* préparation de transition sur opacicty et right */
transition: opacity 1s, right 1s;
}
/* on décale play légèrement sur la gauche */
.play { right: 55px; cursor: default; }
/* création de l'icône pause avec 2 pseudos éléments */
.pause:after,
.pause:before {
position: absolute;
display: block;
content: " ";
top:0;
width:38%;
height: 22px;
background: #fff;
background: rgba(255,255,255,0.5);
}
.pause:after { right:0; }
.pause:before { left:0; }
/* création de l'icône play avec des bordures */
.play {
width: 1px;
height: 1px;
/* les transparentes forment la flèche */
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
border-left: 20px solid #fff;
border-left: 20px solid rgba(255,255,255,0.5);
/* renseignez 1 pour voir l'icône de suite */
opacity: 0;
}
/* apparition du bouton pause au survole */
/* apparition des boutons au focus */
#slideshow:hover .pause,
.play_commands:focus {
opacity: 1;
outline: none;
}
Voilà, toutes ces lignes pour mettre en place nos deux liens. Ceux qui trouveront plus pertinent de charger des images ou un sprite, je ne leur en voudrais pas.
C’est bien, c’est beau, mais pas fonctionnel.
Nous allons maintenant utiliser la pseudo classe target
pour agir sur notre animation en fonction du bouton que nous aurons cliqué.
Lorsque pause est cliqué, nous ciblons l’élément #sl_pause
, lorsque lecture est cliqué, c’est #sl_play
qui est ciblé.
Dans notre scénario, nous n’afficherons que le bouton utile : pause quand la lecture est effective, play lorsque la pause est en place.
/* stopper les animation */
.sl_command:target ~ #slideshow .slider,
.sl_command:target ~ #slideshow figcaption,
.sl_command:target ~ #slideshow #timeline,
.sl_command:target ~ #slideshow .dots_commands li:first-child a:after {
animation-play-state: paused;
}
/* redémarrer les animations */
#sl_play:target ~ #slideshow .slider,
#sl_play:target ~ #slideshow figcaption,
#sl_play:target ~ #slideshow #timeline,
#sl_play:target ~ #slideshow .dots_commands li:first-child a:after {
animation-play-state: running;
}
/* switch entre les boutons */
.sl_command:target ~ #slideshow .pause { opacity:0; }
#sl_play:target ~ #slideshow:hover .pause,
#sl_play:target ~ #slideshow .pause:focus { opacity:1; }
.sl_command:target ~ #slideshow .play { opacity:1; right: 25px; cursor: pointer; }
#sl_play:target ~ #slideshow .play { opacity:0; right: 55px; cursor: default; }
Le premier bloc permet de stopper les animations grâce à la propriété animation-play-state
. Cette propriété placée à sa valeur paused
permet de figer l’animation.
Les sélecteurs sont assez spéciaux : .sl_command:target ~ #slideshow .slider
permet de cibler « L’élément .slider
fils de #slideshow
lorsque ce dernier est indirectement frère de .sl_command
, uniquement lorsque ce dernier est ciblé. ». Autrement dit : si .sl_command
est ciblé, alors on va chercher le frère #slideshow
puis son fils .slider
pour lui appliquer un stop.
On procède de la même manière pour les autres éléments (figcaption
, #timeline
et .dots_commands
que nous verrons plus tard dans le bonux) qui ont une animation en route également.
Pour en savoir plus sur les sélecteurs d’adjacence indirecte, lisez cet autre article du blog : Sélecteur d’adjacence indirecte en CSS3.
Le dernier bloc de code permet d’afficher les boutons en fonction de situation précise, je vous laisse essayer de décortiquer leur signification.
Bonux : Les flèches « suivant » et « précédent »
Il va nous falloir une paire de liens par étape de notre slideshow en gardant en tête que la flèche de gauche de notre première slide nous permet d’aller à la dernière, la flèche de droite de notre dernière slide nous permet d’aller à la première (vous me suivez ?). Lisez les title
pour comprendre l’utilité de chaque flèche. Vous pouvez placer ces liens après nos deux liens pause et lecture.
<a class="commands prev commands1" href="#sl_i4" title="Aller à la dernière slide"><</a>
<a class="commands next commands1" href="#sl_i2" title="Aller à la 2ème slide">></a>
<a class="commands prev commands2" href="#sl_i1" title="Aller à la 1ère slide"><</a>
<a class="commands next commands2" href="#sl_i3" title="Aller à la 3ème slide">></a>
<a class="commands prev commands3" href="#sl_i2" title="Aller à la 2ème slide"><</a>
<a class="commands next commands3" href="#sl_i4" title="Aller à la 4ème slide">></a>
<a class="commands prev commands4" href="#sl_i3" title="Aller à la 3ème slide"><</a>
<a class="commands next commands4" href="#sl_i1" title="Aller à la 1ère slide">></a>
C’est là que la pertinence du markup en prend un coup. Pour des raisons d’accessibilité (clavier ici) ces liens ne sont peut-être pas des plus utiles et pratiques à utiliser. Est peut-être à envisager l’ajout de l’attribut tabindex="-1"
pour empêcher le focus sur ces éléments. En effet, nous utiliserons un second système de navigation juste après, qui lui est peut-être plus pertinent.
Donnons quelques styles à nos boutons et cachons ceux qui ne sont pas utiles.
#slideshow .commands {
position: absolute;
top: 45%;
padding: 5px 13px;
border-bottom:0;
font-size: 1.3em;
color: #aaa;
text-decoration:none;
background-color: #eee;
background-image: linear-gradient(#fff,#ddd);
text-shadow: 0 0 1px #aaa;
border-radius: 50%;
box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
}
#slideshow .prev { left: -48px; }
#slideshow .next { right: -48px; }
#slideshow .commands { display:none; }
#slideshow .commands1 { display: block; }
Très bien, nous avons des flèches… mais que va-t-on bien pouvoir bouger avec ?
Sur le même principe que précédemment, nous ciblons l’un des span
abandonnés en début de code. Si vous cliquez sur une des flèches, pour le moment ça ne fait que stopper l’animation (oui, tous les span
sont porteurs de la classe .sl_command
, rappelez-vous, en en ciblant un, les animations s’arrête).
En fonction de l’élément ciblé, on pourrait stopper l’animation et changer les valeurs de left
pour le slider, de width
pour la timeline, et de bottom
pour la légende. Ça serait cool hein ?
Oui mais non, parce qu’en fait ça ne fonctionne pas : les keyframes sont « prioritaires ».
C’est ce qui nous oblige à compléter notre code HTML légèrement avec ce petit morceau :
<div class="c_slider"></div>
Il est déjà présent dans le code fourni initialement (premier bloc de cet article).
Cet élément nous permet d’appliquer les images en image de fond. Ces mêmes images que nous avons déjà chargé dans le HTML, nous allons les appliquer en background CSS.
C’est en faisant bouger ce nouvel élément que nous allons donner l’illusion d’un slideshow classique. Je dis bien illusion, car vous aurez compris qu’ici on se restreint à l’idée d’un vrai diaporama, avec des images, et non du contenu textuel qu’il serait difficile de « dupliquer ».
#slideshow .c_slider {
position: absolute;
left:0; top:0;
width: 400%;
height: 310px;
/* multiple background */
background: url(img/dummy-640x310-1.jpg) 0 0 no-repeat,
url(img/dummy-640x310-2.jpg) 640px 0 no-repeat,
url(img/dummy-640x310-3.jpg) 1280px 0 no-repeat,
url(img/dummy-640x310-4.jpg) 1920px 0 no-repeat;
transition: background 1s;
}
Cette division fournie de quelques images est cachée par la partie principale du diaporama pour le moment. Lorsque nous ciblerons le contenu avec l’une de nos flèches « suivant » ou « précédent », nous cacherons ce diaporama automatique (qui se sera stoppé) pour découvrir nos slides contrôlables qui bougeront en fonction de l’élément ciblé.
Vous n’allez pas m’aimer… :
/* on cache le slider */
.sl_i:target ~ #slideshow .slider { visibility: hidden }
/* on planque la 1ère pastille (cf. bonux suivant) */
.sl_i:target ~ #slideshow .dots_commands li:first-child a:after { display:none; }
/* pour afficher la 2ème pastille (cf. bonux suivant) */
.sl_i:target ~ #slideshow .dots_commands li:first-child a:before { display:block; }
/* lorsque on cible le premier slider */
/* on cache tous les "précédent" et "suivant" */
#sl_i1:target ~ #slideshow .commands { display: none; }
/* on affiche seulement deux flèches */
#sl_i1:target ~ #slideshow .commands1 { display: block; }
/* correspond au décalage des images */
#sl_i1:target ~ #slideshow .c_slider { background-position: 0 0, 640px 0, 1280px 0, 1920px 0; }
/* on place la pastille tout à gauche */
#sl_i1:target ~ #slideshow .dots_commands li:first-child a:before { left:0; }
/* même procédé lorsqu'on cible le second slide */
#sl_i2:target ~ #slideshow .commands { display: none; }
#sl_i2:target ~ #slideshow .commands2 { display: block; }
#sl_i2:target ~ #slideshow .c_slider { background-position: -640px 0, 0 0, 640px 0, 1280px 0; }
#sl_i2:target ~ #slideshow .dots_commands li:first-child a:before { left:18px; }
/* puis le 3ème */
#sl_i3:target ~ #slideshow .commands { display: none; }
#sl_i3:target ~ #slideshow .commands3 { display: block; }
#sl_i3:target ~ #slideshow .c_slider { background-position: -1280px 0, -640px 0, 0 0, 640px 0; }
#sl_i3:target ~ #slideshow .dots_commands li:first-child a:before { left:36px; }
/* et enfin le 4ème */
#sl_i4:target ~ #slideshow .commands { display: none; }
#sl_i4:target ~ #slideshow .commands4 { display: block; }
#sl_i4:target ~ #slideshow .c_slider { background-position: -1920px 0, -1280px 0, -640px 0, 0 0; }
#sl_i4:target ~ #slideshow .dots_commands li:first-child a:before { left:54px; }
À chaque étape nous déplaçons les images, cachons tous les liens « précédent » et « suivant » sauf ceux dont on peut avoir besoin, et on déplace la petite pastille de la navigation secondaire (voir bonus qui suit).
Bonux : « pagination » pour sauter vers une slide
Vous avez certaine souvent vu ces petits points au pied d’un slideshow qui servent un peu de pagination et qui, parfois, permettent de savoir précisément où on se trouve dans le déroulement des slides.
Nous allons en créer une. Pour commencer, ajoutons ce code HTML juste après l’élément timeline
<ul class="dots_commands"><!--
--><li><a title="Afficher la slide 1" href="#sl_i1">Slide 1</a></li><!--
--><li><a title="Afficher la slide 2" href="#sl_i2">Slide 2</a></li><!--
--><li><a title="Afficher la slide 3" href="#sl_i3">Slide 3</a></li><!--
--><li><a title="Afficher la slide 4" href="#sl_i4">Slide 4</a></li>
</ul>
Puis, ces quelques lignes de CSS pour donner un style bien propre à nos petits points.
N’hésitez pas à agrandir les dimensions si ça vous semble trop petit.
.dots_commands {
padding:0;
margin:32px 0 0;
text-align: center;
}
.dots_commands li {
display: inline;
padding:0; margin:0;
}
.dots_commands a {
position: relative;
display: inline-block;
height:8px; width: 8px;
margin: 0 5px;
text-indent: -9999px;
background: #fff;
border-radius: 50%;
box-shadow: 0 1px 2px rgba(0,0,0,0.55) inset;
}
/* quelques styles au focus */
.dots_commands a:focus {
outline: none;
background: orange;
}
.dots_commands li:first-child a { z-index: 25; }
Rien de sorcier ici.
On s’assure simplement en dernière ligne que le premier élément ait un z-index supérieur aux autres. Nous allons nous en servir pour l’animation qui suit.
Nous allons créer un petit disque par dessus ces puces pour représenter le slide visible par un point d’une couleur différente. Pour ce faire nous utilisons les pseudo-éléments.
/* on style after et before, on utilisera les deux */
.dots_commands li:first-child a:after,
.dots_commands li:first-child a:before {
position: absolute;
top: 0; left: 0;
content: " ";
width: 8px; height: 8px;
background: #bd9b83;
z-index:20;
border-radius: 50%;
box-shadow: 0 1px 2px rgba(0,0,0,0.55) inset;
}
/* on anime "after" */
.dots_commands li:first-child a:after {
animation: dotser 32s infinite;
}
/* on cache "before", on l'utilise uniquement au clic (cf. bonux précédent) */
.dots_commands li:first-child a:before { display:none; }
/* c'est parti pour l'animation ! */
@keyframes dotser {
0%, 100% { opacity: 1; left: 0; }
20% { opacity: 1; left: 0; }
22% { opacity: 0; left: 0; }
23% { opacity: 0; left: 18px; }
25% { opacity: 1; left: 18px; }
45% { opacity: 1; left: 18px; }
47% { opacity: 0; left: 18px; }
48% { opacity: 0; left: 36px; }
50% { opacity: 1; left: 36px; }
70% { opacity: 1; left: 36px; }
72% { opacity: 0; left: 36px; }
73% { opacity: 0; left: 54px; }
75% { opacity: 1; left: 54px; }
95% { opacity: 1; left: 54px; }
97% { opacity: 0; left: 54px; }
98% { opacity: 0; left: 0; }
}
Comme nous l’avons prévu dans notre bonus précédent, nous n’avons rien besoin de gérer en plus. Ces liens ciblent les mêmes éléments que nos flèches latérales et ont donc le même effet. (stop de l’animation et slide contrôlable avec tous les effets qui y sont liés)
L’animation peut sembler compliquée, mais c’est la logique de « disparition, déplacement, apparition » multiplié par 4 (4 étapes). Pour information, jusqu’à très récemment, Google Chrome avait du mal avec les animations sur before ou after. Je ne sais pas si ça a changé, il me semble.
Et on en restera là !
Pour être sûr que tout fonctionne, j’ai effectué un test en suivant ce tutoriel et en préfixant pour Firefox uniquement, voici le résultat : Slideshow Full CSS3.
Analyse personnelle
Ce qui est bloquant est gourmand en lignes de code ici, c’est la volonté de vouloir fusionner système automatique et système contrôlable au clavier, souris ou même touché.
Ce slideshow date de novembre 2011, les techniques se sont multipliées, il existe d’autres solutions full CSS3 passant par l’utilisation détournée des éléments label
et input
de type radio
. En contrôlant la valeur de la coche avec la pseudo-classe checked
il est possible d’agir sur les éléments, de la même manière que nous le faisons ici avec la pseudo-classe target
.
Je vous invite à regarder ce qui peut se faire ailleurs, comme par exemple sur ce Slideshow Full CSS3 Responsive.
L’espace de commentaires est à vous !
Bonjour,
Je viens de découvrir cet article un peu tard certes mais bon 🙂
Je voudrais m’en inspirer pour un cas pratique, le but est de faire un slide non pas sur des images mais différentes frame (youtube, site web, google docs), autre contrainte c’est la modification du temps entre chaque slide penses-tu que ce tuto pourrais convenir ou être adapté ?
J’ai déjà réaliser pour mon cas le slide en java-script, mais niveau perf c’est pas très bon et j’ai beaucoup de conflit avec les google docs.
Merci 🙂
tres sympa comme slideshow 🙂
le top si il était responsive
maybe in the futur
C’est bien chouette un carrousel si complet sans js.
Avec la volonté de certains navigateurs de forcer les mises à jour, on envisagera sérieusement d’en utiliser à grande échelle.
La plus grande contrainte de ce type de slideshow sera de les faire s’adapter aux nombres de visuels sans repasser dans le CSS.
Si je peux juste ajouter une minuscule remarque, c’est sur l’animation de la timeline qui manque de linéarité. Avec ‘animation-timing-function: linear;’ ça fera l’affaire.
Bonne continuation !
Hello tout le monde,
@virtuousquare : c’est un choix de conserver cette fonction de timing par défaut. Elle me semble plus naturelle et beaucoup moins linéaire, c’est une animation qui a plus de vie. 🙂
@10tribu : oui j’y pensais récemment, mais je n’ai pas eu le temps de l’adapter encore.
@Jérôme : il est possible de créer des blocs de contenus complètement libre (iframe, map, video, animation, etc.), le reste c’est du CSS. Le plus difficile sera d’écrire les fonctions d’animation pour décaler les étapes en fonction du temps alloué à chaque slide. Good luck !
bonjour, felicitation pour cet article(slideshow automatique), il m’as beaucoup inspiré pour un cas pratique, toutefois j’aimerai augmenter le nombre des images. je solicite votre intervention. Merci
bonjour! please je voudrais ajouter plusieurs autres photos ou images dans slider, le code que vous avez proposé n’autorise que 4 images, et pas plus. comment faire pour en ajouter d’autres?
Bonjour,
Merci de prendre le temps de lire les autres commentaires 🙂
Bon courage.
Très joli ! Cependant je suis un peu déçu de ne pas trouver des commandes avec des input radio.
Disons que j’aurai plutôt vu le slider comme celui-ci : http://csscience.com/responsiveslidercss3/ et l’automatiser de la façon suivante : mettre la propriété animation par défaut pour déclencher le défilement, et l’enlever au hover.
Bonnes finitions en tout cas et résultat très propre. Bravo !
Hello Nicolas,
C’est exactement l’exemple que je propose de visiter pour élargir ses horizons en fin d’article 🙂
J’ai conçu ce slideshow avant que cette technique des boutons radio ne devienne « à la mode ». J’aimerai un jour avoir l’avis d’un expert en accessibilité, car je trouve cette utilisation un peu abusive, mais je pense que mon utilisation des ancres n’est pas beaucoup mieux.
Petit question piège pour toi : Comment enlèves-tu une animation au hover avec une navigation au clavier ou sur smartphone ?
Merci pour ton commentaire 🙂
… Juste énorme. Punaise …
Bonjour,
un petit bug peut-être, avec la barre d’avancement, sur la démo réalisée pour firefox: celle-ci défile correctement, mais si on se sert du menu sous l’image (disques colorés), la barre d’avancement reste figée et ne suit plus le mouvement. C’est peut-être mon ff, je n’ai pas testé sur d’autres machines.
M’enfin, c’est un détail, et globalement, c’est juste énorme. Merci pour vos lumières.
Hello Nonos,
Je n’avais pas vu ton message, pardon.
Merci pour ton retour. Effectivement c’est normal, puisque l’activation de ces liens boque automatiquement le slideshow, la barre de défilement est donc temporairement mise en pause jusqu’à ce que l’utilisateur clic à nouveau sur play.
Il est possible de la cacher temporairement si ça perturbe. Tout se passe lorsque un élément de classe « .sl_i » est ciblé. Il faut cacher la timeline :
.sl_i:target ~ #slideshow #timeline { display: none; }
Au plaisir !
Me voilà comme un idiot avec ta question piège =P. Mais je crois avoir une réponse : le hover est déclenché au clic, donc au clic sur les commandes. Donc quand le visiteur décide de cliquer sur un bouton, le tout se fige et il navigue comme il veut parmi les slides.
J’ai eu des doutes aussi sur le « droit » d’utiliser des input radio hors du formulaire, mais je dois avouer que la puissance de la technique est telle que je ferme les yeux sur « l’abus ». Après tout pourquoi pas ? Rien ne l’interdit, le wiki du W3C parle même de « _usually_ with a form control », et non d’exclusivité (http://www.w3.org/wiki/HTML/Elements/input). Je trouve l’utilisation des ancres beaucoup plus intrusives qu’un contournement par l’usage du type radio.
Mea culpa pour les « Sources et liens utiles » qui ont échappés à ma lecture quelque peu hâtive.
Ma question était à associer au slidehosw utilisant les boutons radio : tu n’as aucun contrôle (naturel) au clavier puisqu’il faut activer les
label
pour agir sur l’état des boutons.Il serait possible d’améliorer l’existant (système radio) pour le permettre, je n’ai encore jamais vu personne y penser 😉
Ma question sur l’accessibilité n’est pas à lier avec l’usage du bouton radio proposé par le W3C, mais bien le côté utilisabilité. Pour l’utilisateur lambda, a priori pas grande différence, sauf s’il navigue sur IE < 9. Pour les autres… je n’ai pas testé, hormis le sans JS (ça c’est évident) et sans souris. Sur cette dernière, la solution avec boutons radio n’est pas viable « nativement ».
Bonne journée Nico.
EXCELLENT !
par contre, j’ai un petit probleme, j’ai ajouté une photo ( j’avais l’intention de rajouter plus ) mais impossible d’afficher la 5 eme image, pourtant j’ai tout fait dans le fichier html et le css … peut etre que je me trompe quelque part non ?
en tout les cas, ça reste un excellent travail !
Merci.
Hello,
Les codes CSS sont prévus pour 4 slides. (étapes des animations, dimensions du conteneur, etc.)
Il faut adapter la largeur du conteneur, les étapes, le temps total d’animation, les déplacements et les commandes du code HTML au nombre de tes slides.
C’est le plus compliqué une fois que tu as compris le principe 🙂
Bonjour à tous, j’espère que quelqu’un verra ce message..
Bon voilà j’ai besoin d’une personne qui serais capable de mettre ça sur un site en projet et faire quelques « réglages » si vous pouviez au moins me répondre ça serais super merci ..
Bonjour,
Si tu avais porté ton attention sur les quelques commentaires de cet article (et des autres) tu aurais vu que je fais l’effort d’apporter une réponse à quasiment tous les commentaires ^^ (quasiment, parce que je ne suis qu’un homme)
Cependant, je ne pense pas qu’une intervention sur ton site soit possible. Il s’agit là d’un slideshow expérimental, il faut donc le prendre tel qu’il est, ou en comprendre le fonctionnement pour pouvoir l’adapter. C’est bien l’objet de mon article.
Navré, mais je n’empêche pas un volontaire de t’apporter son aide ^^
Bon courage pour la suite.
Bon week-end.
Je voudrais pas paraître condescendant, mais il s’agit d’un tutoriel, donc à priori, facilement reproductible. Si tu viens sans compétence et que tu n’es là que pour trouver une bonne poire pour te l’intégrer gratuitement, il me paraît évident que ton espoir est très mince.
Bonjour,
Je ne sais pas où et comment ajouter les préfixes.
En fait j’ai trouvé là http://prefixmycss.com/ et là http://cssprefixer.appspot.com/
Pardon, je n’avais pas vu avant ton commentaire.
Le premier lien je sais que ça fonctionne nickel 🙂 Tu peux y aller sans crainte.
🙂
Je l’ai mis ici ^^ http://www.côtémode.fr/#sl_play
Par contre, j’ai agrandi les petits points de 10px, je ne comprends pas pourquoi ceux qui se déplacent sont décalés par rapport aux petits points fixes.
[code modéré]
Désolé j’ai supprimé le code, je sais où ça pêche.
Il faut modifier quasiment tous les endroits où tu croises « .dots_commands li:first-child a:before » et « .dots_commands li:first-child a:after » puisque ce sont ces éléments qui vont venir couvrir les puces en fonction du slide actif.
Il faut également modifier l’animation dotser en changeant la valeur de left.
J’avais prévenu, c’est expérimental et pas très adapté à la variation, à moins de connaître le code par cœur 🙂
Et j’ai d’autres questions aussi : sur mon blog http://www.côtémode.fr
1- Lorsque je clique sur un petit point, ça m’affiche un espace blanc (plus rien ne s’affiche)
2- Que faut-il faire pour que lorsque que je clique sur un petit point ou sur le bouton lecture, il n’est pas de déplace de la page ?
3- Comment affiche une page spécifique lorsque l’on clique sur une image ou un texte spécifique à cette page ?
Voilà :D, merci d’avance !
Oui j’image que c’est expérimentale lol, en plus je suis une fille hein et le html c’est pas trop mon domaine :D.
Mais je tiens à te remercier pour ce code car c’est le seul en html5, il était hors de question de faire du flash surtout maintenant avec tous ces nouveaux navigateurs et tablettes. Et c’est le seul tuto francophone qui marche donc merci :).
ps : c’est pas grave pour le code, c’était pour te montrer.
Les filles sont généralement plus consciencieuse dans la construction de leur code 😉
Même moi qui ai conçu ce code, je ne saurais que te conseiller d’utiliser un slideshow en JavaScript (donc pas de flash) au lieu de ce script CSS expérimental, car sa personnalisation demande un bon niveau en CSS, et la moindre retouche HTML demande pas mal de modifications en CSS.
Il existe des scripts un peu partout sur la toile (certains sont regroupés ici : Sélection de slideshow ), et je suis en train d’écrire un dossier pour ce blog sur la création d’un slideshow de A à Z. Je n’ai pas de date de sortie prévue, mais c’est en cours 🙂
Ne m’en veux donc pas si je ne réponds pas à tes questions, plus par faute de temps que d’envie.
À bientôt.
Bonjour,
Je ne suis pas un développeur, simplement un auto-didacte. Pour mon site, je me suis intéressé aux slides-show en Flash.
A lire les lignes de codes que tu proposes dans ce tutoriel, ça me paraît plus simple de le faire en flash. Mais tu as peut-être d’autres raisons pour lesquelles tu pourrais trouver moins utiles de le faire avec le logiciel de adobe ?
Bonjour Denis,
Je ne pensais pas voir ce type de question encore en 2019.
Pour répondre rapidement :
Pour ne citer que ça.
Merci de relancer un sujet que je pensais mort en tout cas 😀
D’accord je suis patiente !
Merci quand même.
Ton tuto est très intéressant. Se passer de javascript serait une étape assez intéressant pour le développement web. J’ai regardé plusieurs tutos sur les slideshows et l’HTML 5 mais seul le tien m’a semblé efficace.
Ai essayé de reproduire ton tuto et ca marche très bien pour 4 images. La légende ne se présentait pas bien. Ai effectué une modification : le figcaption en text-align:right au lieu de text-align:center. Et ca fonctionne.
Ai tenté pour 10 images mais ca ne fonctionne pas encore impeccablement. Surement un soucis dans mes left. Mais c’est du chipotage faut juste que je prenne le temps de tout peaufiner.
De manière générale, ton tuto me fascine car ca prouve que le javascript n’est peut être pas éternel (surtout avec l’HTML5 et le JQUERY).
Cependant, ce tuto a un défaut majeur. La maintenance est fastidieuse je trouve. La personne pour qui je code un site en html espère pouvoir ajouter elle même les photos. Vu la complexité du code, je pense que ca sera moi qui le ferait. En même temps tu as prévenu qu’il fallait des bases.
Je vais suivre tes tutos. J’avoue qu’ils sont très intéressants. Ah si ca t’intéresse voici l’url de la page où j’intègre ton code. C’est loin d’être fini. Merci encore.
http://ruins-rads.net16.net/medias1.php
Merci bien 🙂
Oui en plus d’être très expérimental, cette version CSS n’est pas aussi flexible que du JS qui peut permettre de rendre dynamique les calculs de positionnement, d’animation, etc.
Les variables en CSS arrivent doucement, en attendant il est possible de rendre cette solution CSS plus flexible en passant par un script PHP ou (peut-être) via SASS ou LessCSS, mais ce n’est qu’une hypothèse.
Je ne sais pas si tu as écrit jQuery en pensant à CSS3, mais jQuery est du JavaScript.
Pas mal cette petite adaptation 🙂
Bon courage, parce qu’il n’est vraiment pas évident ce code CSS ! :p
Salut,
J’ai une question, peut-être un peu idiote mais je me demandais ce que vous entendiez par : « n’oubliez pas de prefixer ! » dans :
/* fonction d’animation, n’oubliez pas de prefixer ! */
@keyframes slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
Bonjour,
Ce n’est pas une question idiote mais un commentaire imprécis (de ma part).
Il s’agit de préfixer la règle @keyframes :
C’est un défaut du CSS3 en l’état actuel, la redondance du code à cause des préfixes.
Bonne journée 🙂
Je dois donc remplacer mon code précèdent par celui-ci?
Oui c’est ça, l’idée c’est qu’à chaque animation déclarée, il faut la prévoir pour mozilla, webkit et les autres 🙂
Si je comprends bien mon code doit ressembler à ça :
@-webkit-keyframes slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
@-moz-keyframes slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
@keyframes slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
@-ms-frames slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
@-o-frames slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
?
En gros oui.
Mais je crois que -ms- n’est pas utile car il le comprendra sans préfixe.
Il faut également placer la déclaration non préfixée à la fin.
Une dernière question, la délcaration non préfixée c’est à dire :
@slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
?
Oui c’est ça, mais sans oublier la règle @keyframes. Ton code devrait ressembler à ça :
Ok, merci pour tes réponses 🙂
Bon il y a sans doute des choses (forcement même) que j’ai du zappé, mais ça « merde » de mon coté au niveau de l’animation.
Dès qu’on arrive à ce point dans le tuto, chez moi nada, peanuts, wallou, rien ne se passe. Pourtant j’ai l’habitude des tutos, mais alors là je ne vois vraiment pas le pourquoi du comment.
Le pire c’est que le tuto est superbement bien expliqué, c’est là où c’est encore plus rageant, bref si une bonne âme charitable veut bien me donner un coup de main ou m’aiguiller :
http://www.crazy-youths.com/retourdumonde/v2/index.html
Prefixer par prefixmycss.com
Et j’ai sauté la partie sur le bouton play/pause qui ne me convenait pas
Merci de votre aide, et en tout cas je le répète superbe tuto !
Bonsoir 🙂
Merci pour ton retour.
Ce n’est jamais évident de faire un long tutoriel qui reste compréhensible sur toute sa longueur. Du coup ce genre de retours me sont utiles.
Je vais éditer cette partie là parce que le problème revient souvent. En fait la règle @keyframes doit également être préfixée :
@-moz-keyframes pour mozilla par exemple.
Ça finit par être assez redondant, je l’admets.
Bon courage, et belle réalisation au passage 😉
Merci de la réponse, du coup, je pense que je vais « m’emmerder » à me refaire tous les préfixes à la main (en m’inspirant du code définitif pris sur la page de démo de ton slider).
Par contre, c’est dû aussi aux préfixes le fait qu’on ne voit pas les flèches ? et que le « clic » sur les petits points ne fonctionne pas ?
Merci sur le feedback « visuel » 😉
Eh eh ^^ »
Alors, pour tes flèches c’est parce que les liens ne contienne rien (balises vides) et qu’ils ne sont pas dans la section#slideshow.
Si les puces (et flèches) ne fonctionnent pas, c’est parce que tu as oublié les éléments
span
en début de code. Ils servent de références pour la pseudo-classetarget
.Bon courage ! 🙂
Superbe tuto! Tout ce qu’il me fallait pour un site qui fait appel à beaucoup de javascripts (qui entrent en conflit à la fin).
Mais j’ai quand même un « petit » souci : les boutons Prev et Next et les puces sont ok, sauf que ce sont les images qui ne s’affichent pas. Sous FF on ne voit rien, mais sous Chrome on voit bien le petit carré qui dit que l’image est manquante et il défile bien à chaque fois que j’appuie sur une puce. D’où peut venir ce problème s’il te plait?
PS : en mode auto le slider est nickel, c’est donc avec les commandes que j’ai un problèmes. J’ai utilisé le CSS fourni en download. Merci bien.
Hello,
Il faut vérifier que le chemin en background-image soit le bon (fait une recherche sur « url( » dans ta feuille de styles pour aller plus vite :p).
Bonne soirée.
J’avais le meme probleme que toi Adria. Il est egalement resolu ! Nous sommes donc deux dummy !
Merci pour ce superbe tuto !
dummy que je suis!! :p
Merci Geof
Bonjour, j’apprécie beaucoup ce tutoriel et j’ai tenté de réaliser ce slideshow. Le problème, toujours le même, avec IE c’est que je souhaiterais mettre des commentaires conditionnels pour exclure du code notamment la balise . Mais les commentaires déjà existants m’empêche de fermer mes balises..
Pouvez me donner un indice s’il vous plait. Merci.
*la balise section. dsl
Bonjour,
Je ne comprends pas trop en quoi les commentaires actuels sont gênants, mais plutôt que de s’embêter avec ces commentaires, cela vaudrait peut-être le coup de regarder du côté de HTML5 Shiv.
Merci et bonne continuation 🙂
Merci pour la réponse (je vais creuser!) et encore bravo de mettre à la disposition de tous des tutoriels de qualité. Ton travail est vraiment remarquable et il se démarque des autres qui proposent des solutions incomplètes.
Merci pour ces compliments 🙂
Mais j’ai bien conscience que même cette solution, de par la technologique qu’elle utilise, reste assez incomplète malgré tout.
Je suis sur un dossier plus complexe et plus complet pour un slideshow en HTML, CSS et jQuery accessible (je l’espère) et responsive.
Au plaisir.
Pour ton projet tu peux peut-être voir ça (si tu ne le connais pas déjà ):http://www.guillaumevoisin.fr/jquery/jdiaporama-v3-le-diaporama-jquery-est-de-retour
… il utilise jQuery et des transitions différentes qui finalement méritent d’être connues mais pas pour un slideshow où la simplicité doit primée.
C’est vrai que j’ai prévu du très très simple, mais c’est toujours bien de voir ce qui se fait ailleurs.
Merci 🙂
Bonjour,
Votre tuto est superbe. Je suis débutante mais j’ai réussi à le réaliser moi même. Sauf la partie des flèches ne fonctionnent pas. Quand je clique pour aller à la slide de droite rien ne se passe. Mais ce n’est pas grave, juste le fait d’avoir les images qui défilent toutes seules me convient. Par contre est-il possible de faire un lien vers une page web pour chaque image. On aurait un lien par image.
Merci…
Bonjour,
je reste scotché !!!
Quel tuto !! Je l’ai parcouru, pas encore appliqué mais je ne doute pas de faire de grands progrès grâce à vous.
Je vais dans un premier temps me contenter de « pomper » pour valider le fonctionnement « universel » (je ne compte pas IE) car j’ai constaté que l’exemple fonctionnait parfaitement avec Firefox pour pc ou pour tablette android seulement. Pas pour safari, chrome, opera mais j’espère uniquement parce pas les préfixes qui vont bien.
Merci encore 🙂
Bonjour,
J’espère que mon code sera suffisamment clair 🙂
Effectivement l’une des deux démonstrations (la plus simple) ne fonctionne que pour Firefox, afin d’alléger le code final et sa lisibilité. Il suffit de dupliquer les lignes préfixées et placer les préfixes adéquats pour que ça fonctionne sur les autres navigateurs 🙂
Bon après-midi.
Waouh ! Moi qui vient enfin de terminer de coder ma première version de slideshow manuel/automatique avec jQuery pour afficher des news, la découverte de ton slideshow en pur CSS me fait peur par rapport au nombre de lignes de code 😀
Je vais regarder ça de plus près ce soir surtout pour le keyframes 😉
Hi hi :p
Attention, c’est une démonstration. Ton slideshow en jQuery est certainement beaucoup plus flexible et retro compatible.
Mais c’est un bon exercice (selon moi) pour s’exercer sur plein d’aspects différents de CSS 🙂
Amuses-toi bien.
Superbe slide show.
J’essaie d’en faire un moi aussi mais je ne trouve pas le bon modele le tien s’en rapproche le plus.
Il me manque une fonction qui arreterait mettrait en pause le slideshow au survol de celui ci.
De plus une image differente apparaitrait par dessus toujours grace au hover. En fait il s’agit d’un slideshow de photo en NB et au survol de chacune d’entre elles une image en couleur correspondante apparaitrait.
J’avais trouver un slideshow en jquery mais je n’arrive pas à provoquer le hover depuis une image.
Si tu as une idée je t’en serai gré. Meme un tuto sur tel site ou autre.
Merci d’avance.
Hello,
Quelle technologie utilises-tu ? CSS uniquement ou jQuery/JavaScript également ?
Ici on est que sur du CSS3, pour ce que tu recherches il vaut mieux tabler sur du JavaScript je pense.
Si tu as une démo en ligne je pourrais mieux me faire une idée sur ce qu’il te reste à faire… (tu as le formulaire de contact si c’est trop privé)
Merci.
Nicolas, en CSS, tu peux appliquer la propriété filter: grayscale(0.5); (valeur entre 0 et 1, sans oublier les préfixes webkit, etc…) sur tes images et enlever l’effet au survol. Recherches sur Google : css filter, tu verras que tu peux appliquer quelques effets sympas avec filter 😉
Geoffrey, bon chez moi, la démo rame pas mal sur Firefox v.11 (sans doute trop d’animations à gérer 😀 ). Je vais rester sur mon slideshow avec jQuery qui s’adapte automatiquement au nombre de slides présents mais je garde, dans un coin, les @keyframes pour faire de petites animations annexes 😉
Hello,
C’est clair que CSS n’est pas très adapté pour cela 🙂
Tu fais bien de garder un script JS pour ça !
Merci pour tes conseils sur les filtres webkit.
Bonne continuation.
Bonsoir Geoffrey,
Tout d’abord bravo pour la gestion de ce blog, autant pour le contenu que pour ton « accessibilité ». J’ai rarement vu quelqu’un qui répond vraiment à tous les commentaires.
J’aurais juste une question concernant ce slideshow. J’ai bien compris qu’il était peu adaptable pour les enquiquineurs tel que moi, mais je voulais savoir s’il était possible, dans le cas d’un diaporama à plusieurs images de faire défiler les images au clic des boutons. Autrement dit : j’ai 3 images sur x images visibles et je veux que la 1ere laisse place à la 4e lors du clic. (Je suis pas si je suis clair là..)
Penses-tu cela possible avec ta méthode et sans JS ?
Hello,
Merci Julien.
Le but de ce blog est de partager un maximum de choses, ça me semble naturel de répondre aux commentaires lorsque je le peux 🙂
Là je peux te répondre par la positive, mais ça va être clairement chiant, et il n’y a pas d’autre mot pour ça ^^
J’ai compris que tu voulais un slideshow un peu dans ce goût : jCarousel.
L’une des solutions les plus simples pour éviter d’avoir tout le code à changer, et de définir des dimensions en pixels pour chaque image et chaque changement de position du conteneur. Du coup libre à toi de faire glisser le conteneur de 3 x 150px (si on imagine que 150px sont utilisés pour une image).
Te fournir le code serait trop long pour moi, il va falloir t’embêter à la faire :p
Sinon je conseille toujours JS (jQuery) pour faire ça, cette démonstration de CSS reste une démonstration 🙂
Bon courage !
Bonjour,
Je me suis servis des codes sources téléchargés dans la démo pour me faire un slide, j’ai un soucis,
Sous IE 9 le CSS n’est pas pris en compte…
http://www.ecoutealapersonne.fr/essaie/
Est-ce normale ?
Et j’aurais aimé savoir comment mettre des lien derriere les images ou les légendes ?
Car mettre autour de par exemlple cela ne marche pas, sauf sous IE9, qui ne prend pas en compte le CSS donc le lien fonctionne…
Merci d’avance pour votre aide ..
AKSEL
Bonjour Aksel,
Navré mais je ne vais pas pouvoir t’aider, par manque de temps.
Tu as un code invalide, il faudrait peut-être commencer par là 😉
Bon courage.
Geoffrey
Personnellement, j’ai tendance à délaisser IE… Sauf peut-être la version 10 ! Vu le nombre de visiteurs de mon site et le fait que les effets soient comme un bonus, je me prends pas trop la tête. Je vérifie que c’est lisible, utilisable, et seulement si j’en ai envie, je vais m’arracher les cheveux sur IE !
Je regarderai tout ça plus longuement, promis !
Bonjour geoffrey,
Merci beaucoup de m’avoir répondu, je comprends que vous n’ayez pas le temps.
Ce que je ne comprend pas c’est que j’ai pris le code source de votre slideshox puis modifé, pour avoir une apparence un peu différente… Mais de là a ce qu’il soit invalide …? Comment remédier a ce problème ?
Cordialement AKSEL 😉
Bonjour,
Tu places des liens autour des images (de mémoire c’est interdit dans un élément figure) et le code autour du slideshow est invalide.
Pour corriger cela il suffit de consulter le validateur et de suivre les conseils donnés :
http://validator.w3.org/
Bonne journée.
Bonjour, je viens de me servir du tuto pour me faire un joli slideshow, merci bien, super utile.
le sel problème c’est que je n’arrive pas a mettre de lien sur les photos puisque apparemment elles sont lu du Css et pas du html (je suis clair la? Oo).
Quelqu’un a une idée?
La pagination ne marche pas non plus, et je viens de voir qu’il en est de même sur la démo.
Je ne sais pas si quelqu’un me répondra avant les fêtes, mais si ce n’est pas le cas, je vous souhaite une bonne année.
Bonsoir,
Avez-vous bien lu qu’il s’agit d’une démonstration CSS ?
Ce tutoriel s’adresse initialement aux personnes connaissant les bases de HTML et CSS, l’ajout de liens ne devrait pas vous poser de problème.
Après quelques nouveaux tests sur les derniers navigateurs du marché, ma démo semble plutôt bien fonctionner, même sur tablette et smartphone.
Bonne fête à vous 🙂
j’ai regardé sur chrome, moz, IE, safari et opéra, ainsi que sur Iphone, et c’est pareil, sur le lien en dessous on peux voir que je suis sur l’image trois et la page 1.
http://uppix.net/4/d/f/4124513c1c479ed2da8a72ce131aa.jpg
ça viendrais d’ou a votre avis?
et pour les lien hypertexte, normalement ça ne me pause pas de problemes, sauf quand les images sont en background,
background: url(img/dummy-640×310-1.jpg) 0 0 no-repeat,
url(img/dummy-640×310-2.jpg) 640px 0 no-repeat,
url(img/dummy-640×310-3.jpg) 1280px 0 no-repeat,
url(img/dummy-640×310-4.jpg) 1920px 0 no-repeat;
je n’ai pas encore appris a mettre des liens en Css.
Soyez indulgent avec le novice que je suis et essayez de m’expliquer.
cette capture est pas mal non plus, je suis en image 3 alors que l’infobulle me dit diapo 1.
http://uppix.net/7/f/e/393953b133a593b38620663136b12.png
@Baxter : ce n’est pas une histoire d’indulgence mais de compréhension du code existant. Pourquoi vouloir aller plus loin que le code existant si celui-ci n’est pas compris ?
Ce slideshow regroupe deux comportements distincts mentionnés (il me semble) en début d’article : un système de visionnage automatique qui peut être stoppé sur demande, et un système manuel qui fonctionne grâce à la pagination.
Les deux ne sont donc pas liés ni synchronisés, sinon il m’aurait fallu user de JavaScript.
D’où le statut de simple démonstration CSS mentionné dans l’article et dans mon précédent commentaire.
Les liens sont dépendants de HTML, ils ne peuvent être ajoutés en CSS.
Bon réveillon 🙂
Bonjour.
Merci pour l’exemple.
J’avais juste une question. Des utilisateurs peuvent poster des images sur mon serveur. Quand ils les postent, automatiquement leur chemin d’accès sont enregistrés (ainsi que leurs légendes) dans une table (IMG_SRC). Est-ce qu’il y a une possibilité de faire passer ces images dans le SlideShow ? J’ai essayé et il me passe que la 1ère, le reste des images sont extraites après le SlideShow, donc out. Merci.
Voici un bout de code :
extrait incomplet modéré
Le code ne passe pas dans le champs de texte 🙁
Bonsoir,
Oui une partie du code HTML est interprétée, l’autre partie est supprimée par mesure de sécurité (ou antispam).
C’est pourquoi j’ai ajouté un message d’avertissement juste avant le formulaire de commentaire 😉
Vous pouvez toujours ressayer en échappant d’avance les caractères HTML.
Passez un bon réveillon !
Ah ok,
Voici le code (j’ai enlevé les balises html)
img src=
? echo $data[« path »]; ?
alt= » » width= »640″ height= »310″ /
figcaption
? echo $data[« legende »]; ?
/figcaption
J’espère que c’est clair. Comme vous le savez les $data[] permettent de récupérer des données de la base de données.
Merci d’avance, et bonne année.
Bonjour,
C’est clair mais pas assez complet je pense.
Soit il vous manque l’élément parent
figure
, soit vous ne me l’avez pas précisé.Le mieux serait avoir un exemple concret sur une page en ligne, que je puisse visualiser le code généré. (le code HTML donc)
Merci et bonne année 🙂
bonjour, et bonne année à tous,
je me tourne vers vous car j’ai un petit problème sur les slides, je ne vois que la 1er image j’ai changé les url() dans le style idem ds la partie html et rien ne change !
le slide s’effectue bien,
1er slide —> mon image 1
2eme slide —> la moitié de mon titre de l’image 1
3eme slide —> la seconde moitié de mon titre de l’image 1
Je ne sais pas d’ou vient ce décalage merci par avance!
Hello et bonne année également.
Hélas sans un exemple en ligne il va être difficile de t’aider, on ne sait pas dans quelle mesure tu colles à l’exemple de cet article.
Merci.
Salut Geoffrey,
Voici 4 images pour expliquer mon problème.
Image 1: http://uppix.net/8/b/8/cfb03539f5d2d552dad733dd480c6.bmp
Image 2: http://uppix.net/4/f/1/c57f4d04a97e1c1ed134d9daeadd4.bmp
Image 3: http://uppix.net/a/7/3/88fea2af4ea65a14b52cd8842912c.bmp
Image 4: http://uppix.net/1/6/a/190306f73891366571bb3a943e2c2.bmp
Si vous avez une solution à nous apporter, ça serait sympa
Merci.
Hélas ça ne m’avance pas beaucoup plus que précédemment.
Désolé.
trop moutmout Geoffrey !!!
Merci !!!!
bonjour,
je n’arrive pas à arriver à un resultat comme le tien. j’ai toujour les image les unes sous les autres.
peux u m’aider stp
merci
Bonjour,
Lorsque je clique sur les fleche pour changer d’image ou sur les point en ba les image disparaissent. Peut tu m’aider stp.
merci
Bonjour,
Hélas non, je n’ai pas la possibilité en terme de temps de t’aider à la mise en place d’un slideshow.
J’ai conçu celui de démo en suivant à la lettre ce que j’ai écris (sauf réel oubli, mais je ne crois pas).
« Cent fois sur le métier tu remettras ton ouvrage »
bonjour,
j’ai eu le meme probleme et il a été resolu par geoffrey il y a quelques temps.
C’est les url de ton background qui ne sont pas bons. Ici :
background: url(../img/dummy-640×310-1.jpg) 0 0 no-repeat,
url(../img/dummy-640×310-2.jpg) 640px 0 no-repeat,
url(../img/dummy-640×310-3.jpg) 1280px 0 no-repeat,
url(../img/dummy-640×310-4.jpg) 1920px 0 no-repeat;
transition: background 1s;
Bon courage.
Salut
J’ai une question pour css3/html5 slideshow
Comment mettre le défilement des images sera d’une manière automatique chaque 1s ou 2s voire l’autre image.
Bonjour Adil,
L’information est dans l’article, par contre le réglage se fait pour toutes les images, tu ne peux pas régler la transition entre deux images différemment pour deux d’entre elles uniquement, par exemple.
Bonjour,
Je l’ai peut-être raté quelque part dans l’article mais je voulais savoir si cela était possible de remplacer les images par des vidéos ou des liens vidéo ?
Bonjour,
Théoriquement il est possible de placer n’importe quel code HTML dans ce slider. Cependant ça reste expérimental et le système de contrôle des slides ne serait plus opérationnel tel que le code est conçu. Comme je l’ai dit dans les autres commentaires, il s’agissait vraiment de détourner des propriétés CSS pour tenter de créer un slideshow et en montrer les limites.
Préférez un slideshow en JavaScript pour le moment 🙂
Bonjour à tous,
Voilà, j’ai suivis ce tuto pour créer un slideshow à défilement automatique :
[Edit: mauvais lien]
Cela fonctionne, je n’ai aucun soucis, néanmoins je voudrais si possible mettre un pagination (en petit point) comme sur ce tuto pour pouvoir en plus du défilement, se déplacer de façon manuelle :
http://www.creativejuiz.fr/blog/tutoriels/css3-creer-slideshow-automatique-controlable-transition
Mais je n’y arrive pas, pouvez vous m’aider svp
Seb
Bonjour,
J’espère que tu as bien lu le tutoriel et les commentaires avant de demander de l’aide.
Merci, bon dimanche.
Bonjour,
Tout d’abord grand bravo pour ton talent, c’est vraiment formidable.
Oui j’ai bien lu le tuto, même plusieurs fois mais je n’arrive pas à mélanger les deux codes.
Premier lien : http://www.alsacreations.com/tuto/lire/1059-ID-slideshow-css3-animation-keyframes-automatique.html
De même 🙂
Merci beaucoup ^^
En fait si je te demande ça, c’est qu’au début de l’article je parle de cet aspect de la chose : ce code est une évolution un peu complexe du tutoriel présenté sur Alsacréations.
Il va donc être très difficile de mélanger les deux, puisque celui-ci est déjà un mélange de deux concepts.
En tout cas moi je ne m’y risquerai pas :p
Entre nous, cette démo CSS3 devrait rester une démo, à moins que le contexte soit contraignant au point de ne pas pouvoir utiliser JS, et dans ce cas le code demande une très bonne connaissance des CSS pour être modifié.
Mais dans un premier temps, pour éviter les erreurs, il vaut mieux le copier, puis quand ça fonctionne, le démonter pour comprendre vraiment comme ça marche. À la chinoise j’ai envie de dire ! :p
Avec plaisir 🙂
Ce que je voudrais faire alors c’est mélanger le tuto du slideshow d’Alsacréations avec le système d’avant arrière toujours d’Alsacréations.
J’ai tenté mais cela n’a pas fonctionné.
Lien tuto : http://www.alsacreations.com/tuto/lire/1058-ID-slideshow-css3-target-animation.html
C’est bon j’ai réussis à me débrouiller par contre tu pourrais me dire comment on fait pour régler le « @keyframes AutoSlide » quand on changer la taille des images. J’ai mis des images de 320px et il y’en a trois pour le moment. J’ai lu et relu le sujet mais je ne comprends pas trop le système de pourcentage. Merci 🙂
Je dis surtout ça, si je met plus de 3 images.
Bonjour votre tuto est très bien fait. Je vous remercie.
Je me suis arrêtée à la timeline, ca me plait bien comme ça.
Ca marche très bien pour firefox, mais j’ai un petit (gros) problème avec Safari et Chrome, les slides ne veulent pas défiler….(et je n’ai pas regarder encore pour IE…)
Avez vous une solution pour moi?
Bien cordialement,
L.
Bonjour,
Merci pour ton retour.
As-tu pris le temps de rajouter les préfixes pour Webkit ?
yeeees ! Ca marche !
Merci encore pour le partage de vos connaissances !
L.
Un grand bravo pour la réalisation de ce tutoriel !
Simple et efficace 🙂
Malheureusement, j’ai un petit problème.
Je suis passé à 3 images au lieu de 4.
J’ai modifié le code qui s’y rapportait.
Le problème, c’est que quand je laisse le « show » fonctionné seul, il crée quand même un 4ième point, et ajoute la première image. Puis seulement recommence la boucle.
Cela peut-il être du à au timing?
Merci d’avance.
Hello,
Merci, mais je ne pense pas que ce soit « simple » justement ^^
Il y a beaucoup de personnes qui se cassent les dents à vouloir ajouter ou supprimer un slide sans comprendre que ce moyen de créer un slideshow n’est pas flexible. Il faudrait passer par un script PHP ou un fichier LESS ou SASS pour créer des styles dynamiques afin d’améliorer la maintenabilité du code, qui, je le rappelle, n’est pas fait pour ça à la base.
Cet article/tuto est une démonstration un peu déviante de CSS3.
Au niveau des modif il y a toutes les animations à revoir pour recalculer les positions des différents éléments. 😉
Bon courage.
Bonjour, bravo pour ce slideshow de qualité, juste une petite question est-il possible de rajouter dans les slides des liens, boutons et du texte et si oui comment? Merci d’avance
Bonjour,
Merci pour ce compliment.
Il me semble que les commentaires font partie intégrante du blog, je vous invite à les lire 🙂
Merci.
Bonjour,
Vraiment sympa ce tutoriel est difficile à reproduire (pour moi en tout cas).
Mais je trouve étrange deux choses:
1 – Si on place le css dans un dossier css, même en changeant le chemin dans l’index les pastilles ainsi que les flèches sont cassées.
2 – Si je ne mets pas les commentaires dans les du « dots_commands » ma pastille de sélection se décale.
Peut-être que j’ai loupé quelques choses.
ps: j’ai mis un temps fou pour trouver le soucis lol.
En tout cas, merci pour ce tuto, j’ai appris pas mal de choses.
Bonjour à tous !
Ce tutoriel est très astucieux et j’ai planché dessus pas mal de temps pour finalement me rendre compte que je n’avais pas les connaissances suffisantes pour réaliser ce que je voulais à partir de cette page…
Mon objectif de départ était de faire ceci mais avec 3 vidéos (et les balises ) et que l’ensemble s’adapte à la taille de la fenêtre ou écran.
J’ai bien essayé avec max-width et width: 100% (pour les vidéos dedans) mais comme dans ce tuto les valeurs du cadre sont fixes, à un moment donné, tout disparaît ! héhé
bref voilà où j’en suis :
(ça n’as plus grand chose à voir avec le tuto en fait car en plus j’y ai ajouté un peu de javascript mais si l’un d’entre vous avait un lien qui propose une solution correspondant à mes attentes, je suis plus que preneur !! 😉
http://www.jeremy-godreau.com/8.html
Bonjour,
Il semblerait que tu ais déjà trouvé une solution ? Ta page semble bien fonctionner actuellement.
Merci 😉
En fait il donne l’impression de fonctionner mes les flèches jaunes envoie toujours vers le même lien (cad : « video2 » pour la flèche « next » et « video3 » pour la flèche « prev », peu importe la vidéo que l’on est en train de lire, … et c’est embêtant)… Et puis j’aurai aimé avoir un changement de couleur des pastilles lorsque l’on a cliqué dessus pour savoir sur quelle vidéo on est. Mais ça je ne vois vraiment pas comment faire malheureusement…
En effet, je pense que vous avez oublié une partie du code qui utilise les ancres et cibles en HTML et CSS (
#ancre
et:target
).J’ai bien tenté de l’intégrer mais mes href contiennent des « javascript:changeVideo » j’ai essayé plusieurs trucs (comme ajouter un id= »sl_i(1, 2 ou 3) dans les balises <a> » mais ça ne fonctionnait pas… Il y a un truc que je n’ai pas du bien capter.
Du coup je ne vois pas comment faire avec ces href « sl_i1 » « sl_i2 » « sl_i3 », d’ailleurs je n’ai pas tout compris a ce bout de code CSS :
#sl_i1:target ~ #slideshow .commands{
~ > il sert à quoi ce symbole ? (sans vouloir faire le néophyte absolu ! ^^)
C’est que tu t’es lancé dans un tutoriel sans en comprendre le sens, ou que tu as bêtement copié le code, donc forcément ça ne marche pas 😉
Je t’invite à lire le tutoriel, il me semble avoir fait les efforts nécessaires de vulgarisation.
Merci.
bonjour,
avec chrome mon site s’affiche correctement; mais lorceque j’utilise internet explorer les style ne sont pas pris en compte je ne sait pas pourquoi…
peut tu me dire comment regle ce probleme stp
merci
Bonjour,
Internet Explorer est bien trop vague, une version précise ?
Les styles seront forcément différent, et le slideshow n’a pas la même réaction sur ce navigateur. (notamment en slide automatique, ça ne marche pas)
internet explorer 9
j’ai meme rajouter un menu et tout et c’est une catastrophe
comment faire pour regler le probleme ?? et oui le slide ne fonctionne pas du tout
Bonsoir,
Pour régler le problème il fait déjà le connaître. En l’état je ne sais rien tant que je n’ai pas vu la chose dans son milieu naturel, à savoir : une page web.
Je n’ai pas encore de talent de devin hélas 😉
Bonne soirée.
peut tu m’envoyer ton adresse mail pour que je t’envoi le lien du site je ne veut pas le laisser ici merci 🙂
Bonjour,
je voulais savoir s’il était possible de mettre 2 slide dans une même page (différente photos).
Et si oui comment car j’ai essayé et échoué.
Merci d’avance
Bonne soirée
Bonjour,
et tout d’abord merci pour ce tutoriel très complet et très bien expliqué.
J’ai adapté votre slide à la bannière du site internet de mon club de triathlon, et cela fonctionne (cf http://www.valence-triathlon.com/slide2).
J’ai également adapté votre slide automatique sur alsacréations pour faire défiler les partenaires, et cela fonctionne également (cf. http://www.valence-triathlon.com/slide_partenaires).
Problème : quand j’essaie de mettre les deux slides sur la même page, les CSS entrent en conflit et les animations s’emmêlent. Pouvez-vous svp m’indiquer comment les différentier pour qu’elles s’affichent correctement?
D’avance, merci
Ugo
Bonjour,
Houla c’est risqué ça ! :p
Je ne saurais t’aider car je n’ai plus les codes en tête. Il faut juste vérifier que tu n’as pas des noms de classe identiques, ou des noms d’animation identiques.
Bon courage.
Bonjour;
J’ai découvert se site en fouinant un peu sur google. Je suis entrain de réaliser un site internet pour un ami. Seulement, je suis plutôt novice. Bref, j’ai suivi ce tuto et j’ai donc tenté de réaliser un slideshow en CSS3 & HTML5 comme ci-dessus. Malgrès toutes les explications, je bloque bêtement sur @keyframes.
J’ai lu toutes les questions/réponses mais je ne trouve pas la solution. Pouvez-vous m’expliquez plus précisément où placer @keyframes et les autres et de quelle façon faut-il le coder ?
J’utilise dreamweaver pour créer mon site.
A bientôt
Bonjour,
Le tutoriel se suit étape par étape en complétant votre code source CSS au fur et à mesure (donc en rajoutant du code à la suite du code précédent).
Les keyframes sont des sortes de fonction que l’on peut placer n’importe où dans le fichier CSS, elles sont ensuite appelées lorsqu’un élément doit être animé.
Si vous êtes débutant je vous conseille largement de passer par une solution JavaScript déjà prête.
Sans vouloir vous vexer, il me semble m’être suffisamment expliqué sur la complexité du code et sur l’aspect démonstratif plus que didactique de cette réalisation. (voir commentaires, qui font partie intégrante d’un article)
Bonne continuation 🙂
Je comprends. Je suis tenace et je vais continué à chercher l’erreur dans mon code.
En tout cas les couleurs dans mon code source m’indique que le code que j’ai mis n’est pas bon.
MERCI ENCORE POUR TON TUTO BONNE CONTINUATION
Le problème si tu fais attention à la coloration syntaxique, c’est que beaucoup d’éditeurs vont se planter sur ce type de code, car certaines propriété ne sont pas encore prévues au sein de ces IDE.
Ton code ne semble pas avoir d’erreur sur cette partie là.
Bon courage.
Youpiiya ! C’est ok pour moi. C’était trop brouillon dans mon code source, j’ai fait un peu de nettoyage et voilà ce que ça donne:
[nettoyage du code]
Encore merci à toi
Ah ben de rien, j’ai rien fait moi 😉
Je me suis permis de virer ton code, il est mal passé.
Bonne continuation 😉
Salut Geoffrey avant tout merci !
je bloque sur « la pagination » j’arrive pas comprendre comment le code gère l’affiche de l’image correspondante à un « dots_commands ». Si j’ai bien compris cette fonction est gérée par les codes entre « #slideshow .c_slider {…} » et
« /* on cache le slider */
.sl_i:target ~ #slideshow .slider …
#sl_i4:target ~ #slideshow .dots_commands li:first-child a:before { left:54px; } »
mais j’arrive pas a le faire fonctionner.
1- je veux la pagination sans les flèches latérales.
2- lorsqu’on clic sur « dots_commands » activé par la lecture auto, le 1er « dots_commands » à l’extrême gauche qui reçoit le focus (changement) de la couleur. commant corriger ça ?
Hello,
Je te l’accorde, cette partie du code (comme les autres tu me diras), est un peu capillotractée.
Les flèches latérales et la pagination ne sont pas liées, si tu supprimes le code HTML concernant les flèches, tu ne devrais pas avoir de souci.
Il faut bien voir ce slideshow comme deux slideshow l’un dans l’autre.
Un qui gère la partie automatique, que l’on peut donc stopper ou remettre en route.
Un qui gère la partie manuelle et qui n’influe pas sur la version automatique.
En gros dès que tu touches à l’un des dots_commands tu mets de côté le slideshow automatique pour « démarrer » le slide manuel.
Hélas pas moyen de savoir, sans JS, où en est le slideshow automatique pour faire correspondre la bonne slide en mode manuel.
Tu me suis ?
Salut Geoffrey,
Tout d’abord un grand merci pour ce slideshow expérimental ! Je viens de l’adapter pour afficher 8 images. J’y connaissais pas grand chose en css (à part les principes basiques) et grace à ton tuto et mon envie de l’adapter à mes besoins, j’ai énormément appris. Tout fonctionne et c’est parfait ! Bon j’ai du user de ma calculette car pour garder la fluidité équivalente à 4 images, il a fallu gérer avec des valeurs(%) décimales et entre virgules et point, ont peut vite faire une erreur et ne pas trouver d’ou ca vient !
Concernant ce problème logique de pagination/lecture auto. Penses-tu qu’il soit possible de réinitialiser la lecture auto au slide 1 lorsque l’on clic sur play. Comme lorsque l’on charge notre page web et que la lecture auto débute.
Pour mieux comprendre :
chargement page accueil –> lancement du slide en lecture auto –> utilisation de la pagination (lecture auto stoppé, affichage des images en background) –> clic sur play –> redémarrage de la lecture auto au slide 1. J’avoue que le code complet reste encore un peu flou donc si tu avais une piste ca me dépannerait bien !
Merci 😉
Salut m’sieur !
Merci pour ton commentaire qui fait vraiment plaisir à lire.
C’est sur cette logique de recherche personnelle (pour le lecteur) que je construis mes articles, alors quand le lecteur se prend au jeu, ça fait toujours plaisir.
Je t’avoue ne pas avoir réfléchi à la chose, mais il semble que
animation-play-state
n’accepte que deux valeurs possibles :running
etpaused
.http://dev.w3.org/csswg/css-animations/#animation-play-state-property
Donc je pense qu’il faut passer par JS pour faire un reset de l’animation. (JS peut se greffer aux animation CSS)
http://dev.w3.org/csswg/css-animations/#animationevent
Bon courage et excellente continuation à toi 🙂
PS : j’espère avoir répondu à ta question.
Excellent tuto.
Je ne parviens pas à le faire fonctionner sur IE par contre. Quel est le css pour IE pour le défilement automatique des photos?
Bonjour,
Sauf erreur de ma part, l’information est dans les commentaires, mais il ne faut pas chercher du code 🙂
Bonne soirée.
Bonjour.
J’arrive très bien à faire fonctionner ce slider mais il reste quand même un détail qui m’échappe : à quoi sert le text-indent: -9999px ?
Merci
Hello,
Un vieille article sur le sujet :
http://www.alsacreations.com/astuce/lire/11-comment-cacher-un-titre-derrire-un-logo-par-exemple.html
Merci.
Je n’avais jamais lu cette astuce. Intéressant, merci
Bonjour !
J’ai des petits problèmes à propos du slider…
1. La barre de timeline, à partir de la 4ième photo repart en arrière…
2. A partir de la 4ième photo, le slider revient au début et ne montre pas les 16 autres images. Même en modifiant ce code :
/*
le conteneur des slides
en largeur il fait 100% x le nombre de slides
*/
#slideshow .slider {
position: absolute;
left:0; top:0;
width: 1600%;
height: 375px;
}
Pourrait-tu m’éclairer s’il-te-plaît ?
Merci d’avance 😉
bonjour,
Super tuto !!
comment supprimer les pauses au moment des cliques sur les flèches ou sur les ronds en bas ?
Merci d’avance
Bonjour,
Si tu supprimes la pause tu supprimes l’intérêt des flèches. Encore plus vrai dans ce concept full CSS.
Impossible donc.
Merci pour cette réponse.
Autre chose j’ai placé ce que tu avais mis dans body dans une section de mon html. Le problème c’est que le diaporama dépasse du cadre de cette section parente. Comment expliquer qu’il prenne pas la taille maximum de son bloc parent ?
D’avance merci !
Bonjour Nicolas,
Si un élément dépasse d’une boîte parente, c’est que le parent est simplement plus petit que le contenant, peut-être donc faudrait voir du côté des
width
,padding
(deux deux éléments) oumargin
(de l’élément interne).Bon courage 🙂
La question est vieille mais il m’est arrivé la même chose. Si ça arrive à d’autres, regardez du côté du box-sizing ( https://developer.mozilla.org/fr/docs/CSS/box-sizing ). En ce qui me concerne, je l’avais changé en début de CSS en « border-box ». Forcément, ça décale tout…
Hello,
C’est vrai que quand on commence à jouer avec les modèles de boîte, il fait assumer 🙂
Bon courage !
Bonjour,
J’apprécié votre tutoriel et j’ai essayé de le mettre dans mon site.
http://studiomediacom.fr/micka/immo
J’ai essayé de le mettre dans l’autre sens mais je n’arrive pas à le mettre complètement sur le coté. Et j’ai un problème avec les images et le figcaption. Pourriez-vous m’envoyer une version adaptée du style.css pour mon site, s’il vous plaît?
Parce que je n’arrive pas à terminer les réglages..
Merci d’avance!
Bonjour,
Je propose déjà gracieusement des tutoriels et des conseils, j’ai un peu de mal à imaginer offrir mes services gratuitement en vous mâchant le travail, qui plus est pour un site commercial.
Donc désolé mais ça sera non 🙂
Très intéressant ! Merci à toi Geoffrey !
bonjour, svp j’ai une petite question si j’ajoute une autre image ou plusieurs images à ce code les images que j’ai ajouté n’affichent pas .il affiche juste 4 images pourquoi et merci d’avance .
Bonjour Khadi,
J’imagine que vous avez pris le temps de lire les commentaires pour éviter de me faire répéter certaines choses inutilement ?
En vous remerciant.
svp est ce que vous pouvez me répondre? parce que j’ai pas de temps pour lire tout les commentaires.et merci
Alors non 🙂
Désolé mais je ne peux pas prendre le temps d’écrire des articles, effectuer mes recherches, et me répéter 36 fois dans les commentaires.
Salut,
pouvons-nous mettre des liens aux images qui défilent sur ce slideshow ?
merci.
Bonjour,
Je possède déjà un slideshow cependant je voudrais intégrer celui de votre tuto. Je ne parviens pas à l’afficher.. Dès lors que je crée ma fiche, je ne perçois par les images mais le code. Comment faire ?
Bien à vous.
Bonjour,
Je n’ai pas compris votre problème.
Si votre slideshow est fonctionnel, autant le garder, sauf si vous souhaitez vous lancer dans un défi en CSS.
Bonsoir,
J’ai crée un slideshow à l’aide de mon hébergeur (weebly). Cependant, il ne me plait que moyennement.. Je trouve que le votre est bien plus joli. Ce pourquoi, je souhaiterai associer votre tuto à mon blog. Je ne réussis que la première étape.. Je bloque après..
Bonjour Marie-Sophie,
Hélas ce tutoriel est vaste et la « première étape » pour moi et la pose des fondations (à savoir le code HTML). Peut-être manque-t-il quelque chose à ce niveau, mais sans avoir votre code sous les yeux je ne peux absolument rien pour vous.
Je suis bloquée à l’étape animation du conteneur car je n’ai pas compris comment on préfixe, peux tu me l’écrire ?
Bonjour Nina.
J’ai proposé deux démonstration différentes ainsi que le code source en téléchargement depuis la page de démonstration officielle.
Je te propose de consulter le code source de la démonstration : http://www.creativejuiz.fr/trytotry/juizy-slideshow-full-css3-html5/styles.css et de chercher @-webkit-keyframes dans le document.
Tu verras comme une code dupliqué avec les différents préfixes (@-webkit-, @-moz-), c’est de cela dont il s’agit lorsque l’on parle de préfixe.
Bon courage ! 🙂
Bonjour,
je suis débutant dans le codage html/css/JS.
J’ai suivi votre tutoriel pour créer mon slide.. et j’ai un petit problème au niveau des préfixes… Google chrome et Safari ne reconnaissent pas l’animation… sur IE et Firefox aucun soucis. Aussi pour ce qui est de l’ombre du conteneur sur Google chrome/Safari elle se place bien mais pas sur IE (elle est complètement décalée) sur Firefox pas pensé à vérifier.
D’avance merci pour votre aide
ps: j’ai bien marqué le prefixe @-webkit-keyframes slider pour chrome et safari
J’ai finalement résolu mon problème. Pour si ça arrive à d’autres, il suffit de placer les préfixes juste au dessus du contenu ciblé. Pour ma part je les avait mit en début du CSS… apr préférence de lecture mais chrome semble pas aimer!
Encore un grand merci pour ce tutoriel très bien expliqué!
Bonjour Juan,
Je n’ai pas saisi la solution proposée, mais n’ayant pas le code sous les yeux, j’imagine que ça n’aide pas.
Merci et bonne continuation 🙂
Effectivement, sans le code difficile de voir la solution, et bien j’ai fini par téléchargé le code complet pour trouver mon erreur, l’erreur était au niveau » #slideshow.slideshow_content:after » les préfixes dans votre code sont marqués juste en dessous ou dessus du contenu ciblé comme ceci: ———-
#slideshow .slideshow_content:after {
position:absolute;
bottom: 0; left:0;
content: » « ;
background: #999;
width: 100%;
height: 1px;
}
/*PREFIXES*/
@-webkit-keyframes slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
@-moz-keyframes slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
@keyframes slider {
0%, 20%, 100% { left: 0 }
25%, 45% { left: -100% }
50%, 70% { left: -200% }
75%, 95% { left: -300% }
}
————
Moi par préférence je place les style de type « div class » en haut et les « div id » à la suite, et j’ai voulu placer les préfixes tout en haut du CSS après la balise body, ce qui ne plaisait pas à Chrome.
J’espère avoir été plus explicite.
Merci pour votre suivi Geoffrey.
Oui tout à fait, merci pour ces explications.
Par contre Chrome n’accorde normalement pas d’importance à l’ordre de déclaration pour les @keyframes. Il va falloir que je regarde cela de plus près.
bonjour et déjà merci pour ce cours, moi j’ai repris le code en y intégrant des codes php et MySQL, le problème est qu’il n’affiche seulement jusqu’a la 3 iéme image , or je souhaite faire afficher 10 image en utilisant une base de donnée . merci de m’aider .
Bonjour,
Vraiment navré mais je ne peux répondre à toutes les demandes de support pour cet article (j’en reçois une dizaine par semaine en plus sur ma boîte mail) et surtout répéter les choses déjà abordées dans les commentaires. Merci de prendre le temps de les lire 🙂
Bon courage et bon après-midi.
Bonjour,
Tout d’abord je tiens à dire que ce tuto est magnifique, le resultat est bluffant. Bravo pour le travail fourni !
Je me permets aussi de vous dire que j’ai disséqué votre travail pour mieux comprendre le fonctionnement. Et il y a quelque chose qui m’interpelle. C’est la div « c_slider ». En réalité tout se trouve dans cette div si j’ai bien compris. Vous avez chargé les images avec background-image, et dans la structure html, vous avez rechargé les images avec la div « slider ». Mais dans le visuel ce qu’on apercoit, c’est c_slider uniquement.
Pourquoi l’avoir créé deux fois ?
On peut uniquement créé cet effet de slide avec le background-image ?
Je vous pose ces questions, car j’ai l’idée de creer mon site en css pure. Et j’ai commencé à faire un site qui defile horizontalement, dès lors ou on clique sur un onglet du menu ( qui lui est fixe). Ca reprends exactement la logique de votre slider, à la difference que j’aimerais faire défiler des divs de contenus et non des images. Comment puis je m’y prendre ? Merci 🙂
Re bonjour,
A force de recherches j’ai enfin trouver ce que je cherchais ^^ :
http://www.css3create.com/Navigation-slide-CSS3-avec-target-et-transitions#wrap4
J’ai donc reussi à l’adapter selon mon site.
Mais je me pose toujours la question, pourquoi appeler deux fois les images (une fois dans l’html, et une autre fois dans le css) ?
Merci encore, et si tu as dejà repondu à la question dans les commentaires, alors je m’en excuse et j’irais chercher la reponse 😉
Bonjour,
Le but est de permettre le double emploi du slide automatique et du slide manuel. En effet il est impossible d’écraser le statut d’un élément lorsque ses styles sont donnés par une animation (@keyframes). Voir également l’article : Astuces HTML et CSS : mes dernièeres expérimentations
Merci
Superbe tuto merci beaucoup !
Je ne pensais vraiment pas pouvoir créer mon slide show si simplement en CSS ! 🙂
Je garde ce site en mémoire !
Salut,
Tout d’abord merci encore pour ce tuto!
J’ai cependant un soucis, tout marche nickel sauf les fonctions suivant/précédent ainsi que le bonux pagination. Les images ne se chargent pas comme si les liens « #sl_i4 » etc. pointaient nul part..
As-tu une idée du problème?
Merci beaucoup 🙂
Bonjour,
Les liens pointent vers des ancres plus haut dans la page pour « activer » les déplacements des images via la pseudo-classe
:target
.Si votre code HTML ne respecte pas ma recommandation initiale, cela ne peut pas marcher 🙂 (mais n’ayant pas votre code sous les yeux je ne peux pas deviner).
Bonne journée.
Bonjour,
Merci pour ce tutoriel Geoffrey.
J’ai pu m’en servir pour répondre à une commande sur NU (j’ai pas envie de faire de pub, alors je dirais simplement que c’est un forum d’aide communautaire x)).
En tout cas, merci, ça m’a permis d’avoir un regain d’imagination et surtout de comprendre la notion de keyframes !
Bonne journée !
Salut à toi,
Aucun problème pour parler ouvertement de Never Utopia, il ne faut pas « cacher » ce type de communauté 🙂
C’est toujours un plaisir de partager !
Bonne continuation à toi.
Bonjour tout le monde,
Tou dabord magnifique tuto car je cherchais exactement ça pour mon site (ne connaissant pas je JS)
J’ai une petite question car j’ai mis se slider sur mon site donc, et par contre visiblement ca ne fonctionne pas sur IE8… (les images s’affiche les unes au dessous des autres..) Une astuce peut être ? Car malheureusement encore beaucoup sont dessus 🙁
Bonjour William,
Hélas le CSS utilisé ici est très riche en propriétés issues de CSS3 et le nombre de polyfills nécessaire serait bien trop important.
C’est pour cela que la démonstration affiche une compatibilité à partir de IE9, et encore, avec dégradation gracieuse.
Ce tutoriel reste une mise en avant d’une solution expérimentale. JS étant encore le meilleur moyen de parvenir à quelque chose de rétro-compatible.
Bonne journée 🙂
Merci beaucoup de ta réponse même si je m’en doutais un peu ^^
Tant pis… A voir pour le JS mais plus tard 😀
Bonne journée à toi aussi
Bonsoir,
J’ai bien réussi à la faire marcher en automatique sous Chrome, mais quand je réduis la taille de la fenêtre du browser pour étudier le comportement sur tablette, les images restent à la dimension initiale et débordent sur les autres colonnes.
Y a-t-il un moyen de rendre les dimensions des images dépendantes de la largeur de la colonne dans laquelle elles apparaissent ?
Merci d’avance.
Bonjour,
C’est possible en remplaçant toutes les largeurs fixes (width en pixels) par des valeurs en pourcentage.
Cela va vous demander un peu de temps 🙂
Bon courage.
Bonjour,
J’ai un hébergeur (gratuit) qui n’accepter que le html et le css, d’où mon intérêt pour ce tuto ; j’ai bien compris le principe (très malin d’ailleurs) ; j’ai par contre une énigme incroyable à soumettre : j’ai remplacé les points sous le diaporama par les miniatures des images qui défilent. Ainsi, en cliquant sur la miniature, on retrouve l’image agrandi dans la fenêtre du diaporama. Je réussis à le faire pour trois ou quatre images, mais impossible pour 5 images ; lorsque je clique sur la miniature de la cinquième image, s’affiche la première image dans le diaporama. Et pourtant j’ai bien mis à jour à la fois dans le html et le css les éléments nécessaires (background…) ; c’est une pure énigme ! Quelqu’un pourrait il me venir en aide ?
Philippe
je trouve se système excellent pour les personne qui créer un fichier html5 + css3 mais pour ma par je créer les deux dans le même fichier (je sais que ce n’est pas recommander mais je demande pas de juger je préfère comme sa )
et quand on fait de cette manière la ton code ne marche pas après 5 heure de bouffage de code j’ai finie par y arriver mais je préférerai essayer une autre façon parce que du coup mon code est plus que immense ^^
Bonjour Corentin,
Je n’ai pas compris ton commentaire. En quoi la séparation des fichiers rend la chose plus facile ?
Ici la démonstration http://www.creativejuiz.fr/blog/doc/slideshow-full-css3/ est faite sur un seul fichier sans plus de difficulté.
Oui le code final est long. Si tu veux réduire sa taille il faudra passer par du JS vanilla (sinon il te faudra inclure jQuery dans ton document, si tu veux rester avec un seul document :p).
Bonne continuation.
Tout d’abord merci d’avoir pris le temps d’écrire ce tutoriel (et je sais que c’est long!).
J’ai téléchargé – en plus du vôtre – le code source dont vous nous avez donné le lien de:
« Slideshow Full CSS3 Responsive », qui présente l’intérêt, d’une part, de proposer une approche différente, et, d’autre part, d’offrir une largeur fluide s’adaptant à peu près à tout type d’écran (et très facilement paramétrable), notamment aux écrans de smartphones, ce qui m’intéresse tout particulièrement.
Seulement, ce slideshow ne propose pas de défilement automatique, ni les nombreuses options qui vont avec et que vous avez développées.
En outre, les flèches commandant le défilement manuel avant/arrière sont des images de fond, ce que je préférerais éviter.
J’essaie de combiner les avantages des deux avec mes maigres compétences (largeur fluide + défilement automatique).
Seulement, quand je démarre mes essais du « Slideshow Full CSS3 Responsive », je galère et quand j’essaie à partir du vôtre, je suis bloqué dès le départ (notamment à cause des background-position en pixels et qui ne fonctionnent plus quand je les traduis en pourcentages).
Si vous pouviez me dire en quelques mots quelle approche est vaine et quelle autre a la moindre chance de succès, vous me rendriez un grand service.
Il va de soi que si je parviens (par miracle et il ne faut pas trop y compter) à un quelconque résultat un tant soit peu intéressant, je serais ravi de le partager via votre site.
Merci pour tout, de toutes façons.
Bonjour
Tout d’abord merci beaucoup pour ce super tuto. Cependant lorsque je clique sur mes point de pagination le défilement s’arrete. Je dois alors cliquez sur play et le « diaporama » reprend la ou il s’était arreté. Pourquoi ?
Bonjour,
J’espère ne pas avoir oublié de le préciser pour la personne qui lit l’article en entier 🙂
Bonne journée.
Bonjour.
Tout d’abord, vous féliciter pour le code que vous avez créé pour faire un curseur CSS3 et HTML uniquement. Excellent travail.
J’ai un problème en essayant de modifier le code pour voir 3 images ensemble et déplacer ces 3 images en même temps à la fois le droit et le gauche.
Ce dont j’ai besoin est un carrousel qui va montrant 3 petites images, et le déplacement aller 3 sur 3.
Mais je ne suis pas au courant de la façon de la mettre en œuvre afin que appuyant sur le bouton de la navette à gauche ou à droite, au lieu d’afficher une image, montre-moi trois.
J’espère que vous comprenez ce que je demande, que ma langue maternelle est l’espagnol et j’ai traduit ce texte à un traducteur.
De vous remercie déjà beaucoup pour l’aide que vous pouvez me donner.
Bonsoir et merci pour ce script fait en CSS3 et HTML. Moi mon problème je n’arrive pas voir l’animation de mes images bien que j’ai appliqué les codes comme vous avez expliqué mais mon image ne fait pas d’animation. il est juste bloqué sur la premiere image. Merci
Bonsoir,
Vous imaginez bien que sans plus de détails je ne peux pas vous aider ?
Le mieux serait d’avoir un exemple de code.
Merci.
Bravo… Super Tuto, superbes effets… La grande Classe ! Merci
Hi Geoffrey,
Could you please help us know, how to add links in the caption for each image.
Thanks
bonjour , ton tuto est génial il ma vraiment beaucoup aider ( même si j’ai eu un peu de mal au début )
j’ai vue plus haut que tu disais que sa ne pouvais pas fonctionner sur chrome mais je me demande si maintenant c’est le cas ? si oui , peu tu me dire comment faire merci
Bonjour,
Je parlais des animations de pseudo-éléments (timeline), mais si Chrome le supporte cela devrait apparaitre directement sur la démo 🙂
Bon dimanche.
Thank you.
Bonjour Geoffrey,
Merci pour le tuto, parfait débutant, je m’en sort déjà bien grâce à toi notamment. J’ai cependant un petit problème: sur ma page, le diaporama est fixe tant que l’on appuie pas sur play. Or je l’utilise pour une page d’accueil et je voudrais qu’il démarre automatiquement au premier chargement et que ceux qui le souhaitent le stop par la suite. J’imagine que la réponse et simple, mais je n’arrive pas à trouver. Peux-tu m’aider?
Re-bonjour,
Finalement ça fonctionne, j’avoue ne pas avoir saisi exactement pourquoi, mais j’avais changé les options de visibilité des boutons (hover, focus…) parce que j’aime bien voir toujours les 2 à la fois, mais en revenant à ta version initiale, ça fonctionne et ça me convient bien, donc pas de souci, j’aurais le temps de comprendre plus tard avec l’expérience. Milles merci encore.
Bonjour !
Je suis désolé de vous embêter, mais lorsque je veux télécharger l’archive sur la page de test, ça met:
Erreur : [Edit : données SLQ supprimée]
Comment récupérer l’archive ?
Merci d’avance
Bonjour,
Merci pour ce signalement.
C’est corrigé, vous devriez pouvoir télécharger l’archive désormais.
Bonne journée 🙂
Bonjour,
J’ai pris le dossier de base de la démo.
J’ai modifié quelques chemins et le background pour pouvoir testé sur mon site.
Avant de faire d’autre modif, j’ai tester et défilement automatique marche très bien ainsi que les boutons lecture et pause.
Mais quand je veut cliquer sur une des deux flèches ou sur un des 4 boutons, aucune image n’apparait.
Avez vous une idée de pourquoi cela ne marcherait pas alors que le défilement auto marche parfaitement ??
Merci d’avance,
Cordialement
Bonjour Thomas,
Hélas il peut s’agir de plusieurs choses.
Sans une démo en ligne je ne peux pas vous dire.
Bonne journée et bon appétit.
[Edit: Lien reçu]
(si possible ne pas montrer le lien du site 🙂 )
j’ai un mis sur un de mes sites pour te le montrer, mais au final il sera pas celui là ce qui change pas grand chose au problème.
Merci d’avance
Yep, c’est noté.
Le background-image multiple est mal renseigné, les chemins ne sont pas les bons sur ta CSS je crois sur l’élément
.c_slider
.À noter : je bosse sur une nouvelle version, car les navigateurs semblent avoir corrigé le bug qui m’avait forcé à ajouter ce composant supplémentaire.
D’accord, je vais regarder ça alors 🙂
Merci
Okii.
Slt, j’aimerais faire un diapo avec au minimum 6 images. Cela fait deux heures que j’essais de modifier ton code pr intégrer Les image en plus mais je n’y arrive pas. Il m’affiche les quatre premières mais pas les autres. Saurais-tu comment faire ?
Merci d’avance.
Hello,
Oui je saurais, mais je ne peux pas me permettre de ré-expliquer plusieurs fois les mêmes choses.
Les informations qui peuvent t’être utiles sont dans les commentaires 🙂
Merci pour ta compréhension.
Bon week-end.
Très bon tuto.
A partir du moment ou tu utilises le javascript pour les animations states, autant l’utiliser aussi pour simplifier le code afin de ne pas avoir à changer les temps d’animation lorsqu’on change le nombre d’images.
Tu peux jouer sur 3 états : avant (la sortie de l’image) pendant (l’arrivée de la nouvelle) après (la préparation de la suivante) et null (objet non visible dans l’anim).
Plusieurs méthodes s’offrent alors.
L’une consiste à jouer avec l’ajout et la suppression de class (ex: .next, .prev, .cur …).
Une autre solution consiste à déplacer les éléments du dom avant que la transition css soit appliquée (le javascript peut récupérer automatiquement le delay de transition ou d’animation). Ainsi lorsque le css relance son anim il agit en fait sur un contenu qui a changé.
En se prenant encore un peu la tête on peut ainsi simplifier l’utilisation du plugin pour au final avoir juste quelques paramétrages concernant le temps ou le type d’anim dans le css (ex: <ul class= »fx-slide speed-1s » >…
Bonjour,
Merci pour ces conseils mais il n’y a aucune JavaScript dans cette expérimentation full CSS3.
Je vous laisse relire attentivement l’article 🙂
Bonne journée.
salut. Ce slider m’a beaucoup aidé . Merci beaucoup c’est exactement ce que je voulais .
Bravo pour ce super tuto !
Et merci beaucoup !
Une petite question par rapport aux préfixes.
Est-ce qu’il faut ajouter ces préfixes uniquement devant keyframes ?
Comme ceci ?
<
@keyframes timeliner {
0%, 25%, 50%, 75%, 100% { width: 0; }
20%, 45%, 70%, 90% { width: 500px; }
}
@-webkit-keyframes timeliner {
0%, 25%, 50%, 75%, 100% { width: 0; }
20%, 45%, 70%, 90% { width: 500px; }
}
@-moz-keyframes timeliner {
0%, 25%, 50%, 75%, 100% { width: 0; }
20%, 45%, 70%, 90% { width: 500px; }
}
>
Bonjour.
Oui c’est bien cela. Dans le doute il suffit de tester 🙂
Bon week-end.
Petit ajout, il faut aussi ajouter cela au niveau de l’animation
<
/* complétez le sélecteur : */
#slideshowrobe .sliderrobe {
/* … avec la propriété animation */
animation: sliderrobe 15s infinite;
-webkit-animation: slider 15s infinite;
-moz-animation: slider 15s infinite;
}
>
Et y a-t-il une astuce pour opéra ?
Encore merci et bon WK
Pour Opéra, c’est la même chose avec le préfixe -o- donc :
@-o-keyframes timeliner {
0%, 25%, 50%, 75%, 100% { width: 0; }
20%, 45%, 70%, 90% { width: 500px; }
}
puis :
-o-animation: slider 15s infinite;
J’ai pas encore eu le temps de le tester mais très bon tuto! Merci!
Hello. Opera supporte désormais le préfixe -webkit-
Bon week-end.
Merci beaucoup pour ce tuto… Je suis quelqu’un de machu, même si vous aviez bien précisé que ce slideshow avait ses limites et qu’il valait mieux utiliser du JS pour un diaporama, j’ai quand même voulu l’adapter pour 21 photos… ça n’a pas été simple (je débute), mais j’ai réussi!! Et mon dernier petit soucis (si ça peut aider quelqu’un qui se pose la question) était un décalage dans la partie automatique à partir de la 5ème image. Je me suis arraché les cheveux de la tête, j’ai lu quasi tous les comm’, je ne trouvais pas la solution. J’ai tout repris point par point: j’avais glissé 2 espaces dans le script html en faisant mes copiés-collés… ça n’avait l’air de rien, je n’avais même pas fait attention… mais ça a causé ce décalage… Problème résolu!! Et encore un grand merci pour ce tuto, j’en ai beaucoup appris!! (le slideshow n’est pas encore en ligne sur mon site)
Hello,
J’ai envie de te dire « bravo », alors bravo ! 🙂
C’est vrai que ce n’est pas évident, et il faut arriver à se dépatouiller avec les maths.
Bonne continuation et merci pour ton commentaire.
Merci à toi pour la réponse, et encore un grand merci pour ce tuto!! Mon papa (qui code en html4 et ne connait que peu le CSS), m’a carrément dit en voyant le résultat qu’il allait bientôt falloir que je lui donne des cours, j’étais très fière!
C’est vrai que le rendu est très esthétique.
Voici un lien vers un de mes deux diaporamas 🙂 http://souette.pagesperso-orange.fr/diapo2.html
« Bonus » au sens « petit plus » pas « bonux » (marque de lessive) 😉
Bonjour également.
Contrairement à vous qui n’assumez pas votre commentaire en renseignant des informations fictives, j’assume mon humour (apparemment pas compris par tous) en laissant cette orthographe qui apparaît sur d’autres articles. (tout comme d’autres fautes et jeux de mots)
Bon dimanche.
Bonsoir Geoffrey,
Je débute et j’aurais souhaité adapter ton slideshow qui me plait beaucoup.
pour mon site-test. Mais j’avoue que je ne m’en sort pas.
J’ai réussi à enlever les éléments que je ne souhaitais pas (commandes avant/arrière et lecture/pause) mais je n’arrive pas à trouver l’endroit pour adapter la taille des mes photos.
J’ai modifier tous les endroits où se trouvrait les dimensions de tes photos width: 640px;
height: 310px;
Mais cela n’est pas suffisant. J’ai l’impresssion qu’il y a un cache que je n’arrive pas à modifier.
Je souhaite que mes photos prennent toute la largeur de l’écran.(images:1024×500).
Tu connais peut-être des carrousels plus adapté à mon besoin.
Bonjour.
Tout d’abord je tiens à te remercier pour ton tuto qui m’a énormément aidé cependant j’ai toujours quelques pépins en ce qui concerne les flèches suivant et précédent et les boutons jouer et arrêter. Un pépin qui est surement du à ce que je sache à l’instruction #slideshow. Alors pour être bref ma question est la suivante. Ou doit on placer l’élément #slideshow dans le code html?
Bonjour,
Diaporama fantastique, un css base un était exactement ce que je cherchais. Toutefois, j’ai une question et c’est et je sais que ce sera paraître idiot, mais comment puis-je ajouter plus de 4 images. Je suis allé sur le code de l’. Css et le fichier html et changé ce que je pensais que ce serait, mais peu importe ce que je fais, il arrive à la quatrième image et renvoie à la première s’il vous plaît aider.
Cordialement
Andy
Bonjour Andy,
J’ai l’impression que tu serais plus à l’aise dans une autre langue, mais peut-être que je me trompe.
Lorsque tu ajoutes des images dans le code HTML, il faut également modifier la CSS en recalculant les étapes et durées des animations (keyframes et animation-duration).
Il s’agit de faire des divisions et multiplications en fonction du nombre d’images souhaité.
Bon courage !
Merci d’avoir accordé de l’importance à mon commentaire, franchement je lève mon chapeau !
Bonjour Simba,
Navré je n’avais pas vu ton commentaire.
Inutile de prendre la mouche et d’user de sarcasme, si tu veux une réponse rapide et efficace et sûre, je t’invite à passer sur mon site web professionnel, en effet j’accorde priorité à mes clients.
Sinon en analysant un minimum le code fourni, tu devrais trouvé la réponse tout seul. Puisque l’élément #slideshow se trouve dans le HTML…
Ensuite le bloc, tu le places où tu veux, ce sont les autres éléments de ciblage qui sont importants, mais du moment qu’ils sont pas loin de body en enfant directs, tu ne devrais pas avoir de problème pour cibler #slideshow depuis ces éléments.
Bonne journée.
You need to learn basics Responsive Web design 🙂
Responsive is not just a little function you add in your CSS code, it’s skills and technics used with knowledge in order to bring a piece of code more flexible.
You have to learn it, not ask to someone tell you how to do 😉
Thank you
Bonjour je viens de débuter mon premier site et en même temps mon expérience de codage étant très très débutant je tente désespérément d’adapter le diapo pour 12 images j’ai déja modifier quelques proportions par logique mais je ne comprends pas le code css du coup je me retrouve bloqué, le résultat n’est pas bon et personne dans mon entourage ne peut m’aider contrairement au génie du dessus qui a réussi a l’adapter a vingt et une images (je respecte grandement cette personne ^^).
As tu une adresse mail sur laquelle je puisse t’envoyer les lignes de code que j’ai tenté d’adapter pour que tu puisse m’aider ?
à très vite !
Bonjour,
Je laisse la personne concernée te répondre, personnellement je ne fais pas de support par e-mail 😉
Bon dimanche.
Bonsoir,
Merci BEAUCOUP pour ce tuto génial !
J’ai juste un petit problème !
Lorsque j’utilise les boutons next et previous le figcaption n’est plus la …
J’ai essayé plusieurs petits trucs en vain …
Serait-il possible d’avoir un petit coup de main ?
Bonsoir,
Ce comportement est normal et il n’y a pas de solution avec la technique proposée. Par contre une alternative est en cours de mon côté 😉
Un article sera publié.
Ok super !
Merci beaucoup !
Bonjour j’écris rarement mais j’estimais ton travail le mériter. So, merci beaucoup car il ma permis de saisir des utilisations de CSS3 et quantité d’information bien utile. (L’ensemble du site est une petite perle)
Je suis pas contre très déçu à la lecture de certain commentaires. En effet, la démarche de faire ce didacticiel et de répondre 2 ans après est vraiment impressionnante et mal récompensé, j’en suis navré pour toi et ton travail.
Bonne continuation.
Hello,
Merci beaucoup pour ton commentaire.
En effet je trouve qu’il n’y a rien de plus frustrant qu’un tutoriel ou un article sans possibilité de commenter (bien que je puisse comprendre certains auteurs qui les bloquent).
Quant à mes réponses, elles sont plus ou moins évasives car le but du tutoriel est d’apprendre.
Encore merci, ça fait plaisir à lire 😉
Est-ce-que quelqu’un pourrez me donner le code html complet pour réaliser un slideshow
et merci
Bonjour également !
D’après mon article, il semblerait que celui-ci permette de réaliser un slideshow… que veux-tu de plus ?
Il faut lire et comprendre ce que tu lis pour le mettre en place, tout est expliqué. Maintenant si un point n’est pas suffisamment précis, poses tes questions.
Si tu ne veux pas t’embêter à comprendre tu n’apprendras jamais rien de ta vie.
Bon week-end 😉
OK b1 ta réponse ne ma pas vraimment auder car mon but c’est de realiser ce slidshow au plus vite (maintenant j’ai pas le temp de lire et comprendre le tuto mais je le ferais ultérieurement c’est sure)
c’est pour ca que je veux un code html prêt dans le plus bref délai possible 🙂
Ma réponse et mon article ne t’aident pas ? Tu veux un code tout fait rapidement ?
J’ai une activité pro si tu veux : http://www.creativejuiz.com
Autrement tu devras te débrouiller ! (Et revoir tes formules de politesse)
Bonjour/Bonsoir,
j’ai particulièrement apprécié votre tutoriel ! Cependant je rencontre un problème: Je souhaiterais ajouter des images à ce diaporama, j’ai donc été sur ma feuille html et j’ai duppliqué le code html suivant :
Modération : code HTML mal échappé, il s’agit du code d’une slide.
J’ai aussi veillé à modifier les pourcentages comme cela:
mon total en seconde (pour l’animation est de 64s.
Suite à tout cela j’observe mon animation, tout est bien calé, les 4 premières images s’affichent, et les 4 suivantes PAF un fond blanc ! 🙁
Please HELP me …
en fat j’ai trouvé !!! 😮 après 6h de recherches, c’était seulement la taille (width) du slider qui était trop petite (300px alors que j’étais à 700px) .
Bonjour,
Bien joué pour l’ajout ! C’est que vous bien cerné le code.
Bonne continuation.
super site
Bonjour,
Merci pour vos explications ! J’ai pu me servir de ce code pour un projet à la fac.
J’ai une petite question : savez-vous comment rendre les images cliquables ? Je souhaiterai qu’au clic on puisse être redirigé vers un autre site.
J’ai essayé la méthode :
<a href="http://www.nomdusite.com" rel="nofollow"></a>
mais cela ne fonctionne pas.
Merci d’avance.
Hello,
Ce n’est pas possible en l’état.
Les liens sont bien présents en faisant ainsi, mais ne sont pas activables au clic car l’élément div.c_slider est placé devant (sur l’axe des Z).
Il va falloir modifier la CSS pour conditionner la position en Z de cette élément.
Bon courage !
Ok, merci !
Bonjour,
Tout d’abord, félicitations et merci, ce code est une pure merveille 😀 !
Ma question se tourne vers le bouton Pause/Play. J’ai copié votre code, je l’ai lu, compris (je pense) mais pour moi, il n’est pas fonctionnel.
Quand je clique sur le bouton, la pause ne s’effectue pas.
J’ai beau chercher je ne trouve pas de réponse.
Pourriez-vous m’aiguiller dans la correction de ce problème ?
Cordialement,
Adrien
Bonjour,
Hélas sans le code complet en démo en ligne je ne peux pas aider davantage.
Bon courage.
Bonjour,
Je suis en train de créer un diapo et j’ai deux trois soucis.
Mon diapo fonctionne sauf lorsque les images défiles vers la gauche, un écart se créer à gauche et s’incrémente au fur et à mesure que les images défiles.
Les images ont été recadré en 640*310 et le CSS est le même que celui présenté dans le tuto. Je ne comprend donc pas pourquoi j’ai cet écart qui se créer et cette photo blanche qui apparait en fin de diapo alors que je devrais avoir une photo.
Voici ce que ça donne http://www39.zippyshare.com/v/27506434/file.html
Merci de votre aide !!!
bonjour à tous!
à mon tour je tiens à féliciter geoffroy pour l’entièreté de son site, tu as été professeur dans une autre vie!
j’ai néanmoins le même problème que toi Montus et après avoir lu TOUS les commentaires et relu 50 fois mon code, je n’arrive pas à résoudre le problème. ma sixième et dernière image apparait blanche et à partir de la 3ème image s’effectue un léger décalage à gauche, qui s’agrandit au fil du slide show.
Quelqu’un aurait-il une piste?
merci!
cecile
Bonjour tous les deux 🙂
Merci pour vos commentaires, et navré Montus pour le délai de réponse, je n’avais pas vu ta question.
Avez-vous simplement respecté l’insertion du commentaire HTML entre chaque item de slide ? Le but est de supprimer le `white-space` que génère un espace ou un saut de ligne dans le code, tout en conservant l’indentation pour une meilleure lisibilité de celui-ci.
Si vous n’utilisez pas ce commentaire, un décalage de 3 à 5 pixels peut se faire entre chaque image ne laissant pas suffisamment de place pour la dernière qui passe alors sur une deuxième ligne (c’est pour cela qu’elle apparait comme blanche).
Bon courage 😉
Plus d’information sur le white-space.
Je suis tout simplement amoureuse de toi Geoffrey! merci bcp, tout slide parfaitement maintenant!
Un grand merci, non seulement il marche bien (sous firefox en tout cas) et est facile à personnalisé (3 images au lieu de 4) pour un grand débutant comme moi.
Bravo !!!
Bonjour,
Merci pour ton retour d’expérience 🙂
Bonjour ,premièrement je trouve le tutoriel bien expliqué je voulais te remercier pour ton effort parce qu’en premier vue j’étais hésitante en demandant cette question vu que la date de l’article est ancienne mais après la lecture des commentaires j’ai vu que tu réponds quand même… merci.
Ma question concerne le fait d’ajouter un fond qui sera modifiable pour chaque image et dont l’image sera transparente ? c’est comme un thème qui s’applique pour chaque image à part ??
est ce que vous en avez des idées !!
Bonjour,
J’ai réaliser votre slideshow pour mon portfolio, le soucis c’est que je me rend compte que celui-ci fonctionne seulement avec FF comment le rendre compatible à Chrome et p-e IE?!
Merci, bonne journée
Bonjour,
Ma démo fonctionne sur Chrome, du coup je vous invite à relire le tutoriel 🙂
Bon courage.
Bonjour! le tuto est très bien le slideshow fonctionne parfaitement en automatique mais ne fonctionne pas en mode manuelle je m’explique j’ai bien dans l’url #sl_i pause ou sl_i1…sl_i4 mais rien ne change sur la page
j’ai repositionné et diminué la taille du slideshow ainsi que les image dans le css mais je ne pense pas que cela puisse venir de la merci d’avoir pris le temps de lire ce commentaire cordialement Yann
Bonjour,
Cela vient probablement du positionnement des éléments
span
porteurs des différents ID que tu tentes de cibler.Également il faut vérifier les sélecteurs en fin de bloc CSS, les sélecteurs un peu louche avec des « ~ » dedans 🙂
Merci pour cette réponse rapide mon probleme est résolut en effet j’ai positionné les span trop bas et n’étais pas pris en compte
Bonjour,
le slideshow fonctionne très bien, merci beaucoup pour cette démo et les ocnseils associés. Je l’ai intégré là http://portapiccola.com/
Une petite question subsiste toutefois : j’ai fait en sorte que les images qui défilent automatiquement soient des liens cliquables, mais je n’arrive pas à le faire pour les images que l’on fait défiler manuellement. Est-il possible de mettre des liens dans le multiple background du c_slider?
Encore merci.
Bonjour,
De rien, merci pour ton lien 🙂
Hélas non le système proposé en background ne peut pas supporter en l’état des liens.
Par contre il faudrait que je revois une partie du code, car ce doublon de code en background n’est théoriquement plus nécessaire. Le bug rencontré dans les anciennes versions de navigateurs a été corrigé d’après mes derniers tests.
Bonsoir voila j’ai compris à peut prêt les détails j’ai même personnalisé sur une page de mon site mais je bloque sur un point si vous pouvez m’aider le systeme est très bien mon site est en construction je voudrais juste ajouté une image de plus mais je n’arrive pas à la faire apparaîre voici la page ou ce trouve le slideshow.
Le défilement automatique ne passe pas et les points sous les images sont décalé quand on clique dessus merci pour votre aide.
http://remisesagogo.fr/aix_en_provence.html
Merci pour avoir effacé ma question…
Cordialement
Bonsoir,
Je n’ai pas compris le sens de votre intervention…
Bonsoir, la question que j’ai posé au dessus de mon dernier commentaire n’apparaissait plus sur votre site je trouve ce tuto excellent mal grès que je sois débutant j’ai quand même réussi à faire quelque chose de pas trop mal maintenant je n’arrive pas à ajouté une image en plus dans le slideshow si vous pouvez m’aider j’ai du me tromper quelque part sur mon code de cette page http://remisesagogo.fr/aix_en_provence.html
Ne faites pas attention mon site est en construction.
Cordialement.
Bonjour voila j’ai réussi à faire le slideshow en automatique il n’y a aucun problème maintenant je bloque depuis hier sur le slideshow manuel je n’arrive pas à définir mon code pour qu’il me fasse apparaître ma dernière image pour je ne pense pas m’être trompé si quelqu’un peut m’aider? voici mon code je pense que j’ai du faire une fausse manip dans cette partie du css:
#slideshow .c_slider {
position: absolute;
left:0; top:0;
width: 501%;
height: 389px;
/* multiple background */
background: url(img/recherche1.jpg) 0 0 no-repeat,
url(img/recherche2.jpg) 900px 0 no-repeat,
url(img/recherche3.jpg) 1800px 0 no-repeat,
url(img/recherche4.jpg) 2700px 0 no-repeat;
url(img/recherche5.jpg) 3600px 0 no-repeat;
transition: background 1s;
}
/* on cache le slider */
.sl_i:target ~ #slideshow .slider { visibility: hidden }
/* on planque la 1ère pastille (cf. bonux suivant) */
.sl_i:target ~ #slideshow .dots_commands li:first-child a:after { display:none; }
/* pour afficher la 2ème pastille (cf. bonux suivant) */
.sl_i:target ~ #slideshow .dots_commands li:first-child a:before { display:block; }
/* lorsque on cible le premier slider */
/* on cache tous les « précédent » et « suivant » */
#sl_i1:target ~ #slideshow .commands { display: none; }
/* on affiche seulement deux flèches */
#sl_i1:target ~ #slideshow .commands1 { display: block; }
/* correspond au décalage des images */
#sl_i1:target ~ #slideshow .c_slider { background-position: 0 0, 900px 0, 1800px 0, 2700px 0, 3600 0; }
/* on place la pastille tout à gauche */
#sl_i1:target ~ #slideshow .dots_commands li:first-child a:before { left:0; }
/* même procédé lorsqu’on cible le second slide */
#sl_i2:target ~ #slideshow .commands { display: none; }
#sl_i2:target ~ #slideshow .commands2 { display: block; }
#sl_i2:target ~ #slideshow .c_slider { background-position: -900px 0, 0 0, 900px 0, 1800px 0; }
#sl_i2:target ~ #slideshow .dots_commands li:first-child a:before { left:18px; }
/* puis le 3ème */
#sl_i3:target ~ #slideshow .commands { display: none; }
#sl_i3:target ~ #slideshow .commands3 { display: block; }
#sl_i3:target ~ #slideshow .c_slider { background-position: -1800px 0, -900px 0, 0 0, 900px 0; }
#sl_i3:target ~ #slideshow .dots_commands li:first-child a:before { left:36px; }
/* et enfin le 4ème */
#sl_i4:target ~ #slideshow .commands { display: none; }
#sl_i4:target ~ #slideshow .commands4 { display: block; }
#sl_i4:target ~ #slideshow .c_slider { background-position: -2700px 0, -1800px 0, -900px 0, 0 0; }
#sl_i4:target ~ #slideshow .dots_commands li:first-child a:before { left:54px; }
#sl_i5:target ~ #slideshow .commands { display: none; }
#sl_i5:target ~ #slideshow .commands5 { display: block; }
#sl_i5:target ~ #slideshow .c_slider { background-position: -3600px 0, -2700px 0, -1800px 0, -900 0; }
#sl_i5:target ~ #slideshow .dots_commands li:first-child a:before { left:72px; }
personne pour me venir en aide?
Bonjour,
Tout d’abord merci pour ce bout de code (gros bout quand même 🙂 ), j’ai récupéré celui ci il y a quelques temps déjà et je suis confronté a un problème que je ne parviens pas a m’expliquer …
Lorsque j’ouvre ma page, le défilement des images se fait correctement. Cependant lorsque je cherche a cliquer sur un des boutons pour me déplacer sur une slide précise, la slide reste vide. Je n’ai rien changé au code actuellement. J’ai testé sous Chrome, Firefox et IE, même résultat.
Une idée de ce que pourrait être le problème?
Encore merci,
Julien.
Bonjour,
Merci beaucoup pour avoir partagé ce tutoriel, il est très efficace.
Cependant je ne suis pas un expert et j’ai un problème: je ne parviens à fixer la la largeur à 100% de l’écran
J’ai pourtant modifié/remplacé tout les largeurs fixes du CSS ainsi que les largeurs d’images à 100%
Une petit coup de pouce serait bienvenu !
Merci beaucoup
Bonjour,
Tu vas avoir énormément de mal à faire le réglage de largeurs pour les images en background puisqu’il faudrait utiliser la propriété
background-size
pour plus de flexibilité. Avec le multiple background je ne sais pas ce que ça donnerait.Si tu as une démo en ligne quelqu’un pourra t’aider, sinon tu risques de ne trouver aucun volontaire.
Bonne journée.
Je n’ai malheureusement pas de site en ligne dans la mesure ou c’est un projet perso.
Merci pour ta réponse
Alors je pense que tu ne trouveras pas d’aide ici 🙂
Bon courage pour la suite.
Bonjour,
Merci d’avoir publié ce tuto, hélas je suis bloqué à partir de la partie » Animation du conteneur » plus rien ne marche j’ai préfixer à l’aide du premier programme de cette partie mais il n’y a pas d’évolution. Donc j’ai voulu continuer le tuto et malheureusement rien ne marche, les boutons ne s’affichent pas , pas d’animations , rien …
Deplus, je ne comprend pas ce que vous entendez par compléter le selecteur avec la propriété animation:
/* complétez le sélecteur : */
#slideshow .slider {
/* … avec la propriété animation */
animation: slider 32s infinite;
}
Est ce que vous avez une idée de mon problème?
Bonne journée
Bonjour,
Comme précisé au-dessus de ce formulaire de commentaire : sans proposer de démonstration accessible en ligne il va être difficile de vous aider 🙂
Bonne journée.
Le problème c’est que mon site est en cours de développement et se fais en local. Je comprend que vous aurez du mal à m’éclairer mais pouvez-vous m’expliquer sur le bout de code et j’ai envoyer ci-dessus svp ?
Enfait j’ai plus ou moins trouvé la solution mais il reste un détail pour que ce soit niquel.
Pouvez-vous me montrer le code qui sert à ce que les » paginations » nous emmènes à l’image souhaité ? ( Par exemple si je clique sur le 3ème , il me montrera la 3ème image)
Parce que lorsque je clique sur les paginations il ne se passe rien, l’url change mais rien ne se passe.
salut,
merci pour ce tuto et bravo,
cependant je me confronte a un problème ce spider de fonctionne pas sur safari
je ne comprend pas pourquoi
merci pour ta future réponse
Bonjour, super tuto, et super boulot ! Merci !
Cependant, j’ai un soucis.
Il s’agit des puces et des boutons et Play/Pause..
Tout est OK, mais j’ai un soucis comme la :
http://nsa34.casimages.com/img/2014/06/25/140625021202192627.png
Je ne sais pas où le CSS coince, ou si j’ai fais une connerie 🙁 Mais je ne la vois pas en tout cas :'(
Merci d’avance ! 🙂
Bonjour,
Sans avoir d’accès à votre code, je ne peux pas vous aider. Bonne journée.
bonjour
j’ai decouvert hier ce code et Wouahhhhhh surperbe effet
simple a mettre en place et a modifier
par contre je bloque sur un truc , je voudrais rendre les images cliquable pour renvoyer vers une parti du site ou ailleur
mais les balise marche pas 🙁
cdt Pascal
Bonjour Pascal,
Je pense que vous n’avez pas lu les messages de cette page, ni les commentaires, ni les avertissements avant le formulaire de commentaire, ni le message après avoir posté votre commentaire.
Du coup je vous invite simplement à lire, cela devrait pouvoir vous aider 🙂
Bon dimanche.
Bonjour Geoffroy
je viens de refaire les message un par un 🙁
j’ai trouvé le poste 148 ou vous dites :
****
Hello,
Ce n’est pas possible en l’état.
Les liens sont bien présents en faisant ainsi, mais ne sont pas activables au clic car l’élément div.c_slider est placé devant (sur l’axe des Z).
Il va falloir modifier la CSS pour conditionner la position en Z de cette élément.
Bon courage !
****
c’est la seule que j’ai trouvé mais etant completement novice avec ce type de code , je suis « largé » j’ai pourtant reussi a le modifier en taille etc pour l’adapter a ma page web , mais la ………………………….
***
Je pense que vous n’avez pas lu les messages de cette page, ni les commentaires, ni les avertissements avant le formulaire de commentaire, ni le message après avoir posté votre commentaire.
***
avertissements ? j’ai jsute vu les 2 cadres au dessus et apres post j’ai recu un mail et apres ?
votre reponse me met dans le flou le plus total
cdt Pascal
Bonjour, je toruve ce slideshow vraiment cool, mais voilà : à partir de « Animer notre contenu : phase automatique » je ne comprends pas et je n’y arrive pas.
Vouc pouvez voir que sur mon site le diaporama s’affiche correctement (même s’il n’y a pas encore de défilement d’image et du texte) : http://mc-share.net/
Après le titre « Animer notre contenu : phase automatique » il faut préfixer « @keyframes » mais je comprends absolument rien.
Que faut-il faire exactement ?
Merci de votre aide et bonne journée 🙂
Bonjour
je viens de découvrir ce slideshow super bien et en plus en css c’est encore mieux. Est il possible de l’intégrer dans un CMS comme Joomla?
Merci
Bonjour,
Je débute dans la construction de mon site et dans le css.
J’ai réussi à reproduire et modifier rapidement le code pour avoir ce que je veux. J’ai cependant un problème qui n’existe pas sur ta version démo :
Lorsque je click sur le boutons ‘play’ ou ‘pause’ la page scroll automatiquement pour optimiser la lecture du slider.
Pourrais tu m’indiquer ou modifier mon css pour corriger cela ?
Merci encore pour ce tuto bien construit !
@+
MS2S
Bonjour,
Je débute dans le HTML et même si tu le déconseille au débutants je trouve ton tuto très clair. Donc tout d’abord : merci c’est tres réussi ! 🙂
Cependant je rencontre un problème lorsque j’essaie d’animer les images.
Pour le @keyframes j’ai ca :
et puis:
Je pense que le problème réside ici.
Merci d’avance pour l’aide ! 🙂
(J’utilise le logiciel BlueGriffon)
Bonjour,
Je ne vois aucune erreur dans le code que tu me présentes.
BlueGriffon ne devrait pas poser de problème, c’est un bon outil, à ma connaissance.
Oui ! Je n’avais pas ouvert sur mon navigateur. Ca marche bien. ^^
Cependant je rencontre un problème avec les points de paginations. Ils sont bien en dessous mais en verticale et non en horizontale.
http://codepen.io/anon/pen/GiFce
Hello,
Je pense qu’il te manque simplement une partie du code. Tu peux relire ce passage dans le tutoriel, cela devrait t’aider 🙂
Bon courage.
Merci, mais j’ai laisse tomber les points haha j’y reviendrai peut être une autre fois.
Je rencontre un problème avec mes images qui défilent et qui se décalent un peu a chaque fois, un bout de l’image précédente apparait donc, peut être 10px, pas grand chose mais ca se remarque ^^. Et la dernière image ne s’affiche pas (blanc).
Salut,
Au passage, super tuto.
Cependant, il y a quelque chose que je ne comprend pas.
Lorsque je clique sur une fleche ou un dot, la page descend au niveau du slideshow (obliger de slider avec la souris pour remonter afin d’avoir mes menus en haut)
As-tu une idée de la provenance de ce problème?
@+
Hello,
Merci 🙂
Je pense que la réponse de trouve quelque part dans le tutoriel, mais c’est vrai qu’il est long.
Tu dois certainement avoir les éléments span porteurs des attribut `id` encore « visibles » sur la page. Il faut leur appliquer un `display: none`.
Bon courage 🙂
Merci de ta réponse rapide.
Je viens de vérifier et tout les span possédant un id : sl_i(1-2-3-4) dispose bien d’un display:none comme ceci :
#sl_i1:target ~ #slideshow .commands { display: none; }
Pour infos je n’ai pas mis les boutons play/pause..
Par ailleurs j’ai jeté un œil à l’article de vincent sur les problèmes de scrolls, je n’arrive pas à saisir ce qu’il dit x).
Hello,
Peux-tu essayer avec simplement :
.sl_command {display: none;}
Merci 🙂
Je viens de tester et en effet ça marche du tonnerre.
Du coup j’ai compris : le display:none était bien mis sur les div des span mais pas sur la class des span.
Merci beaucoup 🙂
Ps : Contrairement à ce que tu pu dire dans certains commentaires, je trouve que ton tuto « experimentale » est très adaptable :).
Encore merci.
Bonjour, j’ai un petit problème pour les ancres, quand je clique sur l’ancre suivante ou sur les dots mon slider devient blanc. Ce n’est qu’en appuyant sur play ou pause que les images reviennent.
On dirait que j’ai un soucis avec les href= » #sl_i1″ etc
Pourriez vous m’éclairer? qq’un a-t-il déjà eu un problème avec cela?
Merci beaucoup!!
Bonjour,
Comme précisé au-dessus du formulaire que vous avez rempli, il est difficile de proposer un support sans avoir une petite idée de votre code. Du coup non, je ne pense pas être en mesure de vous aider 😉
Bonne journée.
Bonjour merci de partager ton savoir qui est bien plus qu’intéressant .. Loin d’être un expert, j’ai tourné {probablement pas suffisamment} le problème dans tous les sens mais rien n’y fait.
Dès que je click sur un des boutons afin de zapper d’image je tombe sur » Index de file:///Volumes/Sans titre/Users/toulouse/Desktop/TouChoko 2/6#sl_i1″ … j’ai du mal à saisir … MERCI par avance 🙂
Bonjour,
Je ne comprends pas le souci :/
Qu’as-tu renseigné dans ton code HTML, notamment la partie concernant les ancres ?
Bonne soirée.
Re-Bonjour à toi ! Merci d’avoir pris le temps de me répondre .. j’ai finalement trouvé le soucis … : …. Merci encore, aux aguets concernant tes articles forts intéressants !!!! Hasta luego 🙂
Le soucis était un « base href » …
Merci beaucoup pour ton article il m’a beaucoup aidé, je débute et ça fait 2 jours que je cherche à faire un slide show.
Merci !
Bonjour/Bonsoir,
Je viens vers toi puiser dans ton savoir souhaitant ton aide… Désireux d’avoir l’image fixe à la connexion du site et qui s’enchaînent naturellement par la suite tous les réglages n’y font rien, ma patience s’est éteinte, que faire s’il-te-plaît, une idée de piste … ? Un grand merci par avance : http://touchoco.webege.com
Histoire réglée Mais merci quand même !! Hasta Luego !!!
j’aimerais me servir de votre code ci dessus pour creer une diapo automatique controlable au clic mais avec plus de photos. comment adapter votre code surtout au niveau des keyframes. merci
Je vous remercie pour tous vos conseils, j’ai bien suivi toutes les étapes de slideshow et je suis très heureuse envers mon premier site mais maintenant je veux mettre le slideshow à la gauche avec une image fixe à droite merci si vous pouvez me répondre.
Bonjour,
Hélas sans extrait de votre code (à fournir sur CodePen.io) ou un lien vers une ressource en ligne, je ne peux pas vous aider.
Bon week-end.
Bonjour,
merci beaucoup pour ce post, c’est exactement ce que je cherchais après plusieurs minutes de recherches.
Cependant j’aurais juste voulu un petit changement, mais je ne sait pas trop comment faire, et ne voulant pas modifier sans savoir, j’aurais voulu une petit aide.
Est-il possible qu’une fois arrivé à la fin, on puis continuer la boucle, sans voir toute les images défilées jusqu’à revenir à la première? Comme si c’était une continuité?
Merci d’avance
Joyce
Hello,
En théorie non, car c’est JS qui donne cet effet d’habitude, en empilant les éléments grâce à une manipulation du DOM.
Cela serait faisable avec une méthode en CSS très capillotractée, donc complexe à mettre en place et à expliquer. Du coup il vaut mieux ne pas se lancer dans cette tâche difficile 😉
Bonne continuation.
Bonjour,
l’ensemble du code fonctionne relativement bien, cependant mes images n’apparaissent pas.
À quoi cela pourrait-il être dû ?
Merci
Bonjour,
Avez-vous vérifier le chemin vers vos images ? Peut-être y a-t-il simplement une petite erreur dans celui-ci.
Bonnes fêtes !
Bonjour,
Je viens de tombé sur votre article et je vous en remercie. Je cherchais un code pour du html5 et css3 qui ne soit pas jquery java script.
Merci beaucoup pour le partage 🙂
A+
Tu es un maître.
Merci
j’aimerais savoir ce que signifie:(.dots_commands)?
Hello Bathazare,
Il s’agit du sélecteur représentant les petits points sous le slideshow. Ce sélecteur cible précisément la liste (
ul
) contenant les différents points.Bon courage 😉
Salut j’ai été ravis de votre réponse,
Je suis autodidacte vivant au Cameroun et j’aimerais savoir comment pour avoir une bonne maitrise de CSS3 car elle m’intéresse tellement et je veut être aussi Web designer comme vous.SVP un bon conseil et orientation me fera beaucoup plaisir.
Bonjour,
Voila je suis responsable d’un forum et j’aurais souhaité utiliser votre Slideshow sur le forum seulement je rencontre un petit probleme avec le code les boutons – et + ainsi que les 4 icônes du bas ne fonctionne pas des que je clique dessus, l’image ne s’affiche plus :
Pouvez-vous m’aider ???
Cdlt et merci pour votre travail.
Bonjour,
Hélas je ne peux pas proposer de support à chaque demande que je reçois. Il me faut au moins une idée de ce que tu as tenté de faire, un exemple de code. Hélas avec les forums de ce type c’est plutôt délicat à fournir.
Il faut bien faire attention à tout placer aux bons endroits et à comprendre le lien entre les éléments. (éléments frères, fils, etc.)
Bon courage !
Bonjour je te remercie pour ton tuto qui est super bien expliqué. Je l ai refait du debut jusqu a la fin, tout fonctionnait alors j ai decidé de l’inserer dans mon code pour un site que je suis en train de faire pour un client qui voulait un diaporama. La, j ai repris tout le css que j avais fait et quand je l ai remis dans mon code le diaporama automatique ne fonctionne plus. Ca fait des jours que je suis dessus a regarder chaque morceau de code mais toujours rien, j aurais besoin d’aide svp merci bcp
Bonjour,
Vous avez dû lire le petit message au-dessous du formulaire de commentaire qui indique qu’une démo en ligne est nécessaire pour avoir une chance de peut-être obtenir de l’aide ?
Hélas je n’ai pas encore développé de don de voyance :p
Merci
Salut Geoffrey Crofte. Merci pour ton tuto qui m’est très utile pour la création de mon site.
Cependant, je rencontre un souci au niveau des paginations. En effet, la pastille permettant de suivre les images n’est visible que sur la première image, à partir de la seconde celle-ci se retrouve derrière et donc invisible.
As tu une idée sur mon problème ou as tu besoin de mon code ? Dans ce cas as tu une adresse par laquelle je pourrais te le transmettre ?
Merci et à bientôt.
Bjr j’ai suivi la première partie de votre tuto, mais il fonctionne seulement pour 3 photos alors que je souhaiterai faire apparaître 4 photos ou plus ce dessous mon code couplé à votre feuille css:
USA/F-22: 5ème génération,Le futur c’est aujourd’hui.
Russie/Su37: Vous avez dit manoeuvrabilité?
USA/F-35: Le petit nouveau.
France/Rafale:La réponse française.
Merci pour votre peine.
Bonjour,
Super tuto, cela fonctionne très bien.
Je me demandais seulement s’il est possible de rendre les images cliquables (c’est a dire de leur attibuer à chacune un lien pour aller vers d’autres pages de mon site)
J’ai essayé de modifier les ainsi:
Nos Champagnes
Mais cela ne fonctionne pas (le slideshow fonctionne toujours mais le clic ne donne rien…)
Auriez vous une idée sur la question ?
Bonjour Max,
J’imagine que vous n’avez pas pris le temps de lire les autres commentaires, comme vous n’avez certainement pas pris le temps de lire les messages au-dessus du formulaire de commentaire.
Du coup je vais avoir du mal à vous répondre.
Bon début de semaine et bon courage.
Merci d’avoir répondu en tout cas… mon site étant au début de son élaboration, je n’ai pas de démo en ligne. 🙁
J’ai cependant oublié d’echappé les chevrons en effet et comme je ne peux pas modifier mon commentaire a postériori, voila ce que j’ai modifié dans votre code pour avoir des images « cliquables » le reste du code étant parfaitement identique a part les liens des images :
Bonjour,
Je viens de suivre ton tutoriel, mis à part pour la partie contrôlable, car je n’en ai pas besoin pour l’instant, cependant le slider ne fait tourner que 4 slides, comment faire pour en faire tourner plus dois-je changer la largeur du slide ou autre chose ?
oui c bon ! Merci pour le tuto
ça marche tres bien sur explorer mais sur google chrome, les images ne defilent pas du tout.
Hello,
Le Slideshow CSS3 fonctionne très bien sur Chrome, même après ces 3 années de service :p
Merci pour ce travail mais j’ai un petit probleme est ce que nous pouvons ajouté le texte lorsque nous cliquons sur le lien suivant/précédent Merci d’avance
Slm
Malgré que je suis un débutant en php j’ai compris votre travail car il est très clair mais j’ai un petit problème je veux lorsque je clique sur le lien de précédent et suivant le texte est s’affiche avec l’image
Merci d’avance
Hello,
Merci pour tes deux commentaires, cependant il va falloir être plus précis car je n’ai pas saisi ta demande.
Merci pour ton réponse
j’aimerie bien lorsque je clique sur les liens de suivant -> et précédent<- les légendes :"Let's cross that bridge when we come to it, …" est affichée avec l'image car je n'arrive pas résolue
merci d'avance
Bonjour,
As-tu bien lu l’article en entier ?
L’information se trouve dans ce passage :
http://www.creativejuiz.fr/blog/tutoriels/css3-creer-slideshow-automatique-controlable-transition#bonux-prev-next
Bonne lecture.
j’ai lus cet partie plusieurs fois je trouve cet phrase » changer les valeurs de left pour le slider, de width pour la timeline, et de bottom pour la légende. » et je n’arrive pas a appliqué.
D’accord donc tu as tout lu, sauf cette phrase ?
Merci 😉
merci bcp pour ces information .ils m’aident dans mon projet bigg kiss
Salut… J’ai bien suivi et utilisé vos recommandations pour les @keyframes mais ça marche pas avec Chrome et Opera
J’avais le même problème a tu rajouté le webkit devant chaque anim’ ?
Bonjour,
J’ai vu que vous avez déjà répondu à cette question mais votre réponse m’est très vague.
Je voulais ajouter des photos mais vous avez dit que ce slideshow était prévu pour 4 photos. Ce serait possible que vous m’expliquiez comment modifier le code pour plus de photos?
Merci.
Bonjour.
Tout comme « divine », je voulais savoir s’il vous étais possible d’apporter des explications concernant la modification du code pour ajouter plus de photos au slideshow.
Merci d’avance.
Bonjour,
La compréhension du code est primordiale. Les animations sont calculées en fonction du nombre d’image, ainsi que les dimensions du conteneur et le décalage en pixel des fonds lors des commandes manuelles sur le slideshow (les jeux de
:target
).Comprendre ce code et chercher par vous même vous amènera à un plus haut niveau 🙂
Tres bon tuto!
Bonjour,
Je suis stagiaire dans une boite d’informatique (« Lateos » -Paris 2ème).
Mon boss m’a chargé de créer le nouveau site-web de l’entreprise, mais je bloque beaucoup sur le slider : je n’arrive pas à mettre chacune de mes 17 images (OUI, Y EN A 17! et ce sont les mêmes) dans mon contenair. Pourtant, j’ai lu le tutoriel, j’essaye de faire étape par étape, mais je coince quand-même.
Je vous donne mon code HTML5/CSS3.
Modération : code illisible.
Bonjour,
Merci pour votre commentaire.
Il est conseillé de lire la totalité de l’article, les commentaires ainsi que les indications au-dessus du formulaire de commentaire afin d’avoir des chances d’obtenir de l’aide.
Pour les personnalisations de code, je ne fais pas de support car je reçois constamment les mêmes demandes : « comment faire pour ajouter des images ».
Ma seule réponse : comprenez l’article qui est proposé ici (sans même parler du code).
C’est de la recherche et non un script tout fait utilisable en production. Si vous souhaitez le personnaliser il va falloir également chercher à votre tour, ou passer à du JavaScript pour faciliter l’ajout d’item.
Je n’ai hélas pas de temps pour répondre à toutes les demandes.
Merci pour votre compréhension,
Bonne journée et bon courage.
Bonjour Geoffrey,
Je vous remercie beaucoup pour ce tuto très clair. J’ai réussi l’intégrer dans mon projet web (chui toute fière ^^). Il me dépanne beaucoup mais il me faudra tout de même apprendre le sujet des Keyframes car je n’ai pas vraiment compris et ai recopié « bêtement ».
Une chose, vous proposez deux versions : l’une à télécharger, l’autre présentée dans l’article. Le code des deux versions diffère un chouya ; lequel est le plus mis à jour ? lequel dois-je prendre en compte ?
Merci beaucoup !
Marie
Bonjour Marie,
C’est en forgeant que l’on devient forgeron 🙂
Je dois t’avouer que je ne sais plus quelle version est la plus à jour. Celle de la page officielle je crois.
La démo du tutoriel était vraiment là pour suivre mes propres étapes une par une pour voir si le tutoriel était bien complet, et je crois que je n’ai pas retouché au code depuis.
Bon courage pour la suite 🙂
Ma foi, j’ai commencé avec la version téléchargée, puis j’ai pointé avec le tutoriel ; j’ai porté deux ou trois modifications (rien de transcendant) et j’ai un truc génial ^^ Merci.
Ton nom et ton site sont précisés « en commentaire » sur ma feuille css au niveau de ton code et sur la partie html.
…ou alors je mets une condition : si le code fonctionne un message de glorification de Marie s’affiche et si cela dysfonctionne… c’est la faute à ce débutant de Geoffrey !! >:D
Non je plaisante 😀
Excellente continuation 😉
Excellent le slider! Je galère un peu sur la fin avec les boutons, mais il est vraiment top! Par contre, marche t-il sur Safari? Je n’en ai pas l’impression …
Super tuto, mais j’aimerais pouvoir faire défiler des images automatiquement sans qu’on ne clique sur le bouton play. Merci d’avance pour éventuelle aide.
Hello,
Dans ce cas je t’invite à relire entièrement le tutoriel, car c’est déjà le cas 😉
Bon courage.
Bonjour, super article! chapeau à vous! j’aimerais solliciter aide sur la pagination. En effet j’ai exploité typiquement le même code de votre article mais les pointillées de la pagination n’apparaissent pas en même temps et aussi le nom des différentes images apparaît. Donc j’aimerais que les pointillées apparaissent en même au nombre des images et empêcher que le nom des images apparaît.
Salut ! Très bon tuto ! Mais c’est dommage, tu n’as pas mis de responsive dessus.. J’essaye de voir ça tout seul, c’est pas très compliqué après tout ! Bonne continuation !
Hello,
Effectivement ce n’est pas très compliqué à ajouter.
Le but de mes tutoriels c’est souvent de voir une chose bien précise et d’éviter de tout mélanger, ça serait bien trop complexe en une fois.
Hésites pas à poster ton résultat pour les curieux. (il y a des abonnés aux commentaires)
Bonne continuation à toi !
Dac’ merci ! Je n’ai pas encore commencé lol ^^ je posterai ça si j’ai le temps déjà de le faire puis de le poster 🙂
super ton travail.
moi j’ai pas bien compris ce qu’il faut faire quand on veux utiliser plus de 4 images sinon une dizaine.
on duplique quoi.
merci!!
Bonjour comment faire pour changer l animation pour rajouter des images .J ai reussi a changer le phase manuelle mais ne comprend pas comment changer la phase automatique.
Merci beaucoup pour vos reponses.
Hello,
La phase automatique se trouve dans la mise en place d’un background-image multiple.
Tous les bouts de code concernant la modification de la position des background sert donc à cela.
Bon courage.
Hi, what to do when you want a bigger box (bigger images), doesn’t work.
Hi 🙂
You have to edit width and height properties you will find in the CSS code, and also in initial HTML code (attributes with the same names).
Then, multiple backgrounds need new values for background-position properties depending on your image sizes.
Good luck
Bonjour je travail sur un slideshow et je suis parti de ton travail.
J’ai réussi à adapter le format des images, le nombre j’en ai ajouté une et une bonne partie de l’animation qui ma fois me semble ressembler de plus en plus a ton modèle.
J’ai toutefois un souci avec @keyframes timeliner
Je te mettrais bien le code mais je ne sais utilisé aucun des deux lien que tu propose. Comment puis je le transmettre autrement ?
Et le plus important MERCI, c’est vrai que c’est pas facile à comprendre mais pas impossible et si tu prends le temps de comprendre et pas seulement de l’appliquer bêtement, les motifs restent possibles.
Hello,
PasteBin est l’un des plus simples à utiliser. Pas besoin de compte. Tu copies ton code, enregistres et copies l’URL pour la partager.
Par contre je n’ai pas beaucoup de temps en ce moment pour de l’analyse de code ^^
Bon courage !
Merci de la réponse mais je n’aurais pas besoin que tu perde ton temps à analyser du code, j’ai fini par trouver mon erreur.
Quand ça vaudra le coup d’oeil, je t’enverrais le lien.
Génial merci pour le tuto ça m’a bien aider peace
Salut, merci pour ce super tuto et pour tout les commentaires ci-dessus qui m’ont aider à trouver mon erreur et à la corriger.
Vraiment, je ne peux que te dire merci, ça marche comme sur 4 roulettes, je suis plus qu’heureux, j avais vraiment besoin d’un truc de ce genre pour mon site, vraiment, hum, merci, merci et merci encore pour tout ce que tu fais et tu continueras de faire pour les programmeurs.
Merci pour ton tuto très clair !
J’ai tout de même une limitation, lors du décalage de la seconde image, elle ne vient pas sa caser exactement à la même place que la première (on voit un décalage sur la gauche de l’image par rapport à la timeline que fonctionne bien), puis de même pour la troisième (ou le décalage est donc plus grand), puis la dernière ne s’affiche même pas, le slideshow reste « blanc » avec le bout de la troisième image a gauche comme si elle ne s’était pas assez décalé.
As tu une idée ? Je ne sais pas vraiment quoi te montrer mon site n’étant pas encore en ligne…
Merci d’avance 🙂
Hello,
Oui une idée, il s’agit d’un souci de white-space.
Je te laisse lire la section problème de white-space.
Bonne lecture 🙂
Merci Geoffrey !
Pour l’astuce white space, cela a permis de faire apparaitre la quatrième image !
Par contre toujours un décalage, il reste un résidu de l’image précédente à gauche,
Pourtant comme dans ton exemple les images fonts 640px de large et le « slide » est de 640 aussi …
Merci encore pour ta réactivité de réponse 🙂
Laurent
Bonjour,
malgré l’ancienneté de l’article, je préviens tout de même, la page de démonstration ne fonctionne plus.
Au plaisir
Hello,
Merci pour l’info, c’est corrigé. Petite erreur de connexion à la base de données 🙂
Bonne journée.
Bonjour,
impossible de télécharger le Zip.
Cordialement.
Hello,
ça devrait être mieux maintenant ^^
Bonne utilisation.
Bonjour,
Je vous remercie pour ce tutoriel. C’est dingue ce qu’on peut faire avec le CSS, à présent.
J’aimerais vous poser une question par rapport à un petit souci que j’ai : mes images défilent mais on dirait qu’à chaque fois, il y a un « bout » de l’image précédente qui dépasse à gauche de la nouvelle image. Pourtant, tous les conteneurs et éléments sont de même largeur. A moins que ce ne soit un souci avec la transition… ? Est-ce que vous auriez une petite idée de ce que ça pourrait être ?
Je m’excuse pour le dérangement et vous remercie.
C’est la taille des images qui est trop grande rien a voir avec l animatio
Bonjour,
j’aimerais mettre les flèches sur le slider, comment faut-il faire svp ?
Bonne journée.
Bonjour,
Merci pour le tuto seulement j’ai rencontrer un petit probléme.
C’est que lorsque je clique sur les flèches plus rien ne s’affiche et pareil pour la pagination.
Merci de m’aider
Bonjour,
Merci de lire les informations au-dessus du formulaire de commentaire, autrement je ne peux pas vous aider. (Du coup il est possible d’en déduire que vous n’ayez pas bien lu ce tutoriel…)
Bonnes fêtes.
Merci beaucoup 🙂
Bonjour à tous,
après plusieurs recherches et essaient, j’ai trouvé la solution pour ajouter plus de 4 images dans ce « slidershow ».
Pour cela, il faut tout d’abord modifier le code HTML, en ajoutant une 5ème image.
Ensuite, dans le code CSS, les parties que j’ai modifiées sont:
– @keyframes slider
(ici, j’ai modifié les pourcentages afin de faire en sorte que la transition accepte une image de plus)
@-webkit-keyframes slider {
0%, 5%, 100% { left: 0 }
10%, 30% { left: -100% }
35%, 50% { left: -200% }
55%, 70% { left: -300% }
75%, 95% { left: -400% }
}
– #slideshow .slider {
animation: slider « le temps définit » infinite;
}
(ici, j’ai modifié le temps en seconde du slide entier) n’hésiter pas à faire plusieurs essais afin de trouver le bon temps en synchronisation avec les « figcaptions »
– #slideshow .slider {
position: absolute;
left:0; top:0;
width: 500%;
height: 310px;
}
(ici, c’est le « width » que j’ai augmenté car le conteneur des slides en largeur fait 100% x le nombre de slides donc dans ce cas 5 slides, 500%).
Voilà, donc pour ma part en tant que débutante c’est la seule solution que j’ai trouvé si quelqu’un connaît une meilleure manière de faire qu’il n’hésite pas à partager! 🙂
Bonne soirée à tous.
est-ce que l’indentation des page, peut avoir une incidence sur la page html?
j’ai écrit :
The mirror of soul
Let’s cross that bridge when we come to it
Sushi (do) time
Waking Life
N.B.(je ne sait pas si ça sera affiché comme sur Notepad ++: les liens des images sont tous placé après la balise <img!)
et que teste la page en passant par Wamp il y a un décalage de quelques 10aines de pixels a gauche à partir de la photo n°3, alors qu'en prenant exactement le code (sans toucher l'indentation, juste en remplaçant le lien des photos, il n'y a pas de décalages!!
je veut un code propre, au carré!!
…(question bonus!)… il y a t'il un risque en fessant pareil avec CSS, exemple :
#slideshow .container /*cadre du diaporama */
{
position:relative;
width: 640px;
height: 310px;
overflow: hidden;
}
/* on prévoit un petit espace gris pour la timeline */
#slideshow .container:after /* espace pour la barre de temps */
{
position:absolute;
bottom: 0; left:0;
content: " ";
width: 100%;
height: 2px;
background: #999;
}
Bonjour;
Je voulais juste savoir » Comment ajouter d’autre photo et le déclarer dans le css » .
c’est par ce que , qu ‘on j’essaie d’ajouter d’autre ses derniers sa marche plus. à la place de mettre 4 je veux 8 ou bien 10.
comment ça marche cette méthode d’ajout des photos .
Hello.
Toutes les réponses sont dans les commentaires 🙂
Bon courage.
Bonjour;
J’ai oublier de dire: ‘ bravo pour la réalisation de ce tutoriel ‘
Vraiment j’ai bien aimer.
mais actuellement j’arrive pas à résoudre mon problème.
Je crois que ma question est clair:
Je voulais juste ajouter d’autre photo, mais au niveau de CSS j’arrive pas à le faire .
Veuillez silvouplais m’expliquer en conclusion les étapes nécessaire.
Modération : code HTML non échappé.
Merci.
Cependant mon message me semblait clair aussi. Votre réponse se trouve dans les commentaires, je vous invite à chercher.
Bon week-end.
Bonjour
Tout d’abord bravo pour le tuto et la demo ils sont très bien indicatifs et expliqués! Mais je rencontre deux soucis sur mon slideshow; le premier est que mes images ainsi que ma légende prennent 4 diapositives chacune, c’est-à-dire que j’ai ma premiere image en diapo 1, un bout de legende en diapo 2, l’autre bout en 3ème diapositive et rien en 4ème. De plus, chaque image occupe un slide show indépendants (1 image= 1 slideshow) et que toutes mes images donc tous mes slideshows sont complètement superposés, avec la premiere image masquant tout le reste. Pourriez-vous m’aider à résoudre ces problèmes? Merci d’avance et bonne soirée! 🙂
bonjour et merci pour ces exemple que vous envoyez.
Bonjour,
Merci Beaucoup pour se super tuto.
S’il vous plaît est-il possible d’ajouter un lien sur une image de la diapo?
Si oui comment procéder s’il vous plait.
Merci d’avance
Cordialement
Bonjour,
Tu peux, il suffit de lire les commentaires qui en parlent à la suite de cet article. Ils sont là pour cela 🙂
Bonne lecture.
Bonjour,
j’ai lu les commentaires qui en parlent, mais de ces commentaires il ressort que ce n’est pas possible.
Si ça peut aider quelqu’un, j’ai mis des liens sur des images ça fonctionne seulement lorsque j’enlever les boutons « next » et « prev ».
Si vous avez une idée pour faire fonctionner les liens en gardant ces boutons, je vous serai très reconnaissant.
Cordialement
lorsque l on utilise les boutons next et previous les images chargées sont en background donc c est impossible d en faire des liens…
J’ai des problèmes avec le tuto mes images ne veulent pas rentrer dans le cadre j’ai suivi tout le cours et vérifier 2 fois si j’avais pas faits d’erreurs
Vraiment merci beaucoup pour vos aides c’est parfait ! ^_^
Bonjour,
Premièrement Merci pour ce super tuto,
*
Sinon j’ai adapté le slideshow pour l’obtenir de la facon suivante: une image et un texte cote a cote par slide (utilisation d’une div et non de textaera), j’ai garder que l’animation par pastille, (ca marchait trés bien en gardant l’animation avec la timeline) et pour finir j’ai 5 slides a la place de 4. Je pensais avoir adaptés votre code pour que cela fonctionne correctement.
Mais lors de la navigation via les pastilles j’observe un comportement qui depasse ma compréhension.
Si je suis sur la premiére pastille(premier slide) et que je clique sur la seconde, rien ne ce passe, aprés toute les autres pastilles sont décalé d’un slide (ex: pastille 3 slide2 etc…) Par contre si je viens d’une pastille supérieur, tout fonctionne correctement (ex si je vais de pastille4 a pastille2 c’est bien le slide 2 qui s’affiche et non 1)
Je suppose que cela vient d’une erreur d’interpretations de votre code. Si vous pourriez m’indiquer ma ou mes erreurs je vous serai grandement reconnaissant.
code: https://fiddle.jshell.net/35a767Ly/
Cordialement
Hello,
Mon code commence un peu à dater. Je n’ai plus tous les détails en tête. Le comportement que tu me décris me semble plutôt bizarre car le code que tu proposes a l’air bien adapté. Le Fiddle bug de mon côté, aurais-tu une page HTML avec juste ce rendu dispo en ligne ?
Merci à toi.
Pour te répondre zanzinico:
1: tu n’as pas prefixé l’animation dotserdans ton code css(tu dois la recopier avec
@-webkit-keyframes dotser
et@-moz-keyframes dotser
)2: tu n’as pas mis dans le code css de target pour tes points quand on appuie dessus.Ajoute le code ci-dessous(je l’ai adapté pour 5 imagesmais je te laisse l adapter a ton cadre car j’ai vu que tu avais plusieurs images dans le meme slide…)
Merci beaucoup pour ce tuto.
J ai juste une remarque c’est que lorsque on passe en manuel par exemple sur la 3eme image et qu on appuie ensuite sur play, l animation recommence au début. Sa serait posible de faire en sorte que l animation commence a partir de l’image ou on se trouve?
Cordialement
Hello Louis,
Hélas non. Me semble avoir précisé, peut-être rapidement, ce point. En fait les animations via Keyframes sont prioritaires sur les styles appliqués autrement. D’où le besoin de dupliquer la présence des images et ce comportement indépendant des deux systèmes.
Pour améliorer tout ça il faudrait du JS, mais ça n’était pas le but de l’expérimentation. 🙂
Bonjour, j’ai un problème avec ce slideshow, j’ai bien les miniatures qui s’affichent lorsque je rafraîchis ma page, mais, quand le diaporama passe a la première image, puis aux suivantes, je n’ai qu’un blanc…
le lien de la page démo est cassé
Merci pour l’info, c’est corrigé 🙂
bonjours, voila j’ai un soucis j arrive nouveaux et j’ai pas vraiment beaucoup de temps pour faire un défilement d’image mon soucis c est que je bloque au niveaux des images elles ne s’empilent pas en gros y a l’image et dessous l autre image disons que j’ai copié tout on code j’ai suivis pas mal de tuto différent mais aucun résultat donc je voulais savoir si vous pouvez m’éclairé merci.
Bonjour, déjà merci encore pour ce tuto il m’a beaucoup aidé 🙂 Le problème que je vais vous poser est assez long a lire, j’espère que vous aurez du temps.
J’essaye maintenant d’améliorer ce slider, mais après avoir modifié le code selon mes besoins je me retrouve face a un problème :
le site que je monte est destiné a l’exposition d’oeuvres d’art, c’est en quelque sorte, une galerie web. J’aimerais pouvoir afficher une description de chaque œuvres, quelques pixels a droite du slider principal et, par question d’ergonomie, limiter la place donc l’idée du slider de description me plaît. Et en plus, c’est la classe.
En somme les flèches commanderaient le slider principal et en même temps le slider de description.
Je ne vois pas trop comment contrôler 2 sliders dépendants entre eux uniquement grâce aux commandes de l’un, ou comment faire en sorte que l’un s’imbrique dans l’autre, qu’il soit aussi dans le conteneur « slideshow » mais qu’il s’affranchisse des limites de taille de ce dernier (je ne sais pas si c’est possible, mais étant autodidacte j’ai pleiin de choses a apprendre encore donc on sait jamais) , j’espère avoir donné des informations suffisante pour une bonne visualisation du problème; selon vous quelle serait la meilleure solution ? et théoriquement comment faire ? (je ne demande pas le code servit sur un plateau, juste une direction à suivre, car je sais pas vraiment vers ou aller)
Je vous remercie d’avance
Bonjour,
je trouve ce slideshow excellent et j’essaie de l’adapter mais je n’y arrive pas.
Je voudrai faire défiler 16 images et j’ai mit un temps de 10 secondes par image au lieu de 8 pensant que ce serait plus simple mais je bloque sur les @keyframes figcaptionner.
Impossible pour moi de réaliser le même effet que votre exemple.
Pouvez vous m’aider à configurer ces fameuses @keyframes figcaptionner.
Merci d’avance.
Cordialement Sergio.
Bonjour et merci pour cet excellent tuto.
je suis en train d’essayé de le modifier et je bloque au niveau des @-webkit-keyframes figcaptionner
J’ai 16 images au lieu de 4 et j’ai mit 10 seconde au lieu de 8.
Pour le slider voici se que j’ai fait, ça fonctionne comme je veux :
@keyframes slider {
0%, 6%, 100% { left: 0 }
12%, 13% { left: -100% }
18%, 19% { left: -200% }
24%, 25% { left: -300% }
30%, 31% { left: -400% }
36%, 37% { left: -500% }
42%, 43% { left: -600% }
50%, 51% { left: -700% }
56%, 57% { left: -800% }
62%, 63% { left: -900% }
66%, 67% { left: -1000% }
72%, 73% { left: -1100% }
78%, 79% { left: -1200% }
84%, 85% { left: -1300% }
90%, 91% { left: -1400% }
96%, 97% { left: -1500% }
}
Je bloque ici :
@keyframes figcaptionner {
0%, 6.25%,12.5%,18.75%,25%, 31.25%,37.5%,43.75%,50%, 56.25%,62.5%,68.75%,75%, 81.25%,87.5%,93.75%,100%{color:#fff; bottom: -55px; }
1%,6%, 8%,15%, 21%,29%, 31%,39%, 41%,49%, 14%,15%, 16%,17%, 19%,20%, 30%,45%, 55%,70%, 91%,99%, 51%,59%, 61%,69%, 71%,79%, 81%,89%, 91%,99%{color:#000; bottom: 5px;}
}
Pas moyen de faire le même effet que dans le tuto.
Je comprend pas comment calculer les %.
Si quelqu’un pouvez m’aider ou m’expliquer comment trouver le bon calcul ce serait super sympa.
D’avance merci.
J’aime BEAUCOUP ton tuto et son ancienneté ne change rien. J’aimerais bien adapter tes codes a mon tout nouveau site. Mais il y’a quelques choses qui ne me plait pas:
Quand je redimensionne le navigateur, mon image est coupee, neanmoins j’attendais a ce que l’ images aussi se redimensionne(comme quand on donne une partie de la page une valeur pourcentage:%) comme ca se fait dans le slideshow que tu proposes le lien a la fin du tuto et j’aimerais aussi
que l’images fasse toute la largeur de la page de sorte que je le met en background.
Je pars au tout debut avec toi et je modifie ces blocs:
#slideshow {
position: relative;
width: 100%; /* <——- ici */
height: auto; /* <—— ici */
padding: 15px;
margin: 0 auto 2em;
border: 1px solid #ddd;
background: #FFF;
/* CSS3 effects */
background: linear-gradient(#FFF, #FFF 20%, #EEE 80%, #DDD);
border-radius: 2px 2px 2px 2px;
box-shadow: 0 0 3px rgba(0,0,0, 0.2);
}
#slideshow .container {
position:relative;
width: 98%; /* <—– ici */
height: auto; /* <—– ici */
overflow: hidden;
}
et le resultat est desagreable.
Je travaille en local, je n'ai pas de lien a fournir
Bonjour chers amis !
Bravo a l’auteur pour ce tuto !
Après l’avoir lu et teste, je suis confronte a un problème dont je ne sais pas jusqu’à présent comment m’en sortir et j’espère que vous m’aiderez.
Tout marche chez moi tel que l’auteur l’a expliqué, sauf au niveau du contrôle de contenu d’une façon manuelle, précisément a « Bonux : Les flèches « suivant » et « précédent » » que j’ai un petit souci. Quand j’appuie sur le bouton suivant/précédent, au lieu qu’une seule image s’affiche dans le div réservé pour les images, 2 s’affichent malheureusement. Si j’étais à la 1ère image et que je voulais aller à la 2ème par exemple, le résultat sera une partie de la 2ème fusionnée à celle de la 3ème.
Bonjour, quand je suis ce tutoriel j’ai un problème avec les images c’est à dire que quand les images défilent a chaque slide un écart se creuse sur le coté gauche et a la fin au niveau de la 4e image, on voit carrément 1cm de l’image précedente comment faire ? merci beaucoup
tres bon site , merci
mais je pense que t’as pas ferme une div ds ton premier code html
Bonjour, merci pour ce petit tutos très efficace !
J’ai essayé de le reproduire avec 8 slides… ça a fonctionné jusqu’à la dernier étape… Les images se recardent bizarrement, et la flèche ne marche pas… Tout est modifié, comment faire pour la dernière étape ?
Merci bcp 🙂
bonjour et merci pour le tuto.
j’aimerai mettre ce diaporama en arriere plan ( dernier text ) occupant toute la fenetre. merci de m’aider a le faire
Bonjour, idem besoin de codes pour les % svp
je suis en train d’essayé de le modifier et je bloque au niveau des @-webkit-keyframes figcaptionner
J’ai 16 images au lieu de 4 et j’ai mit 10 seconde au lieu de 8.
Pour le slider voici se que j’ai fait, ça fonctionne comme je veux :
@keyframes slider {
0%, 6%, 100% { left: 0 }
12%, 13% { left: -100% }
18%, 19% { left: -200% }
24%, 25% { left: -300% }
30%, 31% { left: -400% }
36%, 37% { left: -500% }
42%, 43% { left: -600% }
50%, 51% { left: -700% }
56%, 57% { left: -800% }
62%, 63% { left: -900% }
66%, 67% { left: -1000% }
72%, 73% { left: -1100% }
78%, 79% { left: -1200% }
84%, 85% { left: -1300% }
90%, 91% { left: -1400% }
96%, 97% { left: -1500% }
}
Je bloque ici :
@keyframes figcaptionner {
0%, 6.25%,12.5%,18.75%,25%, 31.25%,37.5%,43.75%,50%, 56.25%,62.5%,68.75%,75%, 81.25%,87.5%,93.75%,100%{color:#fff; bottom: -55px; }
1%,6%, 8%,15%, 21%,29%, 31%,39%, 41%,49%, 14%,15%, 16%,17%, 19%,20%, 30%,45%, 55%,70%, 91%,99%, 51%,59%, 61%,69%, 71%,79%, 81%,89%, 91%,99%{color:#000; bottom: 5px;}
}
Pas moyen de faire le même effet que dans le tuto.
Je comprend pas comment calculer les %.
Si quelqu’un pouvez m’aider ou m’expliquer comment trouver le bon calcul ce serait super sympa.
D’avance merci.
Hello Guion,
dans ton @keyframes slider tu as :
{
0%, 6% { left: 0 }
12%, 13% { left: -100% }
18%, 19% { left: -200% }
//…
}
il faut que les valeurs du @keyframes slider correspondent au valeur de @keyframes figcationner :
@keyframes figcaptionner {
0%, 12%, 18%, ..(au moment du passage d’image).. , … ,100%{color:#fff; bottom: -55px; }
6%, 13%,19%, …(au moment ou on quitte l’image)…, ….. {color:#000; bottom: 5px;}
}
/******* pour harmoniser ********/
supposons que tu met => animation: slider 100s infinite;
( oui 100s pour 100% ce sera plus simple à expliquer )
ce qui résulte que passe de 0% à 6% ( soit 0s à 6s ) du temps dans la première image avant de passer à la deuxième
à 12% tu affiches la 2ème image ( avec le mouvement left:-100% )
mais entre 6% à 12% c’est le temps de transition … tu mettras 6% du temps ( 6s ) pour transiter …
soit tu as 16 images ( tant mieux car 100/16 = 6.25 ce qui tombe sur un nombre décimal non rationnel )
je te propose de rester sur ton image1 pendant 5.25 sec et 1sec de transition vers image2 ( ainsi de suite … )
/** libre à vous de choisir 1s ou 2s tout dépend de votre vitesse de transition , mais attention à réduire le delay sur l’image pour arriver à 100% à la fin **/
tu auras alors :
@keyframes slider tu as :
{
// début du slide
0% { left: 0 } // apparition image1
// durée sur image1 ( +5.25s )
5.25% { left: 0 } // fin image1 // début transition
//durée transition vers image2 (+1s)
6.25% { left: -100% } // apparition image2
// durée sur image2 ( +5.25s )
11.5% { left: -100% } // fin image2
//durée transition vers image3 (+1s)
….
/**… .. oui oui je vous laisse chercher un peu .. …**/
…..
//durée transition vers image15 (+1s)
87.5% { left: -1400% } // apparition image15
// durée sur image15 ( +5.25s )
92.75% { left:-1400% } // fin image15
//durée transition vers image16 (+1s)
93.75% { left: -1500% } // apparition image16
// durée sur image15 ( +5.25s )
99% { left:-1500% } // fin image16
//durée transition vers image1 (+1s)
100% { left: 0% } // retour image1
}
comme je vous l’ai dit ci-dessus, ces valeurs doit correspondre au @keyframes figcaptionner
vous aurez donc :
@keyframes figcaptionner
{
0%, 6.25%, 12.5%, ..(au moment de l’apparition d’image).. , … 87.5%, 93.75%, 100% {color:#fff; bottom: -55px; }
5.25%, 11.5%, 17.75%, …(au moment ou on quitte l’image/on transite en même temps non ?)…, ….. 92.75%, 99% {color:#000; bottom: 5px;}
}
J’espère vous avoir aidé xD
Si vous luttez vraiment … c’est que vous savez pas additionner ou chercher ….
PS : je ne sais pas si cela est correct , je ne l’ai pas testé 😡
Bonjour,
Avant tout, je tiens à vous remercie d’avoir pris votre précieux temps pour écrire cet intuitif article le css3 et je vous remercie par avance de toute réponse que vous pouvez donner à ma demande d’aide.
Dans la partie pour cacher les débordement, en reproduisant exactement ce que vous avez fait, dans tous les trois navigateurs web que j’utilise (firefox, chrome, opera) les débordement ne sont pas cacher et les images débordent dans le border solid. Comment puis-je corriger ce problème ?
Cette partie ne fonctionne pas, les débordements ne sont pas cachés:
#slideshow .container {
position:relative;
width: 640px;
height: 310px;
overflow: hidden;
}
Je vous remercie encore.
Bonjour à tous, j’espère que vous allez bien??
je suis un débutant en programmation web, j’aurai besoin de votre aide pour m’ améliorer en HTML 5, Javascript et Css 3.
merci d’avance!!!
Cool le site j’adore
Bonjour,
le lien de téléchargement retourne ceci:
Erreur : SQLSTATE[HY000] [1045] Access denied for user ‘creativejuiz_fr’@’localhost’ (using password: YES)
Thanks,
ça devrait être corrigé maintenant.
Un oubli dans la dernière migration 🙂
Le tuto est intéressant mais a mon niveau les images n’apparaissent pas dans le slide j’ai même refait avec votre tuto mais toujours la même chose. Alors merci de m’éclairer.
Bonjour,
Je ne peux pas vous éclairer si vous ne m’y aidez pas 😉
Un partage de code serait le minimum. Je vous invite à utiliser CodePen par exemple (comme proposé dans le message à côté du formulaire de commentaire)
Bonjour,
j’essaie de télécharger les sources, mais j’obtiens l’erreur suivante:
Erreur : SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column ‘cd_ip’ at row 1
Pouvez-vous m’aider (ou résoudre le souci) ?
Merci !
🙂
bonjour, question bête… quelqu’un pourrais m’expliquer comment faire pour agrandir le slide? (pour qu’il prenne toute la taille de l’écran au moment de l’arrivé sur le site), merci bcp ^^
Bonjour,
Alors même si cela fait longtemps que vous avez réaliser votre site mais j’ai quelques problèmes pour rajouter une image même en lisant vos conseil je n’y arrive pas, donc si vous pouvez me donner un exemple en rajoutant une image
Bonjour Quentin,
Navré mais toutes les informations sont dans les commentaires, pour avoir répondu à cette questions bien des fois 🙂
Les commentaires sont également là pour aider et accompagner l’article.
Merci à vous.
Merci et félicitations pour votre compétence qualifiée ! C’est extraordinaire votre travail, j’aime être formé par des gens comme vous.
merciiiiii, vraiment, ça fait deja une journée que je galère, même si sa parait long et incompréhensible, grâce à vous, j’ai tout compris.
merci infiniment