J’ai une division dans laquelle je veux montrer des images et en cliquant dessus, ouvrez-les dans une lightbox. Je les ai flottés à gauche et les ai affichés en ligne. définir overflow-x pour faire défiler mais il met toujours les images ci-dessous une fois que l’espace de ligne n’est pas suffisant. Je veux les faire être en ligne et afficher un défilement horizontal si nécessaire.
REMARQUE: Je ne peux pas modifier la structure des images à l’intérieur. Ce doit être une img à l’intérieur d’une ancre. Ma lightbox l’exige comme ça.
HTML:
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 simple mais je ne peux pas le faire. Je ne sais pas ce qui ne va pas.
C’est peut-être quelque chose comme ceci en HTML:
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
de a
et ajoutez white-space: nowrap
à la div
externe
#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 alignerait également verticalement des images de différentes hauteurs si nécessaire
Le problème est que vos img
s vont toujours tomber à la ligne suivante à cause du div
contenant.
Pour contourner ce problème, vous devez placer les img
dans leur propre div
avec une width
suffisante pour tous les contenir. Ensuite, vous pouvez utiliser vos styles tels quels.
Donc, quand je mets les img
s à 120px
chacun et les place dans un
div#insideDiv{ width:800px; }
tout fonctionne.
Ajustez la largeur si nécessaire.
Identique à ce que clairesuzy a répondu, 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ù ce comportement serait préférable.
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 Avec la réponse de @ psyren89 à votre question
Considérez le div
externe comme un écran de film et la div
interne comme le paramètre dans lequel les personnages se déplacent. Si vous visualisiez la configuration en personne, c’est-à-dire sans écran, vous seriez en mesure de voir tous les personnages en même temps en supposant que vos yeux ont un champ de vision suffisamment large. Cela signifierait que le réglage ne devrait pas faire défiler (déplacer de gauche à droite) pour que vous puissiez en voir plus et ainsi restr 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 paramètre a une largeur de 1000px. Ainsi, vous devrez faire défiler (déplacer de gauche à droite) le réglage pour voir plus de caractères à l’intérieur.
J’espère que cela aide toute personne perdue sur le principe.