Próbuję utworzyć dwukolumnowy układ na pełnej wysokości za pomocą paska startowego Twitter 3. Wygląda na to, że pasek startowy Twitter 3 nie obsługuje układów o pełnej wysokości. Co chcę robić:
+-------------------------------------------------+
| Header |
+------------+------------------------------------+
| | |
| | |
|Navigation | Content |
| | |
| | |
| | |
| | |
| | |
| | |
+------------+------------------------------------+
Jeśli zawartość rośnie, nawigacja również powinna rosnąć.
- Wysokość 100% dla każdego rodzica nie działa, ponieważ zdarza się, że treść jest w jednej linii.
- pozycja absolutna wydaje się być niewłaściwa
display: table
idisplay:table-cell
rozwiązać problem, ale to nie jest elegancko
HTML:
<div class="container">
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-9"></div>
</div>
</div>
Czy istnieje sposób, aby to zrobić za pomocą domyślnych klas 3 ładowania Bootstrap ?
html
css
twitter-bootstrap
uladzimir
źródło
źródło
Odpowiedzi:
Edycja: W Bootstrap 4 klasy natywne mogą tworzyć kolumny o pełnej wysokości ( DEMO ), ponieważ zmienili system siatki na flexbox. (Czytaj dalej dla Bootstrap 3)
Natywne klasy Bootstrap 3.0 nie obsługują opisanego przez Ciebie układu, jednak możemy zintegrować niestandardowe CSS, które wykorzystują do tego celu tabele css .
Bootply demo / Codepen
Narzut:
(Odpowiedni) CSS
Powyższy kod osiągnie kolumny o pełnej wysokości (ze względu na dodane przez nas niestandardowe właściwości tabeli css) i przy stosunku 1: 3 (Nawigacja: zawartość) dla średnich szerokości ekranu i wyższych - (ze względu na domyślne klasy bootstrap: col-md -3 i col-md-9)
NB:
1) Aby nie zepsuć natywnych klas kolumn bootstrap, dodajemy kolejną klasę, jak
no-float
w znacznikach, i ustawiamy tylkodisplay:table-cell
ifloat:none
na tej klasie (w odniesieniu do samych klas kolumn).2) Jeśli chcemy użyć kodu tabeli css tylko dla określonego punktu przerwania (powiedzmy średnie szerokości ekranu i więcej), ale dla ekranów mobilnych chcemy przywrócić standardowe zachowanie bootstrap, niż możemy zawinąć nasz niestandardowy CSS w zapytanie medialne, powiedz:
Demo Codepen
Teraz w przypadku mniejszych ekranów kolumny będą zachowywać się jak domyślne kolumny ładowania początkowego (każda uzyska pełną szerokość).
3) Jeśli stosunek 1: 3 jest konieczny dla wszystkich szerokości ekranu - prawdopodobnie lepiej jest usunąć klasy col-md- * bootstrapa ze znaczników, ponieważ nie tak powinny być używane.
Demo Codepen
źródło
Możesz osiągnąć to, co chcesz, dzięki
padding-bottom: 100%; margin-bottom: -100%;
sztuczce, którą widzisz w tej skrzypce.Zmieniam trochę twój HTML, ale możesz osiągnąć ten sam wynik z własnym HTML za pomocą następującego kodu
źródło
Rozwiązanie Pure CSS
Working Fiddle
Używając tylko CSS2.1, Pracuj ze wszystkimi przeglądarkami (IE8 +), bez określania żadnej wysokości lub szerokości.
Oznacza to, że jeśli nagłówek nagle wydłuży się lub nawigacja po lewej stronie musi się powiększyć, nie musisz nic naprawiać w swoim CSS.
Całkowicie responsywny, prosty i przejrzysty oraz bardzo łatwy w zarządzaniu.
Objaśnienie: Pojemnik
div
zajmuje 100% wysokości ciała i jest podzielony na 2 sekcje. Sekcja nagłówka będzie rozciągać się do wymaganej wysokości, aHeightTaker
resztę zajmie. Jak to się osiąga? przez przesunięcie pustego elementu wzdłuż boku o wysokości 100% (użycie:before
) i podanieHeightTaker
pustego elementu na końcu z wyraźną regułą (użycie:after
). element ten nie może znajdować się w tej samej linii co element pływający, więc jest przesuwany do końca. co stanowi dokładnie 100% dokumentu.Dzięki temu przestawiamy
HeightTaker
rozpiętość na resztę wysokości pojemnika, nie podając żadnej konkretnej wysokości / marginesu.w środku
HeightTaker
budujemy normalny układ zmiennoprzecinkowy (w celu uzyskania wyświetlania podobnego do kolumny) z niewielką zmianą .. mamyWrapper
element, który jest potrzebny do100%
wysokości.Aktualizacja
Oto prezentacja z klasami Bootstrap. (Właśnie dodałem jeden div do twojego układu)
źródło
Myślałem o subtelnej zmianie, która nie zmienia domyślnego zachowania ładowania początkowego. I mogę go używać tylko wtedy, gdy go potrzebuję:
więc mogę go użyć w następujący sposób:
źródło
Według mojej wiedzy możesz wykonać do 5 metod, aby to osiągnąć:
Bootstrap: Nie mam z tym dużego doświadczenia, ale nie sądzę, że zapewniają do tego style.
źródło
Nowoczesne i bardzo proste rozwiązanie:
HTML:
CSS:
źródło
Czyste rozwiązanie CSS jest dość łatwe i działa jak urocza przeglądarka.
Po prostu dodajesz duże wypełnienie i równie duży ujemny margines do kolumn nawigacji i treści, a następnie zawijasz ich rząd w klasie z ukrytym przepełnieniem.
Widok na żywo
Edytuj widok
HTML
CSS
Powodzenia!
źródło
Rozwiązanie można osiągnąć na dwa sposoby
Klasy używane do uzyskania powyższego rozwiązania nie są dostępne w bootstrap 3. display: table i display: table-cell są podane, ale tylko przy użyciu tabel w HTML. margines ujemny i klasy wypełnienia również nie istnieją.
Dlatego musimy użyć niestandardowego css, aby to osiągnąć.
Poniżej znajduje się pierwsze rozwiązanie
Kod HTML:
odpowiedni css:
Poniżej znajduje się drugie rozwiązanie
Kod HTML:
odpowiedni css:
źródło
Ok, osiągnąłem to samo za pomocą Bootstrap 3.0
Przykład z najnowszym bootstrapem
http://jsfiddle.net/HDNQS/1/
HTML:
SCSS:
źródło
content:none
i inne małe rzeczy). Chciałem zamieścić zastępczy „drop-in”, który mogę równieżWygląda więc na to, że najlepszą opcją jest
padding-bottom
przeciwdziałanie negatywnejmargin-bottom
strategii.Zrobiłem dwa przykłady. Jeden z
<header>
wnętrzem.container
, a drugi z nim zewnątrz .Obie wersje powinny działać poprawnie. Zwróć uwagę na użycie następującego
@media
zapytania, aby usunąć dodatkowe wypełnienie na mniejszych ekranach ...Poza tym te przykłady powinny rozwiązać problem.
źródło
jest o wiele łatwiejszy sposób na zrobienie tego, jeśli martwisz się jedynie nałożeniem koloru.
Umieść to na początku lub na końcu w tagu body
i to w twoim css
tworzysz tylko kształt, przypinając go za stronę i rozciągając na pełną wysokość. Korzystając z istniejących klas bootstrap, uzyskasz odpowiednią szerokość i pozostanie responsywny.
Ta metoda ofc ma pewne ograniczenia, ale jeśli dotyczy struktury głównej strony, jest to najlepsza odpowiedź.
źródło
position: absolute
, a potemposition: fixed
?.container-fluid
. Chciałbym użyć.container
. Pomysły?.container
lub.container-fluid
nie mają z tym żadnego związku. gdy.col.col-md-2
ustawia szerokość za pomocą startowej. Mój CSS powyżej zmusza div do pełnej wysokości, z wystarczającym ujemnym indeksem z, aby upewnić się, że stoi za wszystkim. Jak wspomniano powyżej, powinien to być pierwszy lub ostatni element<body>
taguNapisałem prosty CSS zgodny z Bootstrap, aby utworzyć tabele o pełnej szerokości i wysokości:
Fiddle: https://jsfiddle.net/uasbfc5e/4/
Zasada jest następująca:
HTML:
CSS:
źródło
0%;
na0;
zupełnie inne. Jeśli tak się stanie, możesz użyć1%;
zamiast tego.próbować
css dla klasy .fill jest poniżej
W celach informacyjnych spójrz na skrzypce.
źródło
span
sięcol-md-
i pozwala zobaczyć, co się dzieje<div class="container"> <div class="row"> <div class="col-md-12">header section</div> </div> <div class="row"> <div class="col-md-4">Navigation</div> <div class="col-md-8">Content</div> </div> </div>
Spróbuj tego
Odwiedź http://www.sitepoint.com/building-responsive-websites-using-twitter-bootstrap/
Dzięki Syedowi
źródło
Jeśli nie będzie zadowolony po rzędzie (cała wysokość ekranu jest zajęta), trik z użyciem
position: fixed; height: 100%
dla.col:before
elementu może pracować również:źródło
Nie zostało to tutaj wspomniane przy kompensacji.
Możesz użyć wartości bezwzględnej do położenia dla lewego paska bocznego.
CSS
HTML
źródło
Spróbuj tego
Używa Bootstrap 3, więc nie potrzebujesz dodatkowego CSS itp.
źródło
Czy widziałeś poprawkę bootstrapu ? w sekcji JAvascript?
Myślę, że to byłoby najlepsze i najłatwiejsze rozwiązanie, koleś.
Zajrzyj tam: http://getbootstrap.com/javascript/#affix
źródło
Po eksperymentowaniu z kodem podanym tutaj: Bootstrap Tutorial
Oto kolejna alternatywa przy użyciu najnowszego Bootstrap v3.0.2:
Narzut:
Dodatkowy CSS:
Przykładowy JSFiddle
Mam nadzieję, że pomoże to wszystkim zainteresowanym.
źródło