HTML/CSS : supprimer le défilement vertical avec hauteur : 100 % ;

Je crée deux colonnes que je veux remplir la page. Très simple. Cependant, j'obtiens une très légère barre de défilement verticale. Réglage margin: 0et padding: 0sur le htmlet bodyne l'a pas réparé.

J'ai regardé overflow: hiddenmais je n'aime pas. J'ai également cherché à placer une clear:bothdiv en bas, mais cela n'a rien fait. J'ai cherché à utiliser min-height, mais je n'arrive pas à le faire fonctionner correctement.

J'ai deux questions:

  • Pourquoi cette barre de défilement verticale apparaît-elle ?

  • Comment puis-je supprimer la barre de défilement verticale ?

  • Exemple en direct : http://jsfiddle.net/XrYYA/

    HTML :

    <body>
    <div id="palette">Palette</div>
    <div id="canvas">Content</div>
    </body>

    CSS :

    html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    }
    #palette {
    float: left;
    width: 300px;
    height: 100%;
    border: 1px solid black;
    }
    #canvas {
    margin-left: 300px;
    height: 100%;
    border: 1px solid blue;
    }


    Solution du problème

    C'est à cause des bordures de 1px de chaque côté de l'élément.

    100% + bordure(s) 2px!= 100%.

    Vous pouvez utiliser box-sizingpour inclure les bordures dans la hauteur de l'élément.

    Exemple jsFiddle

    div {
    box-sizing:border-box;
    -moz-box-sizing:border-box;
    -webkit-box-sizing:border-box;
    }

    Alternativement, vous pouvez utiliser calc()pour soustraire le 2px.

    height: calc(100% - 2px);

    Exemple jsFiddle

    Commentaires

    Posts les plus consultés de ce blog

    Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

    Détecter les appuis sur les touches fléchées en JavaScript

    Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"