Как сделать прокручиваемым содержимое фиксированного элемента только в том случае, если оно превышает высоту области просмотра?
У меня есть div
расположенный fixed
в левой части веб-страницы, содержащий меню и навигационные ссылки. Он не имеет высоты, установленной из css, содержимое определяет высоту, ширина фиксирована. Проблема в том, что если содержимое слишком велико, div
будет больше высоты окна, а часть содержимого не будет видна. (Прокрутка окна не помогает, так как позиция fixed
и div
не будет прокручиваться.)
Я попытался установить overflow-y:auto;
, но это тоже не помогает, div не замечает, что его часть находится вне окна.
Как я могу сделать его содержимое прокручиваемым, если нужно, если div
зависает в окне?
Ответы
Ответ 1
Вы, вероятно, не можете. Здесь то, что близко. Вы не получите контент, чтобы обтекать его, если есть пространство ниже.
http://jsfiddle.net/ThnLk/1289
.stuck {
position: fixed;
top: 10px;
left: 10px;
bottom: 10px;
width: 180px;
overflow-y: scroll;
}
Вы также можете указать процентную высоту:
http://jsfiddle.net/ThnLk/1287/
.stuck {
max-height: 100%;
}
Ответ 2
Ниже приведена ссылка на то, как я это сделал. Не очень сложно - просто нужно использовать некоторых умных интерфейсных разработчиков!
<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/
Ответ 3
Вам, вероятно, нужен внутренний div. С помощью css:
.fixed {
position: fixed;
top: 0;
left: 0;
bottom: 0;
overflow-y: auto;
width: 200px; // your value
}
.inner {
min-height: 100%;
}
Ответ 4
Это абсолютно возможно с помощью магии flexbox. Посмотрите на pen.
Вам нужно css, как это:
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;
}
Это будет работать в IE10 +
Ответ 5
Попробуйте это на вашей позиции: фиксированный элемент.
overflow-y: scroll;
max-height: 100%;
Ответ 6
Вот чистое решение HTML и CSS.
-
Мы создаем контейнерный контейнер для навигации с помощью
позиция: фиксированная;
высота: 100%;
-
Затем мы создаем внутренний ящик с
высота: 100%;
overflow-y: прокрутка;
-
Затем мы помещаем содержимое внутри этого поля.
Вот код:
.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>
Ответ 7
Я представляю это как обходное решение, а не решение. Это может не работать все время. Я сделал это так, потому что я делаю очень основную HTML-страницу, для внутреннего использования, в очень странной среде. Я знаю, что есть библиотеки, такие как MaterializeCSS, которые могут делать действительно хорошие навигационные бары. (Я собирался использовать их, но это не сработало с моей средой.)
<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>
Ответ 8
Добавьте это в свой код для фиксированной высоты и добавьте один свиток.
.fixedbox {
max-height: auto;
overflow-y: scroll;
}
Ответ 9
Я не думаю, что это сработает, иначе вам придется писать script для этого.
если я правильно понял вашу проблему, я предлагаю вам использовать этот вид решения