J'ai une division dans laquelle je veux montrer des images et les ouvrir dans une boîte à lumière. Je les ai laissés flottants et les ai affichés en ligne. définissez overflow-x pour faire défiler l'écran, mais place toujours les images en dessous une fois que l'espace des lignes n'est plus suffisant Je veux les amener à être en ligne et à afficher un défilement horizontal en cas de besoin.
NOTE: Je ne peux pas changer la structure des images à l'intérieur. Ce doit être un img à l'intérieur d'une ancre. Ma visionneuse le requiert comme ça.
HTML:
<div id="myWorkContent">
<a href="assets/work/1.jpg"><img src="assets/work/1.jpg" height="190" /></a>
<a href="assets/work/2.jpg"><img src="assets/work/2.jpg" height="190" /></a>
<a href="assets/work/3.jpg"><img src="assets/work/3.jpg" height="190" /></a>
<a href="assets/work/4.jpg"><img src="assets/work/4.jpg" height="190" /></a>
<a href="assets/work/5.jpg"><img src="assets/work/5.jpg" height="190" /></a>
<a href="assets/work/6.jpg"><img src="assets/work/6.jpg" height="190" /></a>
</div><!-- end myWorkContent -->
CSS:
#myWorkContent{
width:530px;
height:210px;
border: 13px solid #bed5cd;
overflow-x: scroll;
overflow-y: hidden;
}
#myWorkContent a {
display: inline;
float:left
}
Je sais que c'est très basique mais je ne peux tout simplement pas le faire. Je ne sais pas ce qui ne va pas.
Cela peut être quelque chose comme ça en HTML:
<div class="container-outer">
<div class="container-inner">
<!-- Your images over here -->
</div>
</div>
Avec cette feuille de style:
.container-outer { overflow: scroll; width: 500px; height: 210px; }
.container-inner { width: 10000px; }
Vous pouvez même créer un script intelligent pour calculer la largeur du conteneur interne, comme celui-ci:
$(document).ready(function() {
var container_width = SINGLE_IMAGE_WIDTH * $(".container-inner a").length;
$(".container-inner").css("width", container_width);
});
si vous supprimez le float: left
du a
et ajoutez white-space: nowrap
au div
#myWorkContent{
width:530px;
height:210px;
border: 13px solid #bed5cd;
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
}
#myWorkContent a {
display: inline;
}
cela devrait fonctionner pour n'importe quelle taille ou quantité d'images.
ou même:
#myWorkContent a {
display: inline-block;
vertical-align: middle;
}
qui permettrait également d'aligner verticalement des images de différentes hauteurs si nécessaire
Le problème est que votre img
s passera toujours à la ligne suivante à cause de la valeur contenant div
.
Pour résoudre ce problème, vous devez placer les img
s dans leur propre div
avec une width
assez large pour les contenir tous. Ensuite, vous pouvez utiliser vos styles tels quels.
Donc, quand je règle img
s sur 120px
et que je les place dans un
div#insideDiv{
width:800px;
}
tout fonctionne.
Ajustez la largeur si nécessaire.
Identique à la réponse claire, sauf que vous pouvez obtenir un résultat similaire en ajoutant display: flex
au lieu de white-space: nowrap
. Utiliser display: flex
réduira les "marges" img, au cas où le comportement serait préféré.
La réponse de @ marcio-junior ( https://stackoverflow.com/a/6497462/4038790 ) fonctionne parfaitement, mais je voulais expliquer à ceux qui ne comprennent pas pourquoi cela fonctionne:
@ a7omiton Accompagné de la réponse de @ psyren89 à votre question
Pensez à la div
extérieure en tant qu'écran de film et à la div
intérieure au paramètre dans lequel les personnages se déplacent. Si vous visualisiez le paramètre en personne, c'est-à-dire sans écran autour de celui-ci, vous seriez en mesure de voir tous les personnages en même temps, à condition que vos yeux aient un champ de vision suffisamment grand. Cela signifierait que le paramètre n'aurait pas à faire défiler (déplacer de gauche à droite) pour que vous puissiez en voir plus et ainsi il resterait immobile.
Cependant, vous n'êtes pas au réglage en personne, vous le visualisez à partir de l'écran de votre ordinateur qui a une largeur de 500px alors que le réglage a une largeur de 1000px. Ainsi, vous devrez faire défiler (déplacer de gauche à droite) le paramètre afin de voir plus de caractères à l'intérieur de celui-ci.
J'espère que cela aide tous ceux qui ont perdu le principe.