Uczę się korzystać z Bootstrapa. Obecnie brodzę przez układy. Chociaż Bootstrap jest całkiem fajny, wszystko, co widzę, wydaje się przestarzałe. Na całe życie mam coś, co uważam za podstawowy układ, którego nie mogę zrozumieć. Mój układ wygląda następująco:
---------------------------------------------------------------------------
| | | |
| | | |
| 240px | 160px | All Remaining Width of the Window |
| | | |
| | | |
--------------------------------------------------------------------------|
Ta siatka musi zajmować całą wysokość okna. Z mojego zrozumienia potrzebuję mieszać stałe i płynne szerokości. Jednak Bootstrap 3.0 nie wydaje się już mieć klasy płynnej. Nawet gdyby tak było, nie potrafię wymyślić, jak połączyć płynne i stałe rozmiary kolumn. Czy ktoś wie, jak to zrobić w Bootstrap 3.0?
twitter-bootstrap
twitter-bootstrap-3
Node Newbie
źródło
źródło
Odpowiedzi:
Naprawdę nie ma łatwego sposobu na połączenie płynnych i stałych szerokości z Bootstrap 3. Tak ma być, ponieważ system siatki został zaprojektowany tak, aby był płynny i responsywny. Możesz spróbować coś zhakować, ale byłoby to sprzeczne z tym, co próbuje zrobić system Responsive Grid, którego celem jest sprawienie, aby układ ten przepływał przez różne typy urządzeń.
Jeśli chcesz trzymać się tego układu, rozważyłbym ułożenie strony za pomocą niestandardowego arkusza CSS i nie korzystanie z siatki.
źródło
edycja: Ponieważ wydaje się, że wiele osób chce to zrobić, napisałem krótki przewodnik z bardziej ogólnym przypadkiem użycia tutaj https://www.atlascode.com/bootstrap-fixed-width-sidebars/ . Mam nadzieję, że to pomoże.
System siatki bootstrap3 obsługuje zagnieżdżanie wierszy, co umożliwia dostosowanie rzędu głównego, aby umożliwić menu boczne o stałej szerokości.
Musisz umieścić dopełnienie po lewej stronie w wierszu głównym, a następnie mieć wiersz podrzędny, który zawiera normalne elementy układu siatki.
Oto, jak zwykle to robię http://jsfiddle.net/u9gjjebj/
html
css
źródło
position: fixed
oznacza, że podczas przewijania zawartość tej kolumny unosi się nad resztą strony. W moim przypadku naprawiłem to za pomocąposition: absolute
.lub użyj właściwości display z table-cell;
css
html
http://jsfiddle.net/DnGDz/
źródło
, becouse
display: table-cell` stało siędisplay:block
...Miałem nieco inny problem:
W rezultacie uciekłem się
float
do lewej i prawej kolumny, a następnie mogłem użyć Bootstraprow
do wykonania płynnych kolumn pomiędzy.źródło
margin
iwpadding
moim rzędzie pośrodku, ale to powinien być problem do rozwiązania. Jakie są niezamierzone konsekwencje takiego podejścia?Zaktualizowano 2018
IMO, najlepszym sposobem rozwiązania tego problemu w Bootstrap 3 byłoby użycie zapytań o media, które są wyrównane z punktami przerwania Bootstrap, tak aby używać tylko kolumn o stałej szerokości i większych ekranach, a następnie pozwolić układowi układać się responsywnie na mniejszych ekranach. W ten sposób zachowujesz responsywność ...
Working Bootstrap Fixed-Fluid Demo
Bootstrap 4 będzie miał flexbox, więc układy takie jak ten będą znacznie łatwiejsze: http://www.codeply.com/go/eAYKvDkiGw
źródło
OK, moja odpowiedź jest super fajna:
jsfiddle plac zabaw
jeśli chcesz obsługiwać wszystkie przeglądarki, użyj https://github.com/10up/flexibility
źródło
UPDATE 2014-11-14: Poniższe rozwiązanie jest zbyt stare, polecam użycie metody układu flex box. Oto przegląd: http://learnlayout.com/flexbox.html
Moje rozwiązanie
html
scss
Bez modyfikowania zbyt dużej ilości kodu układu bootstrap.
Aktualizacja (nie z OP): dodanie fragmentu kodu poniżej, aby ułatwić zrozumienie tej odpowiedzi. Ale wydaje się, że nie działa zgodnie z oczekiwaniami.
Pokaż fragment kodu
źródło
Dlaczego po prostu nie ustawić dwóch lewych kolumn na stałe z we własnym css, a następnie utworzyć nowy układ siatki z pełnymi 12 kolumnami dla pozostałej zawartości?
źródło