28172 sujets

CSS et mise en forme, CSS3

Bonjour

j'essaie d'adapter le code de l'excellent slideshow de Geoffrey (http://www.creativejuiz.fr/blog/tutoriels/css3-creer-slideshow-automatique-controlable-

transition) mais malheureusement, n'étant pas développeur je galère un peu.


Le code original permettait de faire défiler 4 images et j'aimerais faire défiler entre 10 et 20 images en conservant le design de Geoffrey.

Je me suis plongé dans le code, lu pas mal de forum sur la fonction animation/keyframes mais mes images défilent 2 par 2.


J'ai bien d'autres buggs sur mon slideshow avant qu'il ne fonctionne comme celui de Geoffrey (les légende restent fixe, les boutons de navigation

manuelle ne fonctionne pas coreectement, tec...) mais je me suis dis que j'allais repartir de la base, à partir d'un code simple, pour comprendre plus

précisement le fonctionnement.

J'ai donc relu le premier tutoriel de Geoffrey permettant de faire défiler 3 images (sans bouton de navigation, tec...) que j'ai adapté pour 5 images et çà

fonctionne.

J'ai ensuite voulu, changer le format des images (150px x 150px --> 640px x 310px) et faire défiler 8 images et là j'ai encore le même problème qu'au

tout début, à savoir que mes images défilent 2 par 2.

Je ne vois pas d'où peut venir mon erreur.
D'avance merci pour vos réponses qui me permettront d'avancer



Code HTML 
:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

<head>

<title>Slideshow automatique</title>

<meta content="text/html; charset=utf-8" http-equiv="content-type" />

<meta name="Author" content="Geoffrey Crofte, CreativeJuiz" />

<meta http-equiv="Content-Language" content="fr" />

<link type="text/css" rel="stylesheet" href="test_2.css" />

</head>

<body>

<div id="slideshow">

<ul id="sContent">

<li><img src="img/image7.jpg" alt="" width="640" height="310" /></li><!---->/* j'impose la taille de mes images*/

<li><img src="img/image8.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image9.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image10.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image11.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image12.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image13.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image14.jpg" alt="" width="640" height="310" /></li>

</ul>

</div>

</body>

</html>


Code CSS :


@-webkit-keyframes AutoSlide {

0%, 10%, 100% { left: 0 }/* première image et dernière*/

12,5%, 22,5% { left: -640px } /*2ème image ; j'ai modifié le left avec des multiples de 640px qui est la largeur de mon image et ai divisé la valeur du 

keyframes par 2 puisque je passe de 4 images à 8 images*/

25%, 35% { left: -1280px } /*3ème image*/

37,5%, 47,5% { left: -1920px } /*4ème image*/

50%, 60% { left: -2560px } /*5ème image*/

62,5%, 72,5% { left: -3200px } /*6ème image*/

75%, 85% { left: -3840px } /*7ème image*/

87,5%, 97,5% { left: -4480px } /*8ème image*/

}

@-moz-keyframes AutoSlide {

0%, 10%, 100% { left: 0 }/* première image et dernière*/

12,5%, 22,5% { left: -640px } /*2ème image*/

25%, 35% { left: -1280px } /*3ème image*/

37,5%, 47,5% { left: -1920px } /*4ème image*/

50%, 60% { left: -2560px } /*5ème image*/

62,5%, 72,5% { left: -3200px } /*6ème image*/

75%, 85% { left: -3840px } /*7ème image*/

87,5%, 97,5% { left: -4480px } /*8ème image*/

}

@keyframes AutoSlide {

0%, 10%, 100% { left: 0 }/* première image et dernière*/

12,5%, 22,5% { left: -640px } /*2ème image*/

25%, 35% { left: -1280px } /*3ème image*/

37,5%, 47,5% { left: -1920px } /*4ème image*/

50%, 60% { left: -2560px } /*5ème image*/

62,5%, 72,5% { left: -3200px } /*6ème image*/

75%, 85% { left: -3840px } /*7ème image*/

87,5%, 97,5% { left: -4480px } /*8ème image*/

}


#slideshow {

position: relative; /*le parent positionné*/

width: 640px; /*limite en largeur (1 élément du slideshow) ; j'ai modifié la largeur de 150px à 640px*/

height: 310px; /*limite en hauteur*/

margin: 20px auto;

overflow: hidden; /*on cache ce qui déborde*/

}

#sContent li {

display: inline; /*on aligne les éléments du slideshow*/

}

#sContent {

position: absolute; /*on sort l'élément du flux*/

top: 0; /*on le positionne précisément dans ...*/

left: 0; /*l'angle haut gauche de son parent positionné*/

width: 5120px; /*j'ai modifié la largeur totale de mon slideshow = 8 x 640 px*/

margin: 0;

padding: 0;

/*CSS3 webkit keyframes animation*/

-webkit-animation-name: AutoSlide;

-webkit-animation-duration: 25s;

-webkit-animation-iteration-count: infinite;

-webkit-animation-timing-function: ease-in-out;

/*CSS3 moz keyframes animation*/

-moz-animation-name: AutoSlide;

-moz-animation-duration: 25s;

-moz-animation-iteration-count: infinite;

-moz-animation-timing-function: ease-in-out;

/*CSS3 W3C keyframes animation*/

animation-name: AutoSlide;

animation-duration: 25s;

animation-iteration-count: infinite;

animation-timing-function: ease-in-out;

}
Bonjour/bonsoir,

tu ecrit par exemple :
0%, 10%, 12,5% {}

quand tu devrais l’écrire :
0%, 10%, 12.5% {}


Que tu ait deux image qui filent d'un coup est un pur hasard du à l'erreur de syntaxe Smiley smile
... donc 12.5% au lieu de 12,5% Smiley cligne

http://codepen.io/anon/pen/GeBkH
Modifié par gc-nomade (17 Nov 2013 - 02:02)
essaye plutôt cela:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

<head>

<title>Slideshow automatique</title>

<meta content="text/html; charset=utf-8" http-equiv="content-type" />

<meta name="Author" content="Geoffrey Crofte, CreativeJuiz" />

<meta http-equiv="Content-Language" content="fr" />

<link type="text/css" rel="stylesheet" href="style.css" />

</head>

<body>

<div id="slideshow">

<ul id="sContent">

<li><img src="../images/pierre.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image8.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image9.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image10.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image11.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image12.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image13.jpg" alt="" width="640" height="310" /></li><!--

--><li><img src="img/image14.jpg" alt="" width="640" height="310" /></li>

</ul>

</div>

</body>

</html>


il y a trois chose que j'ai changer:

le lien css.

<!--

--> qui était <!----> avant.

et ton text: /* j'impose la taille de mes images*/ que j'ai supprimer parce qu'il s'afficher.

voila normalement ça devrait le faire