Прокрутка дочернего div в родительском div

Некоторая предыстория

Я использую виджеты Гридстер для веб-страницы. Эти виджеты отображаются под таблицей HTML. Таблица помогает идентифицировать некоторую информацию для каждого виджета. Виджеты представляют собой элементы html <li>, размещенные в <ul>.

Виджеты динамически генерируются из json (поэтому их количество не фиксировано).

Мой желаемый результат

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

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

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

Что я пробовал до сих пор

Я сделал <div> для той части, в которой находятся виджеты, и дал им свойство overflow:scroll, но даже тогда он не работает так, как я ожидал

Мой HTML

<div class = "content-wrapper">
    <div class = "row">
      <div class = "col-md-12 grid-margin stretch-card">
        <div class = "card">
          <div class = "card-body">
            <h4 class = "card-title">My Webpage</h4>
           <p class = "card-description" style = "color:black;">
                      Zone for Gasoline:A, Year :2018
            </p>
            <div class = "row">
             <div class = "col-md-12">
              <div class = "btn-group btn-block mb-4" aria-label = "steps">
                     <div class = "col md-4">
                        <a href = "/app/step-1/"> <button type = "button" class = "btn btn-block btn-outline-secondary"> Step 1 </button> </a>
                         </div>
                <div class = "col md-4">
                        <a href = "/app/step-2/"> <button type = "button"  class = "btn btn-block btn-outline-secondary" > Step 2  </button> </a>
                      </div>
                 <div class = "col md-4">
                        <a href = "/app/step-3/"> <button type = "button" class = "btn btn-block btn-primary"> Step 3 </button></a>
                </div>
               </div>
              </div>
            </div>


  <table border = "1" class = ".table-responsive">
     <tr>
        <th colspan = "4"  style = "background-color:#eedd82;">Zone 1</th>
        <th colspan = "4"  style = "background-color:#eedd82;">Zone 2</th>
        <th colspan = "4"  style = "background-color:#eedd82;">>Zone 3</th>
     </tr>
     <tr>
        <td width = "400" align = "center" style = "background-color:#0085ca">T1</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T2</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T3</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T4</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T1</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T2</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T3</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T4</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T1</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T2</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T3</td>
        <td width = "400" align = "center" style = "background-color:#0085ca">T4</td>
     </tr>
 </table>

 <!--Gridster widgets will appear here below table-->
 <div class = "gridster father">
      <ul class = "child">

      </ul>
</div>

Прошу прощения за такой большой HTML-код. В HTML вы можете видеть, что ниже <table> я присвоил класс father элементу <div> и child элементу <ul>.

Для них обоих я попробовал следующий CSS (индивидуально и вместе)

.father{
    overflow:scroll;
  }

.child{
    overflow:scroll;
  }

Но я не давал того эффекта "прокрутки", который хотел.

Скрипка, представляющий то же самое

Любая помощь будет очень признательна

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
86
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Адаптивные таблицы так не пишутся. Это вот так :

<div class = "table-responsive">
  <table class = "table">
    ...
  </table>
</div>
Ответ принят как подходящий

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

HTML:

<div class = "parent">
    <ul class = "child">
        ...
    </ul>
</div>

CSS:

.parent {
    overflow: scroll;
}

Для лучшего восприятия мы, вероятно, хотим, чтобы эта прокрутка выполнялась только слева направо (ось y), а не сверху вниз (ось x), нам также необходимо установить это, и поэтому необходимо соответствующим образом настроить наш CSS.

.parent {
    overflow-y: scroll;
}

В вашем примере похоже, что классы отца и потомка применяются к построению сетки как неупорядоченный список (<ul>) с маленькими значками автомобилей. Этот <ul> определяет высоту и высоту родительского элемента, поэтому в большом достаточно окна, чтобы таблица не прокручивалась. Однако если вы сжимаете окно, родительский элемент расширяется только до ширины окна, что является ожидаемым поведением div. На этом этапе дочерний элемент прокручивается.

Если вы хотите применить то же поведение к элементу .table-responsive, вам необходимо применить тот же принцип. Оберните таблицу в родительский элемент и примените переполнение соответствующим образом. Вы не хотите помещать overflow-scroll в саму таблицу, но вы можете указать минимальную ширину таблицы или применить фиксированную ширину, например width: 300px;.

HTML:

<div class = "parent">
    <table class = "table-responsive">
        ...
    </table>
</div>

CSS:

.parent {
    overflow-y: scroll;
}
.table-responsive {
    your styles
}

Если вам нужно исправить размеры родительского элемента, чтобы элемент не определял размер окна, вы можете сделать что-то подобное с помощью своего CSS

.parent {
    overflow: scroll;
    width: 400px;
    max-width: 100vw;
    height: 400px;
    max-height: 100vh;
}
.table-responsive {
    your styles
}

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

Это не обязательно с мобильным телефоном. Это может быть и на рабочем столе. Моя основная цель состоит в том, чтобы там было много виджетов. «Коробка» или «контейнер», в которых они находятся, должны оставаться фиксированного размера. Моя веб-страница не должна расширяться в зависимости от этого. на виджетах

NewBie 05.05.2018 08:47

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

UntitledGraphic 05.05.2018 10:48

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