2009-05-13 15 views
19

Tak więc mam dwa elementy div. Jeden lewy div z linkami nawigacyjnymi i jeden prawy div, który wypełnia treść w zależności od tego, który link kliknąłeś po lewej stronie. Chciałbym mieć pionową szarą linię między nawigacją a treścią oddzielającą dwa, ale potrzebuję jej do zmiany wysokości w zależności od tego, jak długo ma zawartość div z prawej strony. (A także, jeśli prawa strona nie jest tak długa, jak nawigacja, domyślnie linia znajduje się na dole nav).Przekładka w linii pionowej między dwoma elementami div

Jeśli użytkownik kliknie na link, który sprawia, że ​​właściwa zawartość div jest naprawdę długa, potrzebuję linii pionowej, aby dynamicznie zmieniać jej wysokość i iść do samego końca, ale jeśli zawartość nie jest tak długa, jak nawigacja nadal potrzebuję go do końca nawigacji.

Próbowałem rzeczy z granicami i wysokością: 100%, ale nie mogłem dostać nic do pracy w różnych przeglądarkach. (IE i FF) Dzięki!

Odpowiedz

18

Zakładając, że lewy działka nawigacyjna ma stałą wysokość lub wysokość, która nie zmienia się często. Załóżmy, że twój lewy div div ma wysokość 400 pikseli. Następnie:

div.leftnav { 
    height: 400px; 
    float: left; 
} 

div.rightContent { 
    min-height: 400px; 
    border-left: 1px solid gray; 
    float:left; 
} 

Należy pamiętać, że "min-height" nie jest obsługiwane przez IE6.

8

Powtarzalny obraz tła dla elementu nadrzędnego z pionową, szarą linią umieszczoną odpowiednio, byłby najlepszym wyborem.

+0

Uzgodnione. rozwiązanie o stałej wysokości nie będzie działać, jeśli właściwa zawartość będzie dłuższa. powtarzalny obraz tła dla rodzica byłby znacznie lepszy. – Baer

1

kiedyś rozwiązać to za pomocą obrazu tła powtarzającym się na osi y. Po prostu utwórz ją tak szeroką jak twoja strona i niezbyt wysoką, może 10-20 pikseli. a następnie po prostu powtórz to w dół. Może trochę oszustwo, ale działa w niektórych przypadkach: p

Jeden przykład tego, jak to zrobiłem, można zobaczyć na stronie this website.

+0

Wygląda na to, że mieliśmy tę samą myśl w (mniej więcej) tym samym czasie! Nie sądzę, żeby to było oszukiwanie i pod pewnymi względami o co chodzi w web devie (tj.znajdowanie "rozwiązań lateralnych") – da5id

+0

tak, wygląda na to :) – Svish

8

Można pozwolić, aby element nawigacyjny miał obramowanie po prawej stronie, a element div treści po lewej stronie. Pozwalanie, by te dwie granice pokrywały się, powinno dać pożądany efekt.

+2

To brzmi jak najłatwiejsze rozwiązanie, po prostu daj jeden z elementów div negatywny margines boczny szerokość granicy – jeroen

+0

Tak, dziękuję, że to idealne rozwiązanie! – Steve

+0

Zgadzam się, jest to bardziej eleganckie rozwiązanie niż powtarzający się obraz tła. – bellkev

1

Sposób, w jaki to robię, to umieszczenie elementów w pojemniku z ukrytym przepełnieniem. Następnie dodajesz lewą ramkę do wszystkich powtarzających się div. Następnie we wszystkich pływających elementach podrzędnych ustawiamy właściwości css: padding-bottom: 2000px; margin-bottom-2000px;

Przykład:

CSS

div.vert-line{overflow:hidden} 
div.vert-line>div+div{border-left:#color;} 
div.vert-line>div{width:200px; float:left; padding-bottom:2000px; margin-bottom:-2000px;} 

HTML

<div class="vert-line> 
    <div>Left Side</div> 
    <div>Right Side</div> 
</div> 

Nadzieja to pomaga!

+2

http://jsfiddle.net/epeleg/VKqEU/1/ pokazuje to z dodanymi szczegółami , ale jak można to zrobić, aby mieć przestrzeń powyżej i poniżej speratora? – epeleg

0

możesz użyć css border-left na prawym div.

.vertical_line { border-left: 1px solid #f2f2f2; } 

<div> 
    <p>first div</p> 
</div> 
<div class="vertical_line"> 
    <p>second div</p> 
</div> 
Powiązane problemy