Page d'accueil » Codage » Un coup d'oeil dans CSS3 Box-sizing

    Un coup d'oeil dans CSS3 Box-sizing

    Cet article fait partie de notre "Série de tutoriels HTML5 / CSS3" - dédié à vous aider à faire de vous un meilleur concepteur et / ou développeur. Cliquez ici pour voir plus d'articles de la même série.

    Il n'y a pas si longtemps, lorsque nous créons un boîte dans une page Web, disons avec un div, nous spécifions 100px pour la largeur et la hauteur, suivi de rembourrage pour 10px et des frontières d'environ 10px ainsi que.

     div width: 100px; hauteur: 100px; rembourrage: 10px; bordure: 10px solide #eaeaea;  

    Les navigateurs étendront la taille de la boîte à 140 pixels, où 140 pixels de la largeur / hauteur totale sont constitués de l’ajout du rembourrage et le les frontières comme suit; 100px [largeur / hauteur] + (2 x 10px [remplissage]) + (2 x 10px [bordure]).

    Cependant, parfois, ce résultat n’est pas ce à quoi nous nous attendons. Parfois, il faut que la boîte soit toujours 100px indépendamment du remplissage ou des frontières ajoutées.

    Pour résoudre un tel problème récurrent lors de la création d’une mise en page Web, nous pouvons utiliser le CSS3. taille de la boîte propriété pour contrôler la Modèle de boîte CSS devrait fonctionner dans les navigateurs.

    Utilisation de la taille de la boîte

    le taille de la boîte propriété a deux options de valeur, d’abord la contenu-box; qui est la valeur par défaut, lors de l'utilisation de cette valeur, le modèle de boîte se comportera comme nous l'avons décrit ci-dessus.

    Et le second est boîte à bordure, où la taille de la boîte sera calculée en soustrayant la taille du contenu spécifié avec le rembourrage et les bordures ajoutées.

     div width: 100px; hauteur: 100px; rembourrage: 10px; bordure: 10px solide #eaeaea; taille de la boîte: boîte-frontière; -moz-box-dimensionnement: border-box; / * Firefox 1-3 * / -webkit-box-sizing: border-box; / * Safari * / 

    Par exemple, lorsque nous avons une boîte comme celle décrite ci-dessus (100px carrés avec 10 pixels pour le remplissage et les bordures), la taille du contenu diminue à 60px, et la taille totale de la boîte reste 100px, où l'équation de la soustraction peut être décrite comme suit; 100px [largeur / hauteur] - ((2 x 10px [remplissage]) + (2 x 10px [bordure]))).

    • Démo
    • Source de téléchargement

    Prise en charge du navigateur

    le taille de la boîte la propriété est supporté par tous les navigateurs; Firefox 3.6+, Safari 3, Opera 8.5+ et Internet Explorer 8 et supérieur.

    Donc, si vous savez que la plupart de vos visiteurs n'utiliseront pas les versions Internet Explorer inférieures à 8, vous pouvez utiliser cette recommandation utile (merci à Paul Irish).

     * box-sizing: border-box; -moz-box-dimensionnement: border-box; / * Firefox 1-3 * / -webkit-box-sizing: border-box; / * Safari * / 

    L'extrait ci-dessus appliquera le taille de la boîte propriété de tous les éléments de votre page Web.

    Exemple

    Dans cette section, nous allons vous montrer un exemple concret sur la façon dont nous pouvons utiliser cette taille de la boîte propriété. Nous allons créer une navigation simple, basée sur le balisage HTML ci-dessous, avec cinq menus de liens..

      

    Ensuite, nous ajouterons quelques styles décoratifs; tels que, définissez la navigation largeur fixe pour 500px et la largeur du lien pour 100px chacun, insérez ensuite l'élément de la liste et indiquez des arrière-plans différents pour chaque menu de liens, afin de voir la différence entre eux.

     nav largeur: 500px; marge: 50px auto 0; hauteur: 50px;  nav ul padding: 0; marge: 0;  nav li float: left;  nav a display: inline-block; largeur: 100px; hauteur: 100%; couleur de fond: #ccc; couleur: # 555; texte-décoration: aucun; font-family: Arial, sans-serif; taille de police: 12 pt; hauteur de trait: 300%; text-align: center;  nav a display: inline-block; largeur: 100px; hauteur: 100%; couleur: # 555; texte-décoration: aucun; font-family: Arial, sans-serif;  nav li: n-enfant (1) a background-color: # E9E9E9; frontière gauche: 0;  nav li: n-enfant (2) a background-color: # E4E4E4;  nav li: n-enfant (3) a background-color: #DFDFDF;  nav li: n-enfant (4) a background-color: # D9D9D9;  nav li: n-enfant (5) a background-color: # D4D4D4; frontière droite: 0;  

    À ce stade, notre navigation semble normale.

    Cependant, le problème viendra lorsque nous ajouterons des bordures gauche ou droite au menu des liens..

     nav a border-left: 1px solid #aaa; border-right: 1px solid # f3f3f3;  

    Le menu débordera vers le bas, la largeur du lien n’étant plus 100px. C'est maintenant 102px, provoquant la largeur totale de la navigation pour être 10px plus longtemps que nous avons spécifié ci-dessus (500px).

    Pour surmonter ce problème, nous devons appliquer les taille de la boîte propriété, comme suit:

     nav a border-left: 1px solid #aaa; border-right: 1px solid # f3f3f3; taille de la boîte: boîte-frontière; -moz-box-dimensionnement: border-box; -webkit-box-dimensionnement: border-box;  
    • Démo
    • Source de téléchargement

    Lectures complémentaires

    Et enfin, si vous êtes du type aventureux et que vous souhaitez approfondir ce sujet, nous avons rassemblé pour vous quelques références sélectionnées:

    • Comprendre le modèle CSS Box - Tech Republic
    • Bug de taille de boîte dans Firefox - BugZilla
    • Taille de boîte FTW - Paul Irish