Główna » Kodowanie » Spojrzenie w rozmiar CSS3

    Spojrzenie w rozmiar CSS3

    Ten artykuł jest częścią naszego „Seria samouczków HTML5 / CSS3” - dedykowane, aby pomóc Ci stać się lepszym projektantem i / lub deweloperem. Kliknij tutaj aby zobaczyć więcej artykułów z tej samej serii.

    Nie tak dawno temu, kiedy tworzymy pudełko na stronie internetowej, powiedzmy za pomocą div, określamy 100px dla szerokości i wysokości, a następnie wyściółka dla 10px i granice około 10px także.

     div width: 100px; wysokość: 100px; padding: 10px; granica: 10px bryła #eaeaea;  

    Przeglądarki zwiększą rozmiar pudełka do 140px, gdzie ta suma 140px całkowitej szerokości / wysokości składa się z dodania wyściółka i granice następująco; 100px [szerokość / wysokość] + (2 x 10px [padding]) + (2 x 10px [obramowanie]).

    Czasami jednak ten wynik nie jest taki, jakiego oczekujemy. Czasami potrzebujemy pudełka, aby zawsze było 100px niezależnie od dopełnienia lub dodanych granic.

    Aby przezwyciężyć taki powtarzający się problem podczas tworzenia układu strony internetowej, możemy użyć CSS3 wielkość pudełka właściwość do kontrolowania, jak Model skrzynki CSS powinien działać w przeglądarkach.

    Korzystanie z rozmiaru pudełka

    The wielkość pudełka właściwość ma dwie opcje wartości, najpierw pole zawartości; która jest wartością domyślną, przy użyciu tej wartości model skrzynki będzie zachowywał się tak, jak to opisano powyżej.

    A drugi to obramowanie, gdzie zostanie obliczony rozmiar pudełka odejmując określony rozmiar zawartości z dopełnieniem i dodanymi granicami.

     div width: 100px; wysokość: 100px; padding: 10px; granica: 10px bryła #eaeaea; wielkość pudełka: obramowanie; -moz-box-sizing: obramowanie; / * Firefox 1-3 * / -webkit-box-sizing: border-box; / * Safari * / 

    Na przykład, gdy mamy pudełko podobne do tego, które opisaliśmy powyżej (kwadrat 100px z 10 pikslami dla wypełnienia i granic), rozmiar zawartości zmniejszy się do 60px, a całkowita wielkość pudełka pozostaje 100px, gdzie równanie odejmowania można opisać w następujący sposób; 100px [szerokość / wysokość] - ((2 x 10px [padding]) + (2 x 10px [obramowanie])).

    • Próbny
    • Pobierz źródło

    Obsługa przeglądarki

    The wielkość pudełka nieruchomość jest obsługiwane we wszystkich przeglądarkach; Firefox 3.6+, Safari 3, Opera 8.5+ i Internet Explorer 8 i nowsze wersje.

    Jeśli więc wiesz, że większość użytkowników nie będzie korzystać z wersji Internet Explorer poniżej 8, możesz skorzystać z tej przydatnej rekomendacji (dzięki Paulowi Irlandi).

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

    Powyższy fragment zastosuje wielkość pudełka własność do wszystkich elementów na twojej stronie internetowej.

    Przykład

    W tej sekcji pokażemy Ci prawdziwy przykład, w jaki sposób możemy to wykorzystać wielkość pudełka własność. Stworzymy prostą nawigację, opartą na znaczniku HTML poniżej, z pięcioma linkami w menu.

      

    Następnie dodamy kilka stylów dekoracyjnych; na przykład ustaw nawigację ustal szerokość dla 500px i szerokość łącza dla 100px każdy, następnie wstaw element listy i podaj różne tła dla każdego menu łącza, aby zobaczyć różnicę między nimi.

     nav width: 500px; margin: 50px auto 0; wysokość: 50px;  nav ul padding: 0; margines: 0;  nav li float: left;  nav a display: inline-block; szerokość: 100px; wysokość: 100%; background-color: #ccc; kolor: # 555; dekoracja tekstowa: brak; font-family: Arial, sans-serif; rozmiar czcionki: 12pt; wysokość linii: 300%; wyrównywanie tekstu: środek;  nav a display: inline-block; szerokość: 100px; wysokość: 100%; kolor: # 555; dekoracja tekstowa: brak; font-family: Arial, sans-serif;  nav li: nth-child (1) a background-color: # E9E9E9; border-left: 0;  nav li: nth-child (2) a background-color: # E4E4E4;  nav li: nth-child (3) a background-color: #DFDFDF;  nav li: nth-child (4) a background-color: # D9D9D9;  nav li: nth-child (5) a background-color: # D4D4D4; border-right: 0;  

    W tym momencie nasza nawigacja wygląda normalnie.

    Jednak problem pojawi się, gdy dodamy lewą lub prawą granicę do menu łącza.

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

    Menu zostanie przepełnione do dołu, ponieważ szerokość łącza nie jest już dostępna 100px. To jest teraz 102px, powodując całkowitą szerokość nawigacji 10px dłużej niż określiliśmy powyżej (500px).

    Aby rozwiązać ten problem, musimy zastosować wielkość pudełka nieruchomości w następujący sposób:

     nav a border-left: 1px solid #aaa; border-right: 1px solid # f3f3f3; wielkość pudełka: obramowanie; -moz-box-sizing: obramowanie; -webkit-box-sizing: border-box;  
    • Próbny
    • Pobierz źródło

    Dalsze czytanie

    I wreszcie, jeśli jesteś typem śmiałego i chcesz zagłębić się w ten temat, przygotowaliśmy dla Ciebie kilka wybranych referencji:

    • Zrozumienie modelu pudełkowego CSS - Tech Republic
    • Błąd wielkości pudełka w Firefoksie - BugZilla
    • Wielkość pudełka FTW - Paul Irish