Migruję moje motywy Bootstrap z wersji 2.3.2 do wersji 3.0.0 i zauważyłem, że wiele wymiarów jest obliczanych inaczej, ze względu na następujące style w pliku bootstrap.css.
*,
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Czy ktoś może wyjaśnić, dlaczego Bootstrap zmienia rozmiar wszystkich elementów na border-box? Podejrzewam, że ma to związek z tym, że nowy system siatki jest oparty na procentach, ale powyższy selektor dotyczy oczywiście nie tylko elementów siatki.
Wydaje się trochę radykalne imho :-)
Czy ktoś chce dać wgląd?
css
twitter-bootstrap
twitter-bootstrap-3
boxsizer
Alexander Rechsteiner
źródło
źródło
*:before
i*:after
są potrzebne do tego modelu również zastosowanie do skrzynki:before
i:after
pseudo-elementów.html { box-sizing: border-box; } *, *:before, *:after { box-sizing: inherit; }
Odpowiedzi:
Informacje o wersji mówią: ( http://blog.getbootstrap.com/2013/08/19/bootstrap-3-released/ )
Osobiście uważam, że większość korzyści odnosi system gridowy. W Bootstrapie Twittera wszystkie siatki są płynne. Kolumny definiuje się jako procent całkowitej szerokości. Ale rynna ma stałą szerokość w pikselach. Domyślnie dopełnienie 15px po obu stronach kolumny. Połączenie szerokości w pikselach i procentach może być złożone. Dzięki
border-box
temu obliczenie jest łatwe, ponieważborder-box
wartość (w przeciwieństwie do domyślnej wartości pola treści) sprawia, że ostateczna renderowana ramka ma deklarowaną szerokość, a wszelkie obramowanie i wypełnienie wycięte wewnątrz ramki. ( http://css-tricks.com/box-sizing/ )Przeczytaj również: http://www.paulirish.com/2012/box-sizing-border-box-ftw/
źródło
content-box
. Teraz masz coś, co wynosi 100% + 2 piksele. Dziękiborder-box
, nie ma tego problemu, jego nadal w 100%.