У меня есть особое требование реализовать дочерний div с полосами прокрутки, сохраняя при этом родительские и другие одноуровневые элементы фиксированными в своей позиции без других полос прокрутки. Это может показаться запутанным, позвольте мне объяснить это на примере:
Html-страница - исправлен порядок следующих элементов:
Приведенные выше утверждения являются не чем иным, как элементами html. Сначала у нас будет панель навигации с фиксированным размером, скажем, высотой 50 пикселей.
Тогда у нас будет наш основной элемент контента, и его ширина будет равна всей странице, а высота будет установлена клиентом, и он может иметь полосы прокрутки, если размер контента больше. Предположим, клиент установил высоту этого элемента 950 пикселей, и мы загружаем изображение размером 3600x4000. В этом случае этот элемент должен иметь полосы прокрутки.
Тогда у нас будет галерея фиксированной высоты 100px.
Затем наш последний элемент снова является панелью навигации с фиксированной высотой, равной 50px.
Вы можете изобразить, что это будет единственное, что я хочу показать на странице, и для всей вышеуказанной ширины будет полная страница.
Это структура, которую я хочу, но есть сценарии, которые нам, возможно, придется учитывать при ее разработке.
Я также пробовал кое-что, но чтобы избежать нескольких полос прокрутки, нам пришлось исправить (на моем экране 780 пикселей - правильное значение) высоту. Также то же самое не работает на разных размерах экрана (устройствах).
<div id = "parent" style = "height:780px;width:100%;border:blue 2px solid;">
<div id = "navigationTop" style = "height:30px;width:100%;border:green 2px solid; text-align:center;">Navigation Top</div>
<div id = "content1" style = "height:100%;width:100%;border:red 2px solid;overflow:auto;max-height:950px">
<div id = "content" style = "height:950px;width:100%;border:red 2px solid;">
<img src = "https://via.placeholder.com/3600" />
</div>
</div>
<div id = "thumbnails" style = "height: 100px; width: 100%; border: pink 2px solid; text-align: center;">Thumbnails</div>
<div id = "navigationBottom" style = "height: 30px; width: 100%; border: green 2px solid; text-align: center;">Navigation Bottom</div>
</div>
Чтобы избавиться от этого параметра или жесткого кодирования исправить высоту родителя, я попытался установить с помощью jQuery, вычислить высоту экрана и установить ее. Но все равно не повезло.
$(document).ready(function () {
var height = $(document).height();
document.getElementById('parent').style.maxHeight = height;
});
Я хочу реализовать это на чистом CSS или с минимальным JS/jQuery. Просто помните, что на всей странице должны быть только одна вертикальная и горизонтальная полосы прокрутки, и это тоже должно быть только для контента.
Спасибо заранее.
ОБНОВИТЬ
html{
height: 100%;
}
body{
overflow: hidden;
padding: 0px;
margin: 0px;
height: 100%;
}
#parent{
overflow: hidden;
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
}
#navigationTop{
height: 30px;
width: 100%;
border: green 2px solid;
text-align: center;
}
#content1{
height: 100%;
width: 100%;
overflow-y: scroll;
}
#content{
width: 100%;
height: 100%;
}
#thumbnails{
height: 100px;
width: 100%;
text-align: center;
}
#navigationBottom{
height: 30px;
width: 100%;
text-align: center;
}
<html>
<body>
<div id = "parent" style = "">
<div id = "parent">
<div id = "navigationTop">Navigation Top</div>
<div id = "content1">
<div id = "content">
<img src = "https://via.placeholder.com/3600" width = "300" />
</div>
<div id = "thumbnails">Thumbnails</div>
</div>
<div id = "navigationBottom">Navigation Bottom</div>
</div>
</div>
</body>
</html>
В родительском использовании
#parent{
overflow:hidden;
}
и по содержанию
#content{
overflow:scroll;
}
и вы также установили id = "content"
для двух элементов div. Это покажет эффект только на последнем div. Попробуйте использовать разные идентификаторы или классы.
это то, чего вы хотите достичь jsfiddle.net/54motehf
это [это]( jsfiddle.net/81ayv3wh) то, чего вы хотите достичь
Да, это именно то, что я хотел. Есть маленькие вещи, о которых я могу позаботиться. Вы можете обновить свой ответ, и я отмечу его как ответ.
@sunil20000 только что обновил
Вы можете попытаться немного потерять жестко закодированные значения и поместить их в некоторые классы, а также удалить несколько идентификаторов, которые могут подавлять друг друга. В инструментах разработчика вы можете увидеть, какие стили игнорируются. Затем просто сохраните идентификатор родителя и стилизуйте его так, как вам нужно, определяя высоту, ширину, прокрутку и т. д. Вместо этого поместите классы, например, основной контент и подконтент, где вы определяете, сколько контента должно занимать переполнение, а под- содержимое будет занимать столько, сколько вы укажете, остальное будет прокручиваться. Наличие такого количества идентификаторов может создать путаницу и работать неправильно.
спасибо за ваши предложения, но я добавил встроенный стиль и идентификаторы, чтобы разместить этот код здесь. Так что если кто-то подскажет конкретное к какому-то элементу, то путаницы не будет. Как только я найду какое-либо решение, я удалю все ненужные идентификаторы и перенесу все встроенные стили в классы.
Я пробовал это, но, поскольку я жестко закодировал высоту родителя, он не работает с разными размерами. Также, если я удалю высоту из родителя и использую 100%, то получаю две полосы прокрутки, одну для содержимого, другую, если для родительского div.