2016-01-11 20 views
9

Widziałem podobne pytania, ale nic dokładnie takiego, jak próbuję. Większość przykładów tworzy cały zwój col-md-2, potrzebuję w nim zawartości do przewijania.Naprawiono przewijaną wysokość div wewnątrz kolumny bootstrap 3

Wewnątrz pojemnika na płyn, mam lewą kolumnę typu nawigacji i kolumnę z prawą zawartością.

Wewnątrz lewej kolumny Chcę div w najwyższej klasie = "top", a div w dolnej klasie = "na dole". A w środku mam listę. Załóżmy, że u dołu i na górze znajduje się 100 pikseli. Chcę, aby lista zajmowała całą przestrzeń między nimi, a jeśli zawartość listy jest większa niż ten obszar, chcę ją przewinąć. Jeśli zawartość listy jest mniejsza niż przestrzeń między nimi, chcę, aby zajęła całą tę przestrzeń (nie zwiń).

Oto psuedo przykład:

<div class="container-fluid"> 
    <div class="row"> 
     <div class="col-md-2"> 

      <div class="top"> 
       . . . 
      </div> 

      <div class="scroll-area"> 
       <ul> 
        <li>one</li> 
        . . . 
        <li>one-thousand</li> 
       </ul> 
      </div> 

      <div class="bottom"> 
       . . . 
      </div> 

     </div> 
     <div class="col-md-10 content"> 
     </div> 
    </div> 
    </div> 

    <style> 
    .top, .bottom { height: 100px; } 
    </style> 

udało mi się to zrobić przed bez bootstrap dając "scroll-area" pozycjonowanie bezwzględne. Mogę uczynić pracę scroll-kierunkowy z pozycjonowanie stałe, ale zawierające „col-MD-2 jest zwinięty, więc«z dołu»siada szczyt.

enter image description here

Jak mogę dokonać tej pracy?

+0

Co to szerokość lewej strony i chcesz t o używać Flexbox? –

+0

Szerokość powinna wypełnić 100% zawierającej bootstrap kolumny, która jest teraz col-md-2 teraz col-md-2 ma szerokość: 16.66666667% ;. Więc jeśli zmieniłem go na col-md-3 (szerokość: 25%), treść powinna to wypełnić. Myślę, że flexbox byłby w porządku. – user210757

+0

Czy lewa część ma 'position: fixed;' –

Odpowiedz

6

Ta odpowiedź jest, gdy nie wiesz, wysokość okna.

Możesz to osiągnąć używając pozycji: absolutna; po prostu mówisz niebieskim i czerwonym częściom, aby górny i dolny, zielony element powinien mieć top 100px, a następnie po prostu użyj css "calc", aby uzyskać jego wysokość.

Style

.side{ 
    position:fixed; 
    top:0; 
    left:0; 
    height:100%; 
    padding:0; 
} 

.scroll-area{ 
    width:100%; 
    height:calc(100% - 200px); 
    margin-top:100px; 
    background-color:green; 
    float:left; 
    overflow-y:scroll; 
} 

html

<div class="row"> 
     <div class="col-md-2 col-xs-2 side"> 
      <div style="position:relative;width:100%;height:100%;"> 
      <div class="top" style="background-color:red;top:0;width:100%;height: 100px; position:absolute;"> 
       top 
      </div> 

      <div class="scroll-area"> 
       <ul> 
        <li>one</li> 
       </ul> 
       <div style="width:100%;height:10000px;"> 
       </div> 
       <ul> 
        <li>one-thousand</li> 
       </ul> 
      </div> 

      <div class="bottom" style="background-color:blue;bottom:0;width:100%;height: 100px; position:absolute;"> 
       bottom 
      </div> 
      </div> 

     </div> 
     <div class="col-md-10 col-xs-offset-2 content col-md-offset-2"> 
     <div style="height:1000px;width:100%;"> 

     </div> 
     </div> 
    </div> 

przyjrzeć się tej filddle -

https://jsfiddle.net/jxo6pmju/12/

+0

Czy możesz wyjaśnić, dlaczego używasz względne i stałe? – user210757

+0

Chciałem, aby kolumna boczna ignorowała wysokość wiersza i miała 100% wysokość ekranu. Wtedy użyłem względnego wnętrza, więc mogę użyć bezwzględnych elemts w środku. Czy to nie działa? – BinaryGhost

+0

Panel zawartości jest zwijany do końca. Używam płynu do opakowań, dodałem to do pytania. Ale dodałem to do twojego przykładu i zadziałało. Nadal próbuję wdrożyć to do mojego rozwiązania. – user210757

1

Tutaj dodałem odnośnik skrzypce za to, co miał problemy z. Nadzieja to helps`

<div class="fixed"> 
    <b>Fixed Content</b> 
    <br/> 
    <br/> 
    <p>top</p> 
</div> 
<div class="scrollit"> 
    <b>Scroll Content</b> 
    <br/> 
    <br/> 
    <ul> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    <li>item</li> 
    </ul> 


</div> 
<div class="fixed"> 
    <b>Fixed Content</b> 
    <br/> 
    <br/> bottom 
</div> 

scrollable middle section

+0

Dzięki za udzielenie odpowiedzi, podczas gdy Twoja odpowiedź jest w porządku, to pomogłoby to OP bardziej, gdybyś wyjaśnił, co zmieniłeś, aby działało. – gitsitgo

+0

Cześć, środkowa sekcja nie może być statyczną wysokością. – user210757

Powiązane problemy