Mam układ płynny za pomocą bootstrapu Twittera, w którym mam wiersz z dwiema kolumnami. Pierwsza kolumna zawiera dużo treści, które chcę normalnie wypełnić. Druga kolumna ma tylko przycisk i tekst, który chcę wyrównać do dołu względem komórki w pierwszej kolumnie.
Oto co mam:
-row-fluid-------------------------------------
+-span6----------+ +-span6----------+
| | |short content |
| content | +----------------+
| that |
| is tall |
| |
+----------------+
-----------------------------------------------
Oto, czego chcę:
-row-fluid-------------------------------------
+-span6----------+
| |
| content |
| that |
| is tall | +-span6----------+
| | |short content |
+----------------+ +----------------+
-----------------------------------------------
Widziałem rozwiązania, które ustawiają pierwszą rozpiętość na absolutną wysokość i ustawiają drugą rozpiętość względem niej, ale preferowane byłoby rozwiązanie, w którym nie musiałem określać bezwzględnej wysokości moich elementów div. Jestem również otwarty na całkowite przemyślenie, jak osiągnąć ten sam efekt. Nie jestem żonaty z tym użyciem rusztowania, po prostu wydawało mi się to najbardziej sensowne.
Ten układ jako skrzypce:
html
css
layout
twitter-bootstrap
Ryan
źródło
źródło
Odpowiedzi:
Uwaga: dla użytkowników Bootstrap 4+, proszę rozważyć rozwiązanie Christophe'a (Bootstrap 4 wprowadził flexbox, który zapewnia bardziej eleganckie rozwiązanie tylko CSS). Poniższe informacje będą działać dla wcześniejszych wersji Bootstrap ...
Zobacz http://jsfiddle.net/jhfrench/bAHfj/, aby uzyskać działające rozwiązanie.
Na plus:
pull-down
.Teraz zła wiadomość:
źródło
.pull-left
i.pull-right
), bez wpływu na rodzeństwo. Czy można to zrobić za pomocą samego rozwiązania CSS?To zaktualizowane rozwiązanie dla Bootstrap 3 (powinno jednak działać dla starszych wersji), które używa tylko CSS / LESS:
http://jsfiddle.net/silb3r/0srp42pb/11/
Ustawiasz rozmiar czcionki na 0 w wierszu (w przeciwnym razie skończysz z nieznośnym odstępem między kolumnami), a następnie usuniesz kolumny pływające, ustaw wyświetlanie
inline-block
, ponownie ustaw ich rozmiar czcionki, a następnievertical-align
możesz ustawić na wszystko czego potrzebujesz.Nie jest wymagane jQuery.
źródło
div
navertical-align: middle;
..myrow
) ... czy to nie oznacza, że nie możesz mieć jednej kolumny wyrównanej do góry, jednej do dołu i trzeciej do góry?Możesz użyć flex:
źródło
Musisz dodać trochę stylu
span6
, coś takiego:a to jest twoje skrzypce: http://jsfiddle.net/sgB3T/
źródło
padding-left: 0
ipadding-right: 0
na wszystkich kolumnach w tym rzędzie.Oto również dyrektywa angularjs, która implementuje tę funkcjonalność
źródło
Po prostu ustaw rodzica na,
display:flex;
a dziecko namargin-top:auto
. Spowoduje to umieszczenie treści podrzędnej na dole elementu nadrzędnego, przy założeniu, że element nadrzędny ma wysokość większą niż element podrzędny.Nie ma potrzeby obliczania wartości,
margin-top
jeśli wysokość elementu nadrzędnego lub innego elementu jest większa niż element podrzędny będący przedmiotem zainteresowania w elemencie nadrzędnym.źródło
Na podstawie innych odpowiedzi tutaj jest jeszcze bardziej responsywna wersja. Dokonałem zmian w wersji Ivana, aby obsługiwać rzutnie o szerokości <768px i lepiej obsługiwać powolne zmiany rozmiarów okien.
źródło
margin-top
na 0, a następnie ustawiać ponownie na nową wartość? Poza tym, dlaczego te rzeczy robią się w dwócheach()
„pętlach”?Jest to oparte na rozwiązaniu cfx, ale zamiast ustawiać rozmiar czcionki na zero w kontenerze nadrzędnym, aby usunąć spacje międzykolumnowe dodane z powodu wyświetlania: inline-block i konieczności ich resetowania, po prostu dodałem
do elementów div kolumny, aby skompensować.
źródło
Cóż, ja nie jak każda z tych odpowiedzi, moje rozwiązanie tego samego problemu było dodać to:
<div> </div>
. Więc w twoim schemacie wyglądałoby to tak (mniej więcej), w moim przypadku nie były potrzebne żadne zmiany stylu:źródło
do dodania, jeśli długość lewej komórki jest nieznana?źródło