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

JavaScript Discussion :

DIV positionnement libre dans une DIV parent


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut DIV positionnement libre dans une DIV parent
    Bonjour,

    Je cherche a faire un graphique en utilisant des div comme point, je veux les placer dans une div mais le problème est qu'ils sont sur tout l'écran

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
      <html>
      	<head>
      		<style>
                            #graphe {
                                    width: 100%;
                                    height : 300px;
                                    border : 50px;
                                    border: 1px solid black;
                                    background-color: white;
                            }                       
                            .cercle {
                                    width: 3px;
                                    height: 3px;
                                    border-radius: 20px;
                                    position: absolute;
                                    display: block;
                            }
                            .voie0 { background: green; }
                            .voie1 { background: blue; }
                    </style>
      		<html lang='fr'>
      		<title>Infos Maison</title>
      	</head>
      	<body style='background-color:#5DADE2;'>
      		<center>
      			<font size='7'>Graphique</font>
      		</center>
    		<br><br>
      		<div id='graphe'>
     
      		</div>
     
      	</body>
      </html>

    Je souhaite que les points de mon graphique soient uniquement dans ma div d'ID graphe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var point = document.createElement('div')
    point.id = 'Courbe ' + datas[ii][0] + ' le ' + strToDateUS(datas[i][1]);
    point.className = 'cercle voie' + datas[ii][0];
    document.getElementById('graphe').appendChild(point);
    point.style.top = 100 - ((datas[ii][2] - yMin) * 100 / total) + '%';
    point.style.left = ii * 100 / (datasX.length+20) + '%';
    Nom : graphique.png
Affichages : 202
Taille : 14,3 Ko

    Comment faire pour que mon graphique reste dans ma DIV ?

    J'utilise les % pour que les points se repositionnent quand je redimensionne ma fenêtre

    Il y a peut être une autre solution mais je n'arrive pas voir comment

    Merci pour vos conseils

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    j'ai l'impression que c'est plus une question de css, essayez de mettre position : relative;aux points.

    et sinon il y a des bibliothèques qui permettent de faire beaucoup de graphiques de ce genre :
    https://www.chartjs.org/
    https://d3js.org/
    https://gionkunz.github.io/chartist-js/

  3. #3
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Le code sera envoyé par un arduino, donc très peu de place en mémoire

    Je vais regarder comment ils procèdent

    Merci

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    certaines bibliothèques proposent l'utilisation en tant que ressources externes comme là par exemple :
    https://www.chartjs.org/docs/latest/...tallation.html

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    Citation Envoyé par mathieu
    j'ai l'impression que c'est plus une question de css, essayez de mettre position : relative;aux points.
    c'est effectivement un soucis avec le positionnement des élements donc CSS.

    La règle, en raccourci :
    Les éléments en position:absolute sont positionnés par rapport à leur ancêtre le plus proche qui est positionné.
    dans ton cas c'est par rapport au viewport attendu qu'aucun ancêtre n'est positionné.
    Il te faut donc mettre ton élément <div id="graphe"> en [Edit] position:absolute position:relative.

    J'en profite pour reprendre ton HTML/CSS :
    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
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <title>Infos Maison</title>
    <style>
    body {
      background-color: #5DADE2;
    }
    h1 {
      text-align: center;
    }
    #graphe {
      position: relative;
      width: 100%;
      height: 300px;
      border: 1px solid #000;
      background-color: #FFF;
    }
    .cercle {
      display: block;
      position: absolute;
      width: 3px;
      height: 3px;
      border-radius: 20px;
    }
    .voie0 {
      background: #008000;
    }
    .voie1 {
      background: #00F;
    }
    </style>
    </head>
    <body>
      <h1>Graphique</h1>
      <div id="graphe"></div>
    <script>
      // ici ton code
    </script>
    </body>
    </html>

  6. #6
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    petite rectification

    Les éléments en position:absolute sont positionnés par rapport à leur ancêtre le plus proche qui est positionné en relative
    Plus vite encore plus vite toujours plus vite.

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    petite rectification
    Grosse en fait ...

    Peut-être aurais-je du me relire plus attentivement, d'autant que dans le code fourni j'écris bien position:relative, mauvais copier/coller, je corrige.

    Pour être plus précis, concernant l'ancêtre le plus proche qui est positionné, il n'y a pas que la position:relative qui fonctionne, en fait toutes sauf la position static.

    Effectivement les positions relative,absolute,fixed et sticky font l'affaire.

    A noter que le fait de mettre une propriété transform, perspective différente de none sur un ancêtre fonctionne également en constituant le bloc englobant, le fameux référent, c'est pour cette raison que j'ai indiqué « La règle, en raccourci »

    Ceci étant, j'ai aussi oublié de préciser que, la solution proposée par mathieu d'ajouter la position:relative aux points, sans rien changer d'autre, devrait également fonctionner.

  8. #8
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Super merci

    Avec : position:relative ça marche. Merci pour la précision
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #graphe {
    				width: 100%;
    				height : 600px;
    				border : 50px;
    				border: 1px solid black;
    				background-color: white;
    				position:relative;
    			}

    J'ai tout recodé pour gérer plein écran mais la c'est beaucoup mieux

    Merci à tous

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

Discussions similaires

  1. positionnement lien dans une div "extensible"
    Par Ceddoc dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 28/04/2011, 15h30
  2. positionner image dans une div ?
    Par ouldfella dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 29/11/2010, 10h20
  3. Positionner JFileChooser dans une fenêtre
    Par stounouslous dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/03/2007, 17h26
  4. [Debutant] Ouvrir un lien dans une fenetre parente.
    Par Manupong dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/12/2006, 10h00
  5. [SYBASE]Libérer espace libre dans une base de données ?
    Par le_parrain dans le forum Sybase
    Réponses: 3
    Dernier message: 14/05/2004, 09h36

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