117 votes

Suppression des espaces blancs entre les éléments HTML lors de l'utilisation de sauts de ligne

J'ai une page avec une rangée d'environ 10 img s. Pour la lisibilité du HTML, je veux mettre un saut de ligne entre chaque img mais cela crée des espaces blancs entre les images, ce que je ne veux pas. Y a-t-il quelque chose que je puisse faire, à part casser au milieu des balises plutôt qu'entre elles ?

Edit : Voici une capture d'écran de ce que j'ai jusqu'à présent. Je voudrais que les images du dos du livre s'affichent dans des combinaisons aléatoires, en utilisant PHP. C'est pourquoi j'ai besoin de img tags.

Screenshot

1 votes

Si vous utilisez Smarty vous pouvez utiliser {strip} . Autres moteurs de modèles devraient avoir des étiquettes similaires.

166voto

opatut Points 2176

Désolé si c'est vieux mais je viens de trouver une solution.

Essayez de régler le font-size à 0. Ainsi, les espaces blancs entre les images auront une largeur de 0, et les images ne seront pas affectées.

Je ne sais pas si cela fonctionne dans tous les navigateurs, mais j'ai essayé avec Chromium et quelques <li> éléments avec display: inline-block; .

9 votes

Je peux confirmer que cela fonctionne dans Firefox et Safari sur Mac OSX, ainsi que dans Chrome. Je n'arrive pas à croire que ce n'est pas la première réponse. C'est une excellente idée, la seule qui, à mon avis, répond vraiment à la question et donne à l'auteur de la question ce qu'il cherche.

16 votes

Sauf que cela va casser les mises en page qui utilisent em unités.

6 votes

Réglage de font-size à 0 signifie que vous ne pouvez pas utiliser le em unité pour une conception évolutive après ce point. Pour certaines personnes, cette réponse est inutile.

76voto

Quentin Points 325526

Vous pourriez utiliser des commentaires.

 <img src="..." alt="..."><!--
 --><img src="..." alt="..."><!--
 --><img src="..." alt="..."><!--
 --><img src="..." alt="...">

Je m'inquiéterais cependant de la sémantique d'une série d'images côte à côte.

1 votes

Bonne idée. Les images sont décoratives - est-ce important d'un point de vue sémantique ?

13 votes

Les images décoratives doivent être placées dans le CSS, pas dans le HTML !

12 votes

Cela dépend du degré de décoration des images. Une jolie bordure ? Cela devrait être en CSS. Une série de petites photos d'avions sur un site consacré à l'aviation ? Peut-être du contenu sans équivalent textuel nécessaire.

72voto

edeverett Points 4094

Vous pourriez utiliser CSS. Le fait de définir display:block ou float:left sur les images vous permettra de définir votre propre espacement et de formater le HTML comme vous le souhaitez, mais cela affectera la mise en page d'une manière qui pourrait ou non être appropriée.

Dans le cas contraire, il s'agit de contenu en ligne et le formatage HTML est donc important, car les images se comportent comme des mots.

0 votes

C'est l'approche que je préfère. Cependant, si j'oublie de définir une taille de police pour les éléments enfants, je me demande parfois pourquoi le texte ne s'affiche pas.

28voto

Paul de Vrieze Points 3715

Vous avez deux options sans faire de trucs approximatifs avec CSS. La première option consiste à utiliser javascript pour supprimer les enfants des balises qui ne sont que des espaces blancs. Une option plus agréable consiste à utiliser le fait que les espaces blancs peuvent exister à l'intérieur des balises sans avoir de signification. Par exemple :

<div id="[divContainer_Id]"
    ><img src="[image1_url]" alt="img1"
    /><img src="[image2_url]" alt="img2"
    /><img src="[image3_url]" alt="img3"
    /><img src="[image4_url]" alt="img4"
    /><img src="[image5_url]" alt="img5"
    /><img src="[image6_url]" alt="img6"
/></div>

2 votes

En fait, je préfère ce style. Oui, il est laid, mais il ne nécessite pas de bidouillages CSS qui peuvent avoir toutes sortes d'effets secondaires.

13voto

Ara Points 374

J'arrive trop tard (je viens de poser une question et je trouve que c'est mince dans la section connexe) mais je pense que display:table-cell ; est une meilleure solution

<style>
img {display:table-cell;}
</style>

<img src="img1.gif">
<img src="img2.gif">
<img src="img3.gif">

Le seul problème est qu'il ne fonctionne pas sur IE 7 et les versions antérieures, mais cela peut être résolu avec un hack.

0 votes

C'est une bonne chose, mais le seul défaut est que les éléments perdent leur capacité à flotter au centre si leur parent a text-align:center ;

0 votes

Cela fonctionne, mais si vous souhaitez aligner les images sur le côté droit simplement avec text-align : right (sur le parent et sans float) - la solution ne convient malheureusement pas.

2 votes

Cela pourrait fonctionner, mais certains lecteurs d'écran interprètent display: table-* sémantiquement et lues comme si l'utilisateur naviguait dans un tableau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X