Я создал row с горизонтальной прокруткой для всех содержащихся col.
Я использовал ответ на этот вопрос: Bootstrap 4 горизонтальный скроллер div
Однако я обнаружил, что элементы внутри container обрезаны. Теперь в некоторых комбинациях ОС-браузер (например, MacOS+Chrome) полоса прокрутки скрыта, если она не наведена мышью, и в тесте один из наших пользователей не смог найти следующий (обрезанный) элемент col.
Я хотел бы знать, как «отрезать» элементы за пределами ширины контейнера, чтобы пользователь мог сразу увидеть, что есть больше контента, требующего прокрутки.
Редактировать:
Соответствующий код взят из этот ответ, а также опубликован на кодовая ручка.
Редактировать 2:
Обратите внимание, что я хочу предотвратить перемещение контейнера при прокрутке.
Код находится в связанном вопросе, и я не копировал его, потому что не хочу притворяться, что это мой код.
Я не очень понимаю вопрос. Вы имеете в виду обрезание из-за горизонтальной прокрутки?
Элементы за пределами ширины container скрыты (это правильный термин для этого?), и я хотел бы, чтобы они оставались видимыми, чтобы люди могли видеть, что при горизонтальной прокрутке можно добраться до большего количества элементов.
Я обновил свой вопрос, так как ссылка была слишком неконкретной.
Вы пытаетесь сделать горизонтальную полосу прокрутки видимой во всех браузерах или каким-то образом показать, что с правой стороны есть больше контента, до которого можно прокручивать?
Второй, но без прокрутки всей страницы.






Как вы сказали, вы хотите, чтобы он реагировал на таблицу, в которой все 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 была просто для примера того, как он должен себя вести.
Я только что проверил и думаю, что table-responsive здесь плохая ссылка. Я просто очень хочу предотвратить отсечение при прокрутке.
Полосы прокрутки остаются скрытыми — это функция 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)
Ах да, потому что я также установил overflow-x для прокрутки. Я отредактировал свой пост, чтобы уточнить.
Это работает. Однако я хотел бы дождаться окончания периода вознаграждения, чтобы узнать, есть ли еще решение, которое предотвращает обрезание элементов при активной прокрутке. Если не будет никакого жизнеспособного ответа, я приму это как компромиссное решение.
Да, пожалуйста, оставьте его открытым, если есть другой способ заставить полосы прокрутки на OSX, я бы тоже хотел его знать.
Вам необходимо переопределить цвета и поведение полосы прокрутки по умолчанию.
.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.
Но это также просто манипулирует полосой прокрутки. Это может быть альтернативным решением, но я все же хотел бы посмотреть, можно ли обойти отсечение.
Я думаю, что это больше проблема UX, чем проблема кода. У вас есть контент с боковой прокруткой без каких-либо указаний на то, что прокрутка возможна. Полоса прокрутки является хорошим признаком, но OSX удалила их, и даже если вы можете принудительно вернуть их обратно в webkit, это все еще оставляет FF. Кажется, вы хотите, чтобы возможность прокрутки стала очевидной, когда пользователь начинает взаимодействовать с элементом. Так что остается вероятность того, что его не обнаружат. Почему бы просто не обнажить немного 4-й коробки.
Я уже думал об открытии 4-го блока, но как добиться этого с сеткой Bootstrap размером 12 с элементами меньше 5?
Можете ли вы опубликовать код, который вы пытались?