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 un div sur une image de taille variable


Sujet :

Positionnement en CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 34
    Par défaut Positionner un div sur une image de taille variable
    Bonjour à tous

    Je cherche à faire un petit jeu en javascript qui s'intègre sur une image.

    J'aimerai que :
    • l'image soit centrée horizontalement et occupe 100% de la hauteur du navigateur, en respectant le ratio de redimensionnement (la largeur de cette image est donc variable)
    • un div "Cnt" puisse être placé sur l'image de manière à couvrir une partie précise de celle-ci quel que soit le redimensionnement du navigateur
    • la solution soit viable au moins pour Chrome et IE


    Je pensais utiliser :

    • une img, avec une hauteur à 100% de son parent
    • un div "Cnt" en positionnement absolu avec Left, Top, Width et Height exprimés en pourcentages
    • un div "Container" configuré ainsi :

    • > inline-block de manière à pouvoir le centrer en lui assignant une hauteur à 100% du navigateur (pour l'image)
    • > relatif, pour que le placement de "Cnt" de base dessus (et donc qu'un top de Cnt à 10% arrive à 10% du haut de l'image)

    Malheureusement, et après avoir à peu près essayé toutes les combinaisons qui me sont venues à l'esprit, à compris des div tampon, je
    n'arrive pas à résoudre ces trois contraintes en même temps. Quelqu'un pourrait il me mettre sur la bonne voie ?

    Merci par avance !


    PS : Je sais que la solution est simple en javascript, mais j’aurai aimé séparer le code du jeu (js) de la présentation (css)

  2. #2
    Membre Expert
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Par défaut
    Bonjour,

    Vous avez un bout de code ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 34
    Par défaut
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <!DOCTYPE html>
    <html> 
        <head>
            <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
            <title>Test</title>
        <head>
     
        <body>
            <div id="Container">
                <div id="Cnt">*--Contiendra un tableau--*</div>
                <img id="Img" src="IMG/Img.jpg">    
            </div>
        </body>
    </html>

    Code css : 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
     
     
        html, body {
            margin: 0px;
            padding: 0px;
            height: 100%;
        }
     
            #Container {
                position: relative;
                display: inline-block;
                background-color: blue;
                height: 100%;
                border: solid 3px;
            }
     
                #Img {    
                    height: 100%;    
                }
     
                #Cnt {
                    position: absolute;
                    display: inline;
                    z-index: 98;
                    left: 18%;
                    width: 64.5%;
                    top: 20%;
                    height: 50%;
                    background-color: purple;
                }

    Le rendu le plus amusant est sur Chrome : essayer d'abord de rafraîchir avec un navigateur tout petit, puis jouer sur la taille de celui-ci pour voir le rendu, puis répéter l'opération après avoir rafraichir sur un navigateur plus grand...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 34
    Par défaut
    Désolé de revenir à la charge aussi rapidement, mais à voir le peu de participation, je commence un peu à paniquer qu'un rendu si simple soit aussi dur à obtenir :

    Dois-je comprendre qu'il n'y aurait aucun moyen en pur CSS de placer précisément des éléments par dessus une image centrée de taille variable ?

    Merci pour vos idée !

  5. #5
    Membre Expert
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Par défaut
    Je ne suis pas sûr de bien comprendre ce que vous voulez car pour l'instant je ne vois pas de problème.

    Et si on travaillait à partir d'un Codepen : http://codepen.io/anon/pen/LanBG

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 34
    Par défaut
    Merci de prendre un peu de temps pour m'éclairer !

    J'ai mis à jour le code avec une image un peu plus parlante, ainsi que redimensionné le div à placer pour une meilleure lisibilité.

    http://codepen.io/LaDent/pen/maxIv

    En jouant sur le Display on obtient différentes facettes du problème :

    • inline-block : donne le rendu que je souhaite mais le redimensionnement de l'image ne se fait pas bien : la largeur reste fixe.
    • inline : le redimensionnement se fait correctement mais le container ne prends pas toute la hauteur, du coup
      Cnt qui est en absolu et devrait se baser dessus ne corresponds pas
    • block : Cnt n'arrive pas à hériter de Container

Discussions similaires

  1. Bug Div sur une image!
    Par veneq dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/05/2010, 10h28
  2. Positionner un texte sur une image
    Par Ryoko dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 19/06/2008, 10h22
  3. [Javascript Debutant]Comment positionner des boutons sur une Image?
    Par bylka dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/07/2007, 13h07
  4. [CSS][firefox]positionner mes div sur une seule ligne
    Par hansaplast dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 29/03/2006, 14h44
  5. Positionnement de texte sur une image
    Par inddzen dans le forum Windows
    Réponses: 2
    Dernier message: 08/08/2005, 12h22

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