Bootstrap 4 предотвращает отсечение переполненной строки с горизонтальной прокруткой

Я создал row с горизонтальной прокруткой для всех содержащихся col.

Я использовал ответ на этот вопрос: Bootstrap 4 горизонтальный скроллер div

Однако я обнаружил, что элементы внутри container обрезаны. Теперь в некоторых комбинациях ОС-браузер (например, MacOS+Chrome) полоса прокрутки скрыта, если она не наведена мышью, и в тесте один из наших пользователей не смог найти следующий (обрезанный) элемент col.

Я хотел бы знать, как «отрезать» элементы за пределами ширины контейнера, чтобы пользователь мог сразу увидеть, что есть больше контента, требующего прокрутки.

Редактировать:

Соответствующий код взят из этот ответ, а также опубликован на кодовая ручка.

Редактировать 2:

Обратите внимание, что я хочу предотвратить перемещение контейнера при прокрутке.

Можете ли вы опубликовать код, который вы пытались?

Zim 11.03.2019 11:46

Код находится в связанном вопросе, и я не копировал его, потому что не хочу притворяться, что это мой код.

Jankapunkt 11.03.2019 12:45

Я не очень понимаю вопрос. Вы имеете в виду обрезание из-за горизонтальной прокрутки?

Zim 11.03.2019 12:52

Элементы за пределами ширины container скрыты (это правильный термин для этого?), и я хотел бы, чтобы они оставались видимыми, чтобы люди могли видеть, что при горизонтальной прокрутке можно добраться до большего количества элементов.

Jankapunkt 11.03.2019 13:13

Я обновил свой вопрос, так как ссылка была слишком неконкретной.

Jankapunkt 11.03.2019 13:14

Вы пытаетесь сделать горизонтальную полосу прокрутки видимой во всех браузерах или каким-то образом показать, что с правой стороны есть больше контента, до которого можно прокручивать?

Siavas 15.03.2019 22:48

Второй, но без прокрутки всей страницы.

Jankapunkt 15.03.2019 22:49
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
5
7
2 271
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Как вы сказали, вы хотите, чтобы он реагировал на таблицу, в которой все div по умолчанию имеют равную ширину доступной ширины родителя, тогда вам не следует использовать col-sm-4. Блоки с этим классом будут иметь 33,33% ширины родительского элемента, а другие ваши блоки наверняка не будут видны с этим.

Так что для отзывчивых div вы можете редактировать этот код таким образом. Добавлена ​​ссылка на Codepen здесь.

<div class = "container testimonial-group">
 <div class = "row text-center flex-nowrap">
 <div class = "col">1</div><!--
  --><div class = "col">2</div><!--
  --><div class = "col">3</div><!--
  --><div class = "col">4</div><!--
  --><div class = "col">5</div><!--
  --><div class = "col">6</div><!--
  --><div class = "col">7</div><!--
  --><div class = "col">8</div><!--
  --><div class = "col">9</div>
 </div>
</div>

CSS

/* The heart of the matter */
.testimonial-group > .row {
  white-space: nowrap;
}
.testimonial-group > .row > .col-sm-4 {
  display: inline-block;
  float: none;
 }

 /* Decorations */
.col { color: #fff; font-size: 48px; padding-bottom: 20px; padding-top: 18px; 
}
.col:nth-child(3n+1) { background: #c69; }
.col:nth-child(3n+2) { background: #9c6; }
.col:nth-child(3n+3) { background: #69c; }

Спасибо за ваш вклад. К сожалению, это также приводит к перемещению контейнера с помощью горизонтальной прокрутки. Ссылка на table-responsive была просто для примера того, как он должен себя вести.

Jankapunkt 15.03.2019 14:22

Я только что проверил и думаю, что table-responsive здесь плохая ссылка. Я просто очень хочу предотвратить отсечение при прокрутке.

Jankapunkt 15.03.2019 15:55
Ответ принят как подходящий

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

Вы можете протестировать комбинацию Mac Os и Chrome / Safari, так как это проблема конкретной платформы. Затем вы можете переопределить стиль полосы прокрутки. Это вынуждает его показывать.

.testimonial-group > .row {
  overflow-x: scroll;
  white-space: nowrap;
}

.testimonial-group > .row::-webkit-scrollbar-track
{
   box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 
   border-radius: 10px;
   background-color: #F5F5F5;
}


.testimonial-group > .row::-webkit-scrollbar
{
  width: 0px;
  height: 12px;
  background-color: #F5F5F5;
}

.testimonial-group > .row::-webkit-scrollbar-thumb
{
   border-radius: 10px;
   box-shadow: inset 0 0 6px rgba(0,0,0,.3);
   background-color: #555;
}

Полоса прокрутки в моем OSX также скрыта в Firefox и Safari при открытии кода из вопроса. Добавление опубликованного вами css привело к исчезновению полосы прокрутки = 0 (воспроизведение: OSX 10.14.3, Chrome 72.0.3626.119, FF 65.0.1, Safari 12.0.3)

Jankapunkt 18.03.2019 13:52

Ах да, потому что я также установил overflow-x для прокрутки. Я отредактировал свой пост, чтобы уточнить.

Steven Kuipers 18.03.2019 14:06

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

Jankapunkt 18.03.2019 14:55

Да, пожалуйста, оставьте его открытым, если есть другой способ заставить полосы прокрутки на OSX, я бы тоже хотел его знать.

Steven Kuipers 18.03.2019 17:19

Вам необходимо переопределить цвета и поведение полосы прокрутки по умолчанию.

.row {
  overflow-x: scroll;
  scroll-behavior: smooth;
  align-items: left;
  justify-content: left;
  flex-direction: row;
}
.col-sm-4 {
 display: inline;
 align-items: left;
 justify-content: left;
}
/*scroll bar style all brwosers expet IE && Firefox*/
::-webkit-scrollbar {
  width: 8px;
    background-color: rgba(255,255,255,.4);
}

::-webkit-scrollbar-track {
  -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
    border-radius: 10px;
    background-color: rgba(255,255,255,.4);
}

::-webkit-scrollbar-thumb {
  border-radius: 10px;
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
    background-color: #787c7d;
}

В противном случае вы могли бы сделать это с помощью JS вместо css.

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

Jankapunkt 20.03.2019 15:26

Я думаю, что это больше проблема UX, чем проблема кода. У вас есть контент с боковой прокруткой без каких-либо указаний на то, что прокрутка возможна. Полоса прокрутки является хорошим признаком, но OSX удалила их, и даже если вы можете принудительно вернуть их обратно в webkit, это все еще оставляет FF. Кажется, вы хотите, чтобы возможность прокрутки стала очевидной, когда пользователь начинает взаимодействовать с элементом. Так что остается вероятность того, что его не обнаружат. Почему бы просто не обнажить немного 4-й коробки.

Kjetil Hansen 21.03.2019 00:42

Я уже думал об открытии 4-го блока, но как добиться этого с сеткой Bootstrap размером 12 с элементами меньше 5?

Jankapunkt 21.03.2019 07:46

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