Úvodná » kódovanie » Pozrite sa do veľkosti CSS3 boxu

    Pozrite sa do veľkosti CSS3 boxu

    Tento článok je súčasťou nášho "HTML5 / CSS3 Tutoriály séria" - ktorá vám pomôže urobiť z vás lepšieho dizajnéra a / alebo vývojára. Kliknite tu zobraziť ďalšie články z rovnakej série.

    Nie tak dávno, keď sme vytvorili box na webovej stránke, povedzme s div, špecifikujeme 100px pre šírku i výšku, za ktorými nasleduje vypchávka pre 10px a hranice okolo 10px tiež.

     div šírka: 100px; výška: 100px; polstrovanie: 10px; hranica: 10px solid #eaeaea;  

    Prehliadače rozširujú veľkosť súboru na 140 pixelov, pričom táto suma celkovej šírky / výšky 140px pozostáva z pridania vypchávka a hranice nasledovne; 100px [šírka / výška] + (2 x 10px [polstrovanie]) + (2 x 10px [okraj]).

    Tento výsledok však niekedy nie je to, čo očakávame. Niekedy potrebujeme, aby bol box vždycky 100px bez ohľadu na polstrovanie alebo pridanú hranicu.

    Aby sme prekonali takýto opakujúci sa problém pri vytváraní rozloženia webovej stránky, môžeme použiť CSS3 box-sizing vlastnosť na kontrolu, ako Model CSS box by mali pracovať v prehliadačoch.

    Použitie veľkosti boxu

    box-sizing Vlastnosť má dve možnosti, najprv content-box; čo je predvolená hodnota, pri použití tejto hodnoty sa model boxu bude správať tak, ako sme opísali vyššie.

    A druhá je border-box, kde bude vypočítaná veľkosť krabice odstránením zadanej veľkosti obsahu s polstrovaním a hranicami pridané.

     div šírka: 100px; výška: 100px; polstrovanie: 10px; hranica: 10px solid #eaeaea; rozmery v políčku: okrajové pole; -moz-box-veľkosť: okraj-box; / * Firefox 1-3 * / -webkit-box-size: box-border; / * Safari * / 

    Napríklad, keď máme krabicu, ako sme opísali vyššie (100px square s 10 pixelmi pre polstrovanie a hranice), veľkosť obsahu sa zníži na 60 pixelov, a zostáva celková veľkosť krabice 100px, kde rovnica odčítania môže byť opísaná nasledovne; 100px [šírka / výška] - ((2 x 10px [výplň]) + (2 x 10px [okraj])).

    • demonštrácie
    • Stiahnuť zdroj

    Podpora prehliadača

    box-sizing nehnuteľnosť je podporované vo všetkých prehliadačoch; Firefox 3.6+, Safari 3, Opera 8.5+ a Internet Explorer 8 a vyššie.

    Ak viete, že väčšina návštevníkov nebude používať verzie Internet Explorer pod 8, môžete použiť toto užitočné odporúčanie (vďaka Paulovi Irishovi).

     * box-size: border-box; -moz-box-veľkosť: okraj-box; / * Firefox 1-3 * / -webkit-box-size: box-border; / * Safari * / 

    Hore uvedený úryvok použije box-sizing vlastnosť na všetky prvky na vašej webovej stránke.

    príklad

    V tejto časti vám ukážeme skutočný príklad, ako môžeme využiť túto skutočnosť box-sizing vlastnosť. Vytvoríme jednoduchú navigáciu založenú na značke HTML nižšie s piatimi odkazmi v nej.

      

    Potom pridáme niektoré dekoratívne štýly; ako napríklad nastaviť navigáciu fixná šírka pre 500px a šírka odkazu na 100 px, potom zarovnajte položku zoznamu a dajte rôzne pozadia pre každé menu odkazov, aby ste mohli vidieť rozdiel medzi nimi.

     nav šírka: 500px; okraj: 50 pixelov auto 0; výška: 50px;  nav ul padding: 0; rozpätie: 0;  nav li float: vľavo;  nav a zobrazenie: inline-block; šírka: 100px; výška: 100%; farba pozadia: #ccc; farba: # 555; textová výzdoba: žiadne; font-family: Arial, sans-serif; veľkosť písma: 12pt; výška výšky: 300%; text-align: center;  nav a zobrazenie: inline-block; šírka: 100px; výška: 100%; farba: # 555; textová výzdoba: žiadne; font-family: Arial, sans-serif;  nav li: nth-child (1) a farba pozadia: # E9E9E9; border-left: 0;  nav li: nth-child (2) a farba pozadia: # E4E4E4;  nav li: nth-dieťa (3) a background-color: #DFDFDF;  nav li: nth-child (4) a farba pozadia: # D9D9D9;  nav li: n-dieťa (5) a farba pozadia: # D4D4D4; okraj-doprava: 0;  

    V tejto chvíli naša navigácia vyzerá normálne.

    Problém však príde, keď do ponuky prepojenia pridáme ľavý alebo pravý okraj.

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

    Ponuka pretečie dole, pretože šírka odkazu už nie je 100px. Je teraz 102px, čo spôsobí celkovú šírku navigácie 10px dlhšie, ako sme už uviedli (500px).

    Ak chcete tento problém prekonať, musíme ho použiť box-sizing majetku:

     nav a border-left: 1px solid #aaa; border-right: 1px solid # f3f3f3; rozmery v políčku: okrajové pole; -moz-box-veľkosť: okraj-box; -webkit-box-size: box-border;  
    • demonštrácie
    • Stiahnuť zdroj

    Ďalšie čítanie

    A nakoniec, ak ste dobrodruhovým typom a chcete sa do tejto témy ponoriť hlbšie, sme pre vás vytvorili niekoľko vybraných referencií:

    • Pochopenie modelu CSS Box - Tech Republic
    • Chyba s veľkosťou boxov vo Firefoxe - BugZilla
    • Veľkosť boxu FTW - Paul Irish