Homepage » Coding » Egy pillantás a CSS3 dobozba

    Egy pillantás a CSS3 dobozba

    Ez a cikk a mi része "HTML5 / CSS3 oktatóanyagok sorozat" - szentelt, hogy segítsen neked egy jobb tervező és / vagy fejlesztő. Kattints ide több cikket láthat ugyanazon sorozatból.

    Nem is olyan régen, amikor létrehoztunk egy doboz egy weboldalon, mondjuk a div, megadjuk 100px mind a szélességre, mind a magasságra, majd ezt követi párnázás mert 10px és a határok 10px is.

     div szélesség: 100px; magasság: 100px; párnázás: 10px; határ: 10px szilárd #eaeaea;  

    A böngészők a doboz méretét 140px-ra bővítik, ahol a teljes szélesség / magasság 140px-os mennyisége a hozzáadott értékből áll. párnázás és a határok alábbiak szerint; 100px [szélesség / magasság] + (2 x 10px [padding]) + (2 x 10px [határ]).

    Néha azonban ez az eredmény nem az, amit elvárunk. Néha szükségünk van a dobozra, hogy mindig legyen 100px függetlenül a párnázottságtól vagy a hozzáadott határoktól.

    Ahhoz, hogy egy ilyen ismétlődő problémát leküzdjünk a weblap elrendezésének létrehozásakor, használhatjuk a CSS3-at box-méretezése tulajdonsága annak ellenőrzésére, hogy a CSS doboz modell kell működnie a böngészőkben.

    A doboz méretezése

    A box-méretezése A tulajdonság két érték opcióval rendelkezik, először a content-box; amely az alapértelmezett érték, ha ezt az értéket használjuk, akkor a dobozmodell úgy viselkedik, ahogyan azt a fentiekben leírtuk.

    A második pedig border-box, ahol a doboz mérete kerül kiszámításra a megadott tartalom méretének csökkentésével a párnával és a határokkal együtt.

     div szélesség: 100px; magasság: 100px; párnázás: 10px; határ: 10px szilárd #eaeaea; doboz-méretezés: szegélydoboz; -moz-box-méretezés: szegélydoboz; / * Firefox 1-3 * / -webkit-box-méretezés: border-box; / * Safari * / 

    Például, ha van egy olyan doboz, mint amilyet a fentiekben leírtunk (100 px négyzet 10 pixelrel a párnázáshoz és a határokhoz), a tartalom mérete csökken 60 képpont, és a doboz teljes mérete megmarad 100px, ahol a kivonás egyenlete a következőképpen írható le; 100px [szélesség / magasság] - ((2 x 10px [padding]) + (2 x 10px [határ])).

    • Demó
    • Letöltés forrása

    Böngésző támogatás

    A box-méretezése tulajdonság minden böngészőben támogatott; Firefox 3.6+, Safari 3, Opera 8.5+ és Internet Explorer 8 és újabb.

    Tehát, ha tudod, hogy a legtöbb látogató nem fogja használni az Internet Explorer 8-as verzióját, használhatja ezt a hasznos ajánlást (köszönhetően Paul Irishnek).

     * box-méretezés: határoló doboz; -moz-box-méretezés: szegélydoboz; / * Firefox 1-3 * / -webkit-box-méretezés: border-box; / * Safari * / 

    A fenti részlet a box-méretezése a weblap összes eleméhez.

    Példa

    Ebben a fejezetben megmutatunk egy valós életmódot arról, hogyan tudjuk ezt kihasználni box-méretezése ingatlan. Egy egyszerű navigációt fogunk létrehozni az alábbi HTML jelölés alapján, öt link menüvel.

      

    Ezután hozzáadunk néhány dekoratív stílust; állítsa be a navigációt rögzítse a szélességet 500px és a link szélessége 100px, majd beírja a listaelemet, és adjon meg különböző háttereket minden egyes linkmenühez, így láthatja a különbséget.

     nav szélesség: 500px; margin: 50px auto 0; magasság: 50px;  nav ul padding: 0; margin: 0;  nav li float: balra;  nav a kijelző: inline-block; szélesség: 100px; magasság: 100%; háttérszín: #ccc; szín: # 555; szöveg-dekoráció: nincs; font-család: Arial, sans-serif; betűméret: 12pt; vonalmagasság: 300%; szöveg-igazítás: központ;  nav a kijelző: inline-block; szélesség: 100px; magasság: 100%; szín: # 555; szöveg-dekoráció: nincs; font-család: Arial, sans-serif;  nav li: n. gyermek (1) a háttérszín: # E9E9E9; balra: 0;  nav li: n. gyermek (2) a háttérszín: # E4E4E4;  nav li: n-gyermek (3) a háttérszín: #DFDFDF;  nav li: n. gyermek (4) a háttérszín: # D9D9D9;  nav li: n-gyermek (5) a háttérszín: # D4D4D4; jobbra: 0;  

    Ekkor navigációnk csak normálisnak tűnik.

    A probléma azonban akkor fordul elő, ha balra vagy jobbra szegélyeket adunk hozzá a link menübe.

     nav a border-left: 1px szilárd #aaa; jobbra: 1px szilárd # f3f3f3;  

    A menü túlfolyik az alsó részre, mivel a kapcsolat szélessége már nem 100px. Most van 102px, a navigáció teljes szélessége 10px hosszabb ideig, mint a fentiekben (500px).

    Ennek a problémának a leküzdéséhez alkalmazzuk a box-méretezése vagyon, az alábbiak szerint:

     nav a border-left: 1px szilárd #aaa; jobbra: 1px szilárd # f3f3f3; doboz-méretezés: szegélydoboz; -moz-box-méretezés: szegélydoboz; -webkit-box-méretezés: szegélydoboz;  
    • Demó
    • Letöltés forrása

    További irodalom

    És végül, ha a kalandvágyó típus, és mélyebbre szeretné ásni ezt a témát, összeállítottunk néhány kiválasztott referenciát Önnek:

    • A CSS Box Model - Tech Köztársaság megértése
    • Doboz méretezés hiba a Firefoxban - BugZilla
    • Box-méretezés FTW - Paul ír