IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

Positionner une image bord à bord dans la case d'un tableau !


Sujet :

Positionnement en CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Par défaut Positionner une image bord à bord dans la case d'un tableau !
    Avant de n'avoir plus de cheveux sur la tête à force de me les arracher, je lance un SOS dans ce forum.
    Je suis débutant en HTML/CSS et j'ai besoin de créer un tableau dans lequel je vais afficher des images, du texte etc ...

    Voici le code que j'utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <!doctype html>
    <html>
    	<style>
    		.ma_table {
    			color: #000000;
    			width: 800px;
    			border: 1px solid black;
    			/* Pour centrer le tableau */
    			margin: auto;
    			border-collapse: collapse;
    			font-family: inherit;
    			}
    		td {
    			border: 1px solid black;
    			width: 160px;
    		}
    	</style>
     
    	<head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    	</head>
     
    	<body>
    		<div style="width: 100%; text-align: center; padding: 0px 0px 0px 0px; border: 1px solid black;">
    		<table class="ma_table">	
    			<tr>
    				<td colspan="5">
    					<div>
    					bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla 
    					bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    					bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    					bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    					</div>
    				</td>
    			</tr>
     
    			<tr>
    				<td colspan="2">
    					<img src="ble-320_100.jpg">
    				</td>
    				<td colspan="3">
    					<div>
    					bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla 
    					bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    					bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    					bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    					</div>
    				</td>
    			</tr>
    		</table>
    		</div>
    	</body>
    </html>
    Mon tableau est divisé en 5 colonnes. La largeur de la table est fixée à 800px. Donc chaque colonne doit faire 160px.
    L'image que j'affiche dans la deuxième ligne fait 320px. Donc en prennant deux colonnes (colspan=2) ça devrait rentrer.

    Le problème est que ça ne marche pas !
    Quand je fixe l'attribut "width: 160px" dans le CSS pour la balise td, j'obtiens un affichage décalé :

    Nom : aff_deca.png
Affichages : 974
Taille : 103,3 Ko

    Par contre quand je ne fixe pas de "width" ça passe :
    Nom : aff_ok.png
Affichages : 940
Taille : 101,2 Ko

    Du coup j'ai aussi un autre problème :
    Comment supprimer cette petite marge blanche entre l'image et la bordure de la case ? Je souhaite que l'image soit exactement à la taille de la case !

    D'avance merci pour votre aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ça fait belle lurette qu'on n'utilise plus de <table> pour faire la mise en page !

    • On utilise des "boîtes" (<div> et autres) qu'on positionne grâce au CSS.
    • On peut simuler le comportement d'une table avec display:table / table-cell.
    • Mais intéresse-toi aux flexbox, voire au système de grid CSS.
    • Et préfère les largeurs en % plutôt qu'en px.


    Quant à la marge, ajoute display:block à l'image.
    Dernière modification par Invité ; 24/03/2018 à 17h51.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Par défaut
    Merci pour les conseils. J'ai commencé à les appliquer mais sans succès !

    Pour simplifier j'ai juste deux colonnes :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    				<div style="border: inherit; display: table; width: 100%;">
    					<span style="display: table-cell; width: 50%; border: inherit;">
    						<img src="oseille.jpg" style="display: block;">
    					</span>
    					<span style="display: table-cell; width: 50%; border: inherit;">
    						<p style="display: block;" >Texte</p>
    					</span>				
    				</div>

    Je voudrais qu'il n'y ait pas de marge en dessous le l'image : que les bords en bas de ma case collent à l'image.
    Au lieu de ça, j'obtiens cela sur différents navigateurs :
    Nom : aff_deca.png
Affichages : 916
Taille : 94,9 Ko

    Peux tu encore m'aider stp ?

  4. #4
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    contrairement à ce que l'imagine l'interpréteur html prend en compte tous les espaces.
    quand tu code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <span style="display: table-cell; width: 50%; border: inherit;">
    	 <img src="oseille.jpg" style="display: block;">
     </span>

    l'interpréteur trouve 2 espaces autour de l'image, et ils se retrouveront dans tes "marges":

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <span style="display: table-cell; width: 50%; border: inherit;">
    [espace]<img src="oseille.jpg" style="display: block;">[espace]
     </span>


    il faut coder de cette façon :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <span style="display: table-cell; width: 50%; border: inherit;"><img src="oseille.jpg" style="display: block;"></span>
    ou:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <span style="display: table-cell; width: 50%; border: inherit;"
    ><img src="oseille.jpg" style="display: block;"
    ></span>
    si tu tiens à présenter ton code sur plusieurs lignes.

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    Je voudrais qu'il n'y ait pas de marge en dessous le l'image : que les bords en bas de ma case collent à l'image.
    il ne s'agit pas d'un problème de « whitespace », comme évoqué, mais du comportement normal des éléments inline comme les images.

    Pour supprimer cet espace il suffit effectivement, comme mis dans l'exemple, de passer l'élément en display:block.

    Pourquoi je ne peux pas enlever l'espacement sous mon image ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- au lieu de t'arracher les cheveux, lis des tutos... : Les meilleurs cours et tutoriels pour apprendre le CSS

    2- A savoir : les navigateurs peuvent ajouter les propriétés "par défaut" à certaines balises (margin, padding,...).
    On peut faire un "reset" rapide avec :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    * {
      padding:0;
      margin:0;
      border:0;
      font-size:100%;
      box-sizing:border-box;
    }

    3- Tu as ici un comportement "table" : pour afficher le texte en haute de "cellule" :
    4- D'autre part, remplace tes span (inline par défaut) par des div (block par défaut).
    Et supprime les bordures noires : c'est juste moche.

    5- Je te conseille de DESSINER (papier, crayon !) ce que tu veux obtenir, en dessinant des "boites" dans des boites".
    Ce sera plus facile ensuite à coder.

Discussions similaires

  1. [CSS 3] Bien positionner une image de fond dans une div
    Par niavlys26 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/05/2012, 23h23
  2. positionner une image dans un block
    Par Stéph utilisateur d'acces dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 12/07/2009, 20h40
  3. Positionner une image dans le background d'un panel
    Par mappy dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/11/2008, 15h21
  4. Positionner une image ou un texte dans un tableau
    Par aminos40 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 6
    Dernier message: 31/05/2007, 16h46
  5. [HTML] Calé une image au bord d'une autre
    Par leloup84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 23/02/2006, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo