Mam div
pozycję fixed
po lewej stronie strony internetowej, zawierającą menu i linki nawigacyjne. Nie ma ustawionej wysokości z css, zawartość określa wysokość, szerokość jest stała. Problem polega na tym, że jeśli zawartości jest za dużo, div
będzie ona większa niż wysokość okna, a część zawartości nie będzie widoczna. (Przewijanie okna nie pomaga, ponieważ pozycja jest fixed
i div
nie można przewijać).
Próbowałem ustawić, overflow-y:auto;
ale to też nie pomaga, element div zdaje się nie zauważać, że jego część znajduje się poza oknem.
Jak mogę sprawić, by jego zawartość przewijała się tylko w razie potrzeby, jeśli div
wisi za oknem?
html
css
css-position
Mkoch
źródło
źródło
calc()
jest technologią eksperymentalną i może skutkować nieoczekiwanymi wynikami . Jeśli zdecydujesz się z niego skorzystać, upewnij się, że znasz swoich docelowych odbiorców i przetestuj go w tych przeglądarkach.Odpowiedzi:
Prawdopodobnie nie możesz. Oto coś, co się zbliża. Nie dostaniesz zawartości opływającej go, jeśli jest miejsce poniżej.
http://jsfiddle.net/ThnLk/1289
.stuck { position: fixed; top: 10px; left: 10px; bottom: 10px; width: 180px; overflow-y: scroll; }
Możesz również zrobić wysokość procentową:
http://jsfiddle.net/ThnLk/1287/
.stuck { max-height: 100%; }
źródło
Poniższy link pokaże, jak to osiągnąłem. Niezbyt trudne - po prostu trzeba użyć sprytnego programisty front-end !!
<div style="position: fixed; bottom: 0%; top: 0%;"> <div style="overflow-y: scroll; height: 100%;"> Menu HTML goes in here </div> </div>
http://jsfiddle.net/RyanBrackett/b44Zn/
źródło
position: fixed; bottom: 0%; top: 0%; overflow: scroll; height: 100vh;
sprawia, że zewnętrzny element div będzie można przewijać na podstawie zawartości.Spróbuj tego na swojej pozycji: element stały.
overflow-y: scroll; max-height: 100%;
źródło
Prawdopodobnie potrzebujesz wewnętrznego div. Z css jest:
.fixed { position: fixed; top: 0; left: 0; bottom: 0; overflow-y: auto; width: 200px; // your value } .inner { min-height: 100%; }
źródło
Jest to absolutnie wykonalne z pewną magią flexbox. Spójrz na ten długopis .
Potrzebujesz CSS w ten sposób:
aside { background-color: cyan; position: fixed; max-height: 100vh; width: 25%; display: flex; flex-direction: column; } ul { overflow-y: scroll; } section { width: 75%; float: right; background: orange; }
To zadziała w IE10 +
źródło
Oto czyste rozwiązanie HTML i CSS .
Tworzymy pojemnik na pasek nawigacyjny z pozycją: ustalona; wysokość: 100%;
Następnie tworzymy wewnętrzne pudełko o wysokości: 100%; overflow-y: scroll;
Następnie umieściliśmy zawartość w tym pudełku.
Oto kod:
.nav-box{ position: fixed; border: 1px solid #0a2b1d; height:100%; } .inner-box{ width: 200px; height: 100%; overflow-y: scroll; border: 1px solid #0A246A; } .tabs{ border: 3px solid chartreuse; color:darkred; } .content-box p{ height:50px; text-align:center; }
<div class="nav-box"> <div class="inner-box"> <div class="tabs"><p>Navbar content Start</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content</p></div> <div class="tabs"><p>Navbar content End</p></div> </div> </div> <div class="content-box"> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> <p>Lorem Ipsum</p> </div>
Link do jsFiddle:
źródło
Przedstawiam to raczej jako obejście niż rozwiązanie. To może nie działać przez cały czas. Zrobiłem to w ten sposób, ponieważ tworzę bardzo prostą stronę HTML, do użytku wewnętrznego, w bardzo dziwacznym środowisku. Wiem, że są biblioteki takie jak MaterializeCSS, które potrafią robić naprawdę ładne paski nawigacyjne. (Chciałem ich użyć, ale nie działało to w moim środowisku).
<div id="nav" style="position:fixed;float:left;overflow-y:hidden;width:10%;"></div> <div style="margin-left:10%;float:left;overflow-y:auto;width:60%;word-break:break-all;word-wrap:break-word;" id="content"></div>
źródło
Dodaj to do swojego kodu, aby uzyskać stałą wysokość i dodaj jeden zwój.
.fixedbox { max-height: auto; overflow-y: scroll; }
źródło
max-height
nie może byćauto
developer.mozilla.org/en-US/docs/Web/CSS/max-heightDo swojego celu możesz po prostu użyć
position: absolute; top: 0%;
i nadal będzie skalowalny, przewijalny i responsywny.
źródło