Реализуйте дочерний элемент div с полосами прокрутки, чтобы отображать большой контент, сохраняя при этом родительский элемент и другие элементы одного уровня

У меня есть особое требование реализовать дочерний div с полосами прокрутки, сохраняя при этом родительские и другие одноуровневые элементы фиксированными в своей позиции без других полос прокрутки. Это может показаться запутанным, позвольте мне объяснить это на примере:

Html-страница - исправлен порядок следующих элементов:

  1. Панель навигации с фиксированным размером, скажем, 50px.
  2. Основной контент с динамическим размером основан на вводе данных пользователем. Он может иметь полосы прокрутки.
  3. Картинная галерея с фиксированным размером, скажем, 100px.
  4. Панель навигации с фиксированным размером, скажем, 50px.

Приведенные выше утверждения являются не чем иным, как элементами html. Сначала у нас будет панель навигации с фиксированным размером, скажем, высотой 50 пикселей.

Тогда у нас будет наш основной элемент контента, и его ширина будет равна всей странице, а высота будет установлена ​​​​клиентом, и он может иметь полосы прокрутки, если размер контента больше. Предположим, клиент установил высоту этого элемента 950 пикселей, и мы загружаем изображение размером 3600x4000. В этом случае этот элемент должен иметь полосы прокрутки.

Тогда у нас будет галерея фиксированной высоты 100px.

Затем наш последний элемент снова является панелью навигации с фиксированной высотой, равной 50px.

Вы можете изобразить, что это будет единственное, что я хочу показать на странице, и для всей вышеуказанной ширины будет полная страница.

Это структура, которую я хочу, но есть сценарии, которые нам, возможно, придется учитывать при ее разработке.

  1. В зависимости от конфигурации иногда мы показываем верхнюю панель навигации, иногда нижнюю панель навигации, а иногда и то, и другое.
  2. Независимо от того, насколько велик контент, элемент контента должен иметь возможность отображать весь контент, может иметь полосы прокрутки.
  3. В зависимости от конфигурации мы можем скрыть элемент галереи. Итак, у нас может быть галерея, а может и не быть.
  4. Независимо от того, какое устройство мы используем, оно должно подойти. И должна быть только одна полоса прокрутки, и она должна быть в области содержимого, а не где-либо еще.
  5. Всякий раз, когда мы скрываем или показываем какой-либо элемент, поскольку элемент содержимого имеет фиксированную высоту, поэтому он не может измениться, но родительский элемент и другие элементы одного уровня должны подстраиваться под размер экрана.
  6. если размер элемента контента действительно мал, мы можем использовать какое-то значение по умолчанию, чтобы оно поместилось на экране.

Я также пробовал кое-что, но чтобы избежать нескольких полос прокрутки, нам пришлось исправить (на моем экране 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. Просто помните, что на всей странице должны быть только одна вертикальная и горизонтальная полосы прокрутки, и это тоже должно быть только для контента.

Спасибо заранее.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
41
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

ОБНОВИТЬ

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. Попробуйте использовать разные идентификаторы или классы.

Я пробовал это, но, поскольку я жестко закодировал высоту родителя, он не работает с разными размерами. Также, если я удалю высоту из родителя и использую 100%, то получаю две полосы прокрутки, одну для содержимого, другую, если для родительского div.

sunil20000 19.03.2022 11:14

это то, чего вы хотите достичь jsfiddle.net/54motehf

Sheikh Haziq 19.03.2022 13:52

это [это]( jsfiddle.net/81ayv3wh) то, чего вы хотите достичь

Sheikh Haziq 19.03.2022 14:01

Да, это именно то, что я хотел. Есть маленькие вещи, о которых я могу позаботиться. Вы можете обновить свой ответ, и я отмечу его как ответ.

sunil20000 23.03.2022 20:29

@sunil20000 только что обновил

Sheikh Haziq 24.03.2022 03:03

Вы можете попытаться немного потерять жестко закодированные значения и поместить их в некоторые классы, а также удалить несколько идентификаторов, которые могут подавлять друг друга. В инструментах разработчика вы можете увидеть, какие стили игнорируются. Затем просто сохраните идентификатор родителя и стилизуйте его так, как вам нужно, определяя высоту, ширину, прокрутку и т. д. Вместо этого поместите классы, например, основной контент и подконтент, где вы определяете, сколько контента должно занимать переполнение, а под- содержимое будет занимать столько, сколько вы укажете, остальное будет прокручиваться. Наличие такого количества идентификаторов может создать путаницу и работать неправильно.

спасибо за ваши предложения, но я добавил встроенный стиль и идентификаторы, чтобы разместить этот код здесь. Так что если кто-то подскажет конкретное к какому-то элементу, то путаницы не будет. Как только я найду какое-либо решение, я удалю все ненужные идентификаторы и перенесу все встроенные стили в классы.

sunil20000 19.03.2022 12:25

Другие вопросы по теме