Moje wymaganie jest proste: dwie kolumny, z których prawa ma stały rozmiar . Niestety nie mogłem znaleźć działającego rozwiązania ani na stackoverflow, ani w Google. Każde opisane tam rozwiązanie zawodzi, jeśli zaimplementuję w swoim własnym kontekście. Obecne rozwiązanie to:
div.container {
position: fixed;
float: left;
top: 100px;
width: 100%;
clear: both;
}
#content {
margin-right: 265px;
}
#right {
float: right;
width: 225px;
margin-left: -225px;
}
#right, #content {
height: 1%; /* fixed for IE, although doesn't seem to work */
padding: 20px;
}
<div class="container">
<div id="content">
fooburg content
</div>
<div id="right">
test right
</div>
</div>
Otrzymuję następujący kod z powyższym kodem:
|----------------------- -------|
| fooburg content | |
|-------------------------------|
| | test right |
|----------------------- -------|
Proszę doradź. Wielkie dzięki!
clear: both
wewnątrz żadnej z kolumn nie wpłynie na zewnętrzne elementy pływające. To nie jest „kruche”, chyba że umieścisz przezroczysty na tym samym poziomie kolumn między kolumnami, jeśli umieścisz go na końcu, nic się nie stanie.Zobacz http://www.alistapart.com/articles/negativemargins/ , to jest dokładnie to, czego potrzebujesz ( przykład 4 tam).
źródło
Najlepiej unikać umieszczania prawej kolumny przed lewą, po prostu użyj ujemnego prawego marginesu.
Bądź „responsywny”, dodając ustawienie @media, tak aby prawa kolumna znajdowała się pod lewą na wąskich ekranach.
źródło
Najprostsze i jak dotąd najbardziej elastyczne rozwiązanie w użyciu
table display
:HTML, lewy element div jest pierwszy, prawy element div jest drugi ... czytamy i piszemy od lewej do prawej, więc nie ma sensu umieszczać elementów div od prawej do lewej
CSS:
Przykłady przypadków:
źródło
table
ztd
s z pewnością nie jest!Chciałbym zasugerować jeszcze nie wspomniane rozwiązanie: użyj CSS3
calc()
do miksowania%
ipx
jednostek.calc()
ma obecnie doskonałe wsparcie i pozwala na szybkie tworzenie dość skomplikowanych układów.Oto link JSFiddle do poniższego kodu.
HTML:
CSS:
A oto kolejny JSFiddle demonstrujący tę koncepcję zastosowaną do bardziej złożonego układu. Użyłem tutaj SCSS, ponieważ jego zmienne pozwalają na elastyczny i samoopisujący kod, ale układ można łatwo odtworzyć w czystym CSS, jeśli posiadanie wartości „zakodowanych na stałe” nie stanowi problemu.
źródło
To jest ogólne uporządkowane rozwiązanie w formacie HTML, w którym:
Naprawiono / druga kolumna po prawej stronie
Stała / druga kolumna po lewej stronie
Alternatywnym rozwiązaniem jest użycie display: table-cell ; co daje w wyniku kolumny o równej wysokości.
źródło
Hej, co możesz zrobić, to zastosować stałą szerokość do obu kontenerów, a następnie użyć innej klasy div, jeśli jest wyczyszczona: obie, na przykład
umieść wyraźny div pod lewym i prawym pojemnikiem.
źródło
Uprościłem to: zredagowałem odpowiedź jackjoe. Myślę, że wysokość auto itp. Nie jest wymagana.
CSS:
HTML:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus varius eleifend. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Phasellus varius eleifend.
źródło