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 :

Hauteur de div automatique selon la copie d'écran proposée


Sujet :

JavaScript

Vue hybride

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

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Par défaut Hauteur de div automatique selon la copie d'écran proposée
    Bonjour,
    j'ai posté la même question dans CSS,
    mais peut-être que la solution est du côté javascript ...

    selon la copie d'écran suivante :

    Je voudrais que la div qui est entourée d'un liseret rouge soit taillée automatiquement à l'espace restant (elle a pour le moment une hauteur fixe)
    et que sont ascenseur vertical s'allume si nécessaire.

    Là, on voit qu'il reste de l'espace libre, blanc, avant le bas du navigateur.

    Les div qui sont avant la dernière div (entourée d'un liseret rouge) n'ont pas de hauteur connue.
    =>Leur hauteur augmente en fonction du contenu, lignes de boutons ou lignes de champs de formulaire (le formulaire bleu).

    quelqu'un saurait-il me donner le code javascript permettant de connaitre l'espace libre sous la div (div_boutons_resultat) qui contient "modifier supprimer interlocuteurs actions commerciales"

    ce qui me permettrait de coder la hauteur de la dernière div "en live"

    merci de me donner tout le nécessaire :


    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 {
    height				: 100%;
    }
     
    body {
    height				: 100%;
    margin: 0;
    padding: 0;
    }
     
    #div_generale { /* celle qui englobe toute la page */
    background-color : burlywood; /* marron clair */
    /* code ... si nécessaire ... */
    }
     
    #div_ajouter_rechercher { /* zone bleu-clair */
    background-color : lightblue;
    /* code ... si nécessaire ... */
    }
     
    #div_boutons_resultat { /* boutons dans la zone vert-clair */
    background-color : lightgreen;
    /* code ... si nécessaire ... */
    }
     
    #div_resultat { /* div contenant la liste des enregistrements trouvés */
    background-color : lightgreen;
    overflow-y : auto;
    /* code ... si nécessaire ... */
    }
    JAVASCRIPT :
    ?!?!?! là je sais pas ce qu'il faut mettre ?!?!?!

    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
    <html>
     
      <head>
      <!-- appel du CSS et du code javascript -->
      </head>
     
      <body>
     
        <div id="div_generale">
     
          <div id="div_ajouter_rechercher">
          </div>
     
          <div id="div_boutons_resultat">
          </div>
     
          <div id="div_resultat" height="exécution du code javascript">
          </div>
     
        </div>
     
      </body>
      </html>


    mille merci pour votre aide !
    Nils.

    (je vois que quelqu'un est passé par là pour ajouter quelques balises, merci !)
    Images attachées Images attachées  

  2. #2
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    en css un truc du genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    height:auto;
    top:0;
    (ou alors un heigh : 100% ??)

    sinon tu devras p-ê aussi jouer avec les "position:relative" ou "position:absolute" et éventuellement repositionner le "top".


    et comme dis sur le sujet css, vérifie que tes éléments conteneur aient déjà un height de 100%.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Par défaut
    je viens de corriger ma question,
    j'ai bien dans le CSS un html et un body à 100%

    par contre je ne comprends pas bien ta proposition
    peux-tu détailler un peu plus ?

    éventuellement, tu peux faire un copier/coller du code proposé dans la question et y ajouter ton idée ...

    merci pour ton aide

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par nilsb13
    j'ai bien dans le CSS un html et un body à 100%
    Ca n'a aucun sens
    En CSS, les hauteurs en pourcentage correspondent à un rapport par rapport à l'élément conteneur, mais les balises <html> et <body> n'ont pas de conteneur à partir desquels définir ce pourcentage.
    C'est un peu comme si, au supermarché, les prix étaient annoncés comme "Prix : 90%". C'est joli, mais 90% de quoi ?

    Dans ton cas, il faut récupérer la taille de la fenêtre, la taille des différents éléments affichés (et les additionner) puis affecter à la dernière div la différence entre les deux.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Par défaut
    Merci Bovino pour ton éclaircicement très clair !

    ok, je supprime les 100% qui ne servent à rien !

    quelqu'un sait coder en JS ce que Bovino propose :
    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
    1) Récupérer la hauteur de la fenêtre
    $hauteur_fenêtre = code_javascript_qui_trouve_la_hauteur_de_la_fenêtre;
     
    2) Récupérer la hauteur des différents éléments affichés
    $hauteur_div_menu = code_javascript_qui_trouve_la_hauteur_de_la_div_menu;
    $hauteur_div_ajouter_rechercher = code_javascript_qui_trouve_la_hauteur_de_la_div_ajouter_rechercher;
    $hauteur_div_boutons_résultat = code_javascript_qui_trouve_la_hauteur_de_la_div_boutons_résultat;
     
    3) Additionner la hauteur des différents éléments affichés
    $hauteur_divs_sans_scroll = $hauteur_div_menu + $hauteur_div_ajouter_rechercher + $hauteur_div_boutons_résultat
     
    4) Soustraire la hauteur des éléments à la hauteur de la fenêtre
    $hauteur_restante = $hauteur_fenêtre - $hauteur_divs_sans_scroll;
     
    4) Affecter à la dernière div la différence entre les deux.
    $hauteur_div_avec_scroll = $hauteur_restante
     
    5) affecter cette valeur dans le CSS
    #div_resultat {
    height : codeJS[$hauteur_div_avec_scroll]px; /* ou % ? */
    background-color : lightgreen;
    overflow-y : auto;
    }
    merci,
    car je n'y connais vraiment rien en JS,
    je sais, c'est une tare !!!, mais bon, pas encore eu le courage de m'y attaquer !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Par défaut
    En CSS, les hauteurs en pourcentage correspondent à un rapport par rapport à l'élément conteneur, mais les balises <html> et <body> n'ont pas de conteneur à partir desquels définir ce pourcentage.
    donc, si je comprends bien :
    la fenêtre du navigateur n'est pas le conteneur principal,
    c'est bien <html> qui est le conteneur principal donc (?)

    dans ce cas, <body>, contenu dans <html>, peut-il être à 100% ?

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

Discussions similaires

  1. hauteur de div automatique
    Par aFauchere dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 18/01/2012, 12h24
  2. Hauteur du div ne s'augmente pas selon le nombre des annonces
    Par simotaqi dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 02/04/2010, 23h19
  3. hauteur de div automatique en fonction de l'espace libre
    Par boutmos dans le forum Mise en page CSS
    Réponses: 18
    Dernier message: 30/12/2008, 14h36
  4. hauteur <div> automatique par rapport à un autre <div>
    Par arnaud_verlaine dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 08/05/2008, 19h38
  5. Problème de hauteur de div et pied de page
    Par Bishop dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 08/03/2005, 15h30

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