Bootstrap 4 Масштабирование / отзывчивость разбивки на страницы

Я использую компонент разбивки на страницы в Bootstrap 4, как объяснил здесь.

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

Подробности:

  • Я добавил метатег для области просмотра по мере необходимости для Bootstrap.
  • Я использую контейнерный div для моего списка разбивки на страницы.
  • Я использую Bootstrap CDN, но он загружается правильно.
  • Я не включил пример кода, потому что я следую примеру Bootstrap на T.

Спасибо за вашу помощь :)

Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
9
0
12 062
5

Ответы 5

Компонент Bootstrap Pagination не имеет никакого интеллектуального, отзывчивого поведения, встроенного в него (например, Grid). Итак, когда мы говорим о поведении, которое вы описываете ... это соответствует ожиданиям.

Тогда возникает проблема: как устранить этот недостаток? Уменьшение масштаба кнопок, как вы предлагаете, кажется хорошей идеей; а что, если у вас 100 страниц? Если его нужно масштабировать, чтобы уместить все 100 кнопок в одной строке, эти кнопки будут чрезвычайно маленькими.

Итак, у вас есть несколько подходов, которые находятся встроил в компонент Bootstrap Pagination:

  • Отображение номеров X страниц с помощью кнопок Prev и Next.
  • Вышеупомянутое, но с разделителем ..., указывающим на наличие дополнительных страниц.

Или вы можете настроить поведение самого компонента Pagination с помощью простого класса-оболочки: .table-responsive

<link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity = "sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin = "anonymous">

<nav aria-label = "Page navigation example" class = "table-responsive mb-2">
  <ul class = "pagination mb-0">
    <li class = "page-item disabled"><a class = "page-link" href = "#" tabindex = "-1">Previous</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">1</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">2</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">3</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">4</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">5</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">6</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">7</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">8</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">9</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">10</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">11</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">12</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">13</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">14</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">15</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">16</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">17</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">18</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">19</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">20</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">Next</a></li>
  </ul>
</nav>

[ More Content Here ]

Класс .table-responsive разработан для работы с <table> и допускает горизонтальную прокрутку, если в противном случае она превышала бы 100% ширины экрана ... но здесь он отлично работает, обеспечивая небольшую полезность, если вы хотите включить все возможные варианты разбивки на страницы.

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

Спасибо за Ваш ответ. Я собираюсь проголосовать за него. Что касается уродливого UX, я с вами согласен. Когда я понял, что у меня может быть любое количество страниц (потенциально более 50), я решил пойти другим путем. Я действительно просто задал вопрос, потому что я пытаюсь узнать больше о Bootstrap и хочу знать, что происходит в этом случае.

user3657152 02.05.2018 20:55

Разбиение на страницы - один из тех компонентов пользовательского интерфейса, который имеет всего ... массу хороших подходов в зависимости от объема вашего проекта. Для чего-то вроде вашего - если вам нужно показать все параметры страницы ... Я бы, вероятно, просто использовал раскрывающийся список.

Robert 03.05.2018 15:34

Если вам интересно, в моем веб-приложении я окружаю <ul> тегом навигации, используя класс CSS для горизонтальной полосы прокрутки.

<nav class = "HORIZONTAL_SCROLL_NAV">

Демо скрипки: https://jsfiddle.net/JonathanParentLevesque/z4gL1wkb/5/

Boostrap 4 pagination with a horizontal scrollbar

Минимальный CSS для этого будет:

.HORIZONTAL_SCROLL_NAV {

    -webkit-overflow-scrolling: touch;

    overflow-x: auto;
    overflow-y: hidden; 
}

.HORIZONTAL_SCROLL_NAV>ul {

    margin: 0 auto;
}

Вы также можете добавить дополнительный CSS, если хотите стилизовать полосу прокрутки (поддерживается этими браузерами: https://caniuse.com/#feat=css-scrollbar):

.HORIZONTAL_SCROLL_NAV::-webkit-scrollbar {

    height: 10px;
}

.HORIZONTAL_SCROLL_NAV::-webkit-scrollbar-track {

    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0);
    box-shadow: inset 0 0 6px rgba(0, 0, 0, 0);

    -webkit-border-radius: 10px;
    border-radius: 10px;
}

.HORIZONTAL_SCROLL_NAV::-webkit-scrollbar-thumb {

    -webkit-border-radius: 10px;
    border-radius: 10px;

    background: rgba(255, 0, 0, 0.8);

    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); 
    box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
}

Можно использовать .pagination-sm .pagination-lg

   <nav aria-label = "...">
  <ul class = "pagination pagination-sm">
    <li class = "page-item disabled">
      <a class = "page-link" href = "#" tabindex = "-1">1</a>
    </li>
    <li class = "page-item"><a class = "page-link" href = "#">2</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">3</a></li>
  </ul>
</nav>

В зависимости от сценария одним изящным приемом является использование класса гибкой справки .flex-wrap вместе с .pagination, чтобы ваш список разбивался на несколько строк для небольших устройств.

<ul class = "pagination flex-wrap">
    <li class = "page-item"><a class = "page-link" href = "#">A</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">B</a></li>
    ...
    <li class = "page-item"><a class = "page-link" href = "#">Z</a></li>
</ul>

Это полезно, когда у вас не слишком много страниц и вы хотите, чтобы все они были видны без прокрутки или чего-то подобного.

Некоторое улучшение ответа Дарио Муньоса:

<ul class = "pagination flex-wrap">
    <li class = "page-item"><a class = "page-link" href = "#">A</a></li>
    <li class = "page-item"><a class = "page-link" href = "#">B</a></li>
    ...
    <li class = "page-item"><a class = "page-link" href = "#">Z</a></li>
</ul>

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

.flex-wrap.pagination{
  margin-left: 3px;
  .page-item {
    margin-bottom: 5px;
  }

  .page-item:first-child{
    margin-left: -3px;
  }
}

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