11
votes

CSS - Affichage d'images avec barre de défilement horizontale

Je suis en train d'afficher un certain nombre d'images horizontalement à l'intérieur d'un div largeur fixe. Je souhaite utiliser une barre de défilement horizontale pour afficher les images qui ne correspondent pas à l'intérieur de la Div.

Cependant, les images affichent verticalement, plutôt que horizontalement. Existe-t-il un moyen de les forcer à s'afficher côté? P>

div#event {
width: 150px;
overflow-x: scroll;
overflow-y: hidden;
}

div#event ul { list-style: none; }

div#event img {
width: 100px;
float: left;
}

<div id="lasteventimg">
<ul><li><img src="./gfx/gallery/image1.jpg" /></li>
<li><img src="./gfx/gallery/image2.jpg" /></li>
<li><img src="./gfx/gallery/image3.jpg" /></li>
</ul>
</div>  


0 commentaires

6 Réponses :


1
votes

J'irais avec xxx

pour vous assurer que les éléments li ne sont pas rendus comme éléments de blocs.


0 commentaires

1
votes

Eh bien d'abord, vous devez modifier vos styles de #Event code> à #lasteventimg code>. Ensuite, si vous définissez la largeur code> du ul code> pour être suffisamment large pour accueillir toutes les images, vous devez voir le comportement que vous essayez d'obtenir:

div#lasteventimg {
width: 150px;
overflow-x: scroll;
overflow-y: hidden;
}

div#lasteventimg ul { list-style: none; width: 300px; }

div#lasteventimg img {
width: 100px;
float: left;
}

<div id="lasteventimg">
<ul><li><img src="./gfx/gallery/image1.jpg" /></li>
<li><img src="./gfx/gallery/image2.jpg" /></li>
<li><img src="./gfx/gallery/image3.jpg" /></li>
</ul>
</div>    


0 commentaires

9
votes

Vous devrez afficher les éléments de la liste en ligne ou les flotter et donner à l'UL une très grande largeur pour éviter les éléments se déplaçant à la ligne suivante:

ul {
  width: 10000px;    // for example
  white-space: nowrap;
}
li {
  float: left:
  // or
  display: inline;
}


1 commentaires

Hey, j'ai le même problème, mais je n'utilise aucune liste - j'ai juste des images à ajouter à une Div horizontale (via JavaScript), j'utilise Float: gauche et Overflow-x: Faites défiler,



0
votes

Vous devez modifier votre liste, de sorte que les éléments sont rendus horizontalement plutôt que la verticale par défaut.

#imagelist li
{
display: inline;
list-style-type: none;
}


0 commentaires

0
votes

Pourquoi n'essayez-vous pas cela? XXX


0 commentaires

12
votes

Code correct pour le nombre arbitraire d'images, si vous ne connaissez pas la largeur ul:

#lasteventimg {width:150px;overflow-x:scroll;overflow-y:hidden;}
ul {list-style:none; display:block;white-space:nowrap;}
li {width: 100px;display:inline;}


<div id="lasteventimg">
<ul>
<li><img src="./gfx/gallery/image1.jpg" /></li>
<li><img src="./gfx/gallery/image2.jpg" /></li>
<li><img src="./gfx/gallery/image3.jpg" /></li>
<li><img src="./gfx/gallery/image4.jpg" /></li>
<li><img src="./gfx/gallery/image5.jpg" /></li>
</ul>
</div>


2 commentaires

Bien que cela fonctionne, chaque fois que des éléments en ligne rencontrent une nouvelle ligne, le navigateur insère l'espace blanc entre les éléments en ligne. Il n'y a aucun moyen de vous en débarrasser de manière fiable sur les navigateurs. Vous devrez soit faire le piratage "Jésus Fish" (

  • Stuff <[nouvelle ligne] LI> Stuff) ou éliminer la rupture de ligne entre les balises (
  • )


    @ mrkinky3000: coller des commentaires entre les lignes pour garder les pauses de ligne fonctionne aussi (

  • )