Я давно не использовал bootstrap, но основной принцип заключается в том, что медиа-запрос обрабатывает это. Код, который специально это делает, может быть что-то вроде этого ...
/******** The maximum size the XS columns will stay vertical *****/
@media only screen and (max-width: 800px) {
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5,
.col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10
.col-xs-11, .col-xs-12 {
width:100%;
}
}
Пока область просмотра меньше 800 пикселей, все столбцы xs будут иметь ширину 100%. Все, что связано с этим и его стилями по умолчанию, представленными в вашем исходном вопросе, вступит во владение, и они снова будут горизонтальными, а не вертикальными.
Обновление
Теперь мне просто любопытно, поэтому не против взглянуть на это. Так что это из BS4 CSS ...
.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,
.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,
.col-xl-auto {
position: relative;
width: 100%;
min-height: 1px;
padding-right: 15px;
padding-left: 15px;
}
Так что это размер по умолчанию для каждого столбца. Каждый из них настроен на 100%, поэтому он складывается, когда медиа-запрос не действует.
Теперь для первого набора столбцов они использовали этот медиазапрос
@media (min-width: 576px) {
.col-sm {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
/*** followed by all the other -sm column sizes ***/
}
Если бы они делали это для каждого размера столбца при увеличении области просмотра, это объясняло бы, почему при небольшом размере они выглядят как 100% и вертикально сложены, несмотря на отсутствие явного запроса для этого. Это все оригинальные правила CSS, которые сделали это.