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 :

Centrer une image dans une DIV


Sujet :

Centrer un élément en CSS

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 67
    Points : 108
    Points
    108
    Par défaut Centrer une image dans une DIV
    Salut,

    Voici mon problème : impossible de centrer les images dans mes div http://i.imgur.com/armCnbh.png

    Le HTML, j'utilise HBS avec nodejs :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	<div class="blockimg w3-hover-shadow" onClick="">
    		<img src="image/{{this}}.svg" alt={{this}}/>
    	</div>

    Le CSS :
    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
     
    .blockimg {
    	display: inline-block;
    	vertical-align:middle;
    	box-shadow: -1px 2px 5px 1px rgba(0, 0, 0, 0.7);
    	background-color: white;
    	margin: 20px;
            height: 200px;
            width: 200px;
    }
     
    .blockimg img{
        vertical-align:middle;
        height: auto;
        width: auto;
        max-width: 180px;
        max-height: 180px;
        display: block;
    }
    Pouvez-vous m'aider ? Merci

  2. #2
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    par JavaScript, calculer les marges en fct de la taille de l'image... ?

    sinon
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .conteneur{
      width: 300px;
      height: 300px;
      border: 1px #aaa solid;
      text-align: center;
      display: table-cell;
      vertical-align: middle;
    }
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 67
    Points : 108
    Points
    108
    Par défaut
    Merci de l'info je savais pas qu'on pouvait modifier le style css avec du js

    Pour centrer l'image à la verticale, voila la solution en js

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function setImages(){
    	var elements = document.getElementsByClassName('blockimg');
    	for (var e in elements){
    		if(elements[e].firstElementChild !== undefined){
    			var top= 100-elements[e].firstElementChild.height/2;
    			elements[e].firstElementChild.style['margin-top'] = top+"px";
    		}
    	}
    }

  4. #4
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 269
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    et en utilisant les flexbox ? https://css-tricks.com/snippets/css/a-guide-to-flexbox/

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 67
    Points : 108
    Points
    108
    Par défaut
    C'est aussi une solution après le problème venait du fait que les images ont des tailles différentes du coup je peux pas mettre une valeur générique pour la margin-top.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 67
    Points : 108
    Points
    108
    Par défaut
    Par contre je viens de voir que je suis obligé de mettre un setTimeout sinon ça marche pas une fois sur deux sur chrome mais c'est ok sur firefox

    setTimeout(setImages, 10);

    Pourtant, je lance bien le script après avoir affiché toutes les images, vous auriez une idée Tout se fait-il dans l'ordre dans le web ? Ce sont mes premiers devs.

  7. #7
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    si tu lance ton script alors que les mages ne sont pas finies d'être chargées, alors ça ne marchera pas.

    Et a tu essayé mon script css pour centrer les images ?
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

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

    AUCUN besoin de JavaScript, ni de calcul de marges avec les flexbox :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <div class="blockimg-wrap">
     
      <div class="blockimg w3-hover-shadow">
        <img src="https://demo.phpgang.com/crop-images/demo_files/pool.jpg" />
      </div>
      <div class="blockimg w3-hover-shadow">
        <img src="https://www.samcodes.co.uk/project/geometrize-haxe-web/assets/images/xseagull.jpg.pagespeed.ic.iK66EGA15-.jpg" />
      </div>
      <div class="blockimg w3-hover-shadow">
        <img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1Uqe4mNPOYHynDqtTKWRHCQ4c_9J3jVwZmh3VtqiZ-8zh9bvRnQ" />
      </div>
     
    </div>

    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
    .blockimg-wrap {
        display:-webkit-flex; -webkit-flex-wrap:wrap;
        display:flex; flex-wrap:wrap; /* pour aligner les boites */
    }
     
    .blockimg {
      display:-webkit-flex; -webkit-justify-content:center; -webkit-align-items:center;
      display:flex; justify-content:center; align-items:center; /* pour centrer les images */
      height: 200px;
      width: 200px;
      box-shadow: -1px 2px 5px 1px rgba(0, 0, 0, 0.7);
      background-color: white;
      margin:5px;
    }
     
    .blockimg img {
      max-width: 180px;
      max-height: 180px;
    }

  9. #9
    Membre éclairé
    Homme Profil pro
    Retraité informatique
    Inscrit en
    Juin 2012
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 519
    Points : 705
    Points
    705
    Par défaut
    C'est aussi une solution après le problème venait du fait que les images ont des tailles différentes du coup je peux pas mettre une valeur générique pour la margin-top
    Pourtant avec flex on peut parfaitement aligner verticalement et horizontalement indépendamment des tailles (voir align-items et justify_content).
    Nom : flex-center.jpg
Affichages : 6430
Taille : 54,2 Ko

  10. #10
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    AUCUN besoin de JavaScript, ni de calcul de marges avec les flexbox
    Perso je doute que le modèle flexbox soit intégré dans le webkit (?)

    Citation Envoyé par kopbuc Voir le message
    Le HTML, j'utilise HBS avec nodejs
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 961
    Points : 44 133
    Points
    44 133
    Par défaut
    Bonjour,
    Citation Envoyé par psychadelic
    Perso je doute que le modèle flexbox soit intégré dans le webkit (?)
    Le moteur de rendu Webkit a fait partie des premiers à mettre en oeuvre les FlexBox qui à l'époque, avant de devenir ce que l'on sait, s'intitulait display: box !

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 67
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    si tu lance ton script alors que les mages ne sont pas finies d'être chargées, alors ça ne marchera pas.

    Et a tu essayé mon script css pour centrer les images ?
    Oui j'ai fait un mix entre ta solution et du code JS étant donné que le CSS ne centrait qu'à l'horizontale.

    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    AUCUN besoin de JavaScript, ni de calcul de marges avec les flexbox :
    Citation Envoyé par JefReb Voir le message
    Pourtant avec flex on peut parfaitement aligner verticalement et horizontalement indépendamment des tailles (voir align-items et justify_content).
    Super ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. Une image dans une image (image map?)
    Par oklama dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 14h13
  3. Mettre une Image dans une Image
    Par shadowhocine dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/12/2006, 18h40
  4. Réponses: 3
    Dernier message: 30/10/2006, 11h21
  5. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 14h19

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