2013-03-14 11 views
9

Używam "border-box box model" w moich ostatnich projektach. Ma to wiele zalet, których nie wyjaśnię tutaj. Ale możesz przeczytać o tym tutaj: Border-box in css-tricksKorzystając z box-sizing: border-box z Twitter Bootstrap 2.x, możemy to zrobić z łatwością bez łamania wszystkiego?

Teraz zaczynam większy projekt i zdecydowaliśmy, że twitter bootstrap będzie dobrym rozwiązaniem dla naszych potrzeb. Zastanawiałem się, czy da się to zrobić "na granicy", nie łamiąc wszystkiego. Czy ktokolwiek próbował tego i jakie są/byłyby konsekwencje? Zbyt wiele regulacji? prawdziwa poprawa?

Dziękuję

+0

Powinieneś rzucić okiem na ten http://stackoverflow.com/questions/8793876/twitter-bootstrap-borders – agriboz

+0

dzięki, że znałem ten, ale oni tak naprawdę nie odpowiadają na moje pytanie, które jest bardziej jak * bootstrap * { box-sizing: border-box} (tutaj pseudo-kod) – Amida

+2

bootstrap nie gra dobrze z border-box, jeśli chodzi o pola tekstowe. wyglądają ... zgniecionymi i złymi. –

Odpowiedz

15

Tak.

Oto mixin można użyć w Bootstrap. Automatycznie doda wszystkie prefiksy dostawców.

*, *:before, *:after { 
    .box-sizing(border-box); 
} 

input { 
    .box-sizing(content-box); 
} 

Dane wejściowe nadal wymagają zawartości, w przeciwnym razie będą za małe.

+1

Jedyny problem dotyczy elementów wejściowych, które wyglądają na "ściśnięte" po tym, więc dodałbym również coś takiego: input {.box-sizing (content-box); } – isapir

+0

Tak! Też musiałem to zrobić, dziękuję za wzmiankę o tym. –

+0

Myślę, że powinieneś jeszcze dodać rozmiar -moz-box. W ostatniej wersji firefox (21) w Mac OS, nie działał bez niego. – Amida

7

To ogromnie ułatwia pracę z płynem/reagujących wzorów: istnieją pewne skomplikowane układy i przypadki, w których wymagane jest zgodny rozstaw że byłoby prawie niemożliwe bez użycia border-box.

I niedawno używany ten (FTW!):

*, *:after, *:before { 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 

na dość dużym terenie, a okazało się, że rzeczywiście rozwiązać wiele problemów. Jeśli potrzebujesz wsparcia dla IE7, moim podejściem było udostępnienie tej przeglądarce wersji o stałej szerokości strony i użycie this polyfill tylko w razie potrzeby. *

Naprawdę nie znalazłem żadnych wad - ulga to móc aby określić dwie kolumny o szerokości 50%, dodaj padding i wiedz, że to po prostu zadziała. W miejscach, w których możesz polegać na standardzie box-model, możesz zawsze powrócić do niego w przypadku określonych elementów.

Bootstrap specyficzne

Odnośnie korzystania Bootstrap konkretnie, można uruchomić w niektórych kwestiach - Proponuję testowanie go. Anegdotycznie, dodanie powyższego CSS do Bootstrap homepage nie wykazało żadnych problemów.

Główny system siatki wbudowane Bootstrap 2.x korzysta float i margin, więc zmieniając box-model będą miały żadnego wpływu na to (będzie tylko daje możliwość dodawania padding bezpośrednio do kolumn).

Bootstrap 3 przenosi się do podejścia mobilnego (i całkowicie upuszczając wsparcie dla IE7). Obejmuje to:

[A] Nowy system pojedynczej siatki (nadal używa .row) wykorzystuje szerokości procentowe, wypełnienie i box-sizing: border-box zamiast szerokości i marginesów pikseli.

Dlatego wyraźnie wierzą w korzyści płynące z zastosowania tego podejścia.

* Moje myślenie było to, że ja już opierając się na podkładki HTML w modernizr tak, że przeglądarka jest już uzależnione od JS na jego planie. Z SASS do przechowywania szerokości jako zmiennych, które działało dość sprawnie. To powiedziawszy, jeśli wykorzystanie dla starego IE jest wyższe dla każdego konkretnego projektu, to podejście staje się mniej odpowiednie.

+0

To zabawne, dodałem to również do strony startowej, ale nic się naprawdę nie stało, więc potrzebuję bardziej szczegółowych informacji zwrotnych niż tylko to. Niezły post, ale poczekam, by sprawdzić, czy ktoś może wypowiedzieć się na temat prawdziwej sprawy. :) – Amida

+0

Prawie na pewno okaże się, że się mylę, ale wątpię, czy ktoś zrobił dokładnie to, o co prosisz - nie jestem pewien, dlaczego? Jeśli korzystasz z Bootstrap dla layoutu itp., Jakie korzyści dałaby zmiana "box-model" w tym momencie? tj. zaletą tego podejścia jest upraszczanie elementów układu/normalizujących formularzy itp., ale to wszystko zostało zrobione dla ciebie. – CherryFlavourPez

+0

Po prostu mam dość używania wewnętrznego elementu div za każdym razem, gdy potrzebuję dopełnienia w kolumnach lub wykonywania pewnych obliczeń, takich jak usuwanie pikseli marginesów w celu dodania obramowania lub wypełnienia bez łamania siatki. Czuję, że model border-box jest do zrobienia, ale bootstrap 3 jeszcze nie istnieje. – Amida

Powiązane problemy