2014-11-07 23 views
19

Przechodzę z Bootstrap 2 do Bootstrap 3. W starej wersji korzystałem z modów, które miały długą zawartość, a modały automatycznie przewijano po osiągnięciu maksymalnej wysokości.Twitter Bootstrap 3 Modal z przewijanym ciałem

W Bootstrap 3, modal rozszerza się tak, aby pokazać całą zawartość, a ja muszę użyć klawisza w dół strony, aby dostać się do końca i zobaczyć przyciski w stopce modalnej. Nie mogę użyć paska przewijania z prawej strony okna przeglądarki, ponieważ jest on zakryty tłem, a w żadnym wypadku nie jest intuicyjne przewijanie zawartości w polu modalnym.

Jak uzyskać modal w bootstrapie 3, który automatycznie wstawia pasek przewijania, aby przewijać zawartość po osiągnięciu maksymalnej wysokości?

Próbowałem ustawienie wysokości max do modalnej klasy tak:

.modal{ 
    max-height:80%; 
} 
.modal-header{ 
    height:15% !important;  
} 
.modal-body{ 
    height:70%; 
    overflow:auto; 
} 
.modal-footer{ 
    height:15%; 
} 

Ale to nie działa zgodnie z oczekiwaniami. Okno modalne osiąga maksymalny rozmiar, ale po prostu obcina jego zawartość, a stopka nie jest wyświetlana.

Dzięki za pomoc.

+0

Zaktualizowałem moją odpowiedź. – Sebsemillia

Odpowiedz

60

Wystarczy dodać:

.modal-content { 
    height:250px; 
    overflow:auto; 
} 

Wysokość może być oczywiście dostosowane do własnych potrzeb.

Working Example

Aktualizacja:

To rzeczywiście dość łatwe. Po prostu dodaj:

.modal-body { 
    max-height: calc(100vh - 212px); 
    overflow-y: auto; 
} 

do twojego css.

Używa vh i calc, które również mają dobrą obsługę przeglądarki (IE9 +).

To jest oparte na tym answer. Proszę przeczytać tam, aby uzyskać bardziej szczegółowe informacje, nie będę kopiować jego odpowiedzi.

Working Example

+0

Dzięki za odpowiedź. Próbowałem tego. Przewija również nagłówek i stopkę modalu, chcę, aby nagłówek i stopka modalu pozostały widoczne przez cały czas, tak jak to było w bootstrapie 2, i tylko przewijać zawartość wewnątrz. Powoduje to również problemy z modami, które mają mniejszą zawartość, ponieważ modal nadal wyświetla się na stałej wysokości z białą spacją u dołu. – Vero

+0

Zajrzę do tego. – Sebsemillia

+0

Dziękujemy! To działało świetnie. Użyłem tylko kodu z aktualizacji i dodałem overflow-x: hidden; aby uniknąć poziomego paska przewijania w wyskakującym okienku. – Vero

2

Jeśli masz treści dynamiczne, może to być uciążliwe. Użyłem tego, aby upewnić się, że ma odpowiednią wysokość, a następnie będzie przewijane:

$('#modal').on('shown.bs.modal', function() { 
    $('.modal-dialog').css('height', $('.modal-dialog').height()); 
}); 

$('#modal').on('hidden.bs.modal', function() { 
    $('.modal-dialog').css('height', 'auto'); 
}); 
+0

To jest warunek, który próbowałem rozwiązać. Dzięki! – ScottLenart

Powiązane problemy