Bootstrap 4 карты горизонтальной прокрутки? - PullRequest
0 голосов
/ 01 ноября 2018

Я использую загрузочную карту для создания базового изображения и текста под ней. Решила использовать класс карты, так как она довольно хорошая структура и не хотела использовать слишком много CSS для создания списка div по горизонтали. то, что я хочу, это как галерея изображений с горизонтальной прокруткой, как это enter image description here

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

.card-group {
    overflow-x: scroll;
    white-space: nowrap;
    max-width: 30rem;
    padding: 1rem;
    }
<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title>Document</title>
	
	<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>


	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
	 crossorigin="anonymous"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
	 crossorigin="anonymous"></script>
	<script src="./index.js"></script>
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
	 crossorigin="anonymous">


</head>

<body>
	<div class="container mt-4">
		<div class="horzontal-scrollgallery">
			<div class="card-group">
				<div class="card pr-3">
					<img class="card-img-top" src="./images/chicago.jpg" alt="Card image">
					<div class="card-body text-center">
						<h4 class="card-title">John Doe</h4>
					</div>
				</div>
				<div class="card pr-3">
					<img class="card-img-top" src="./images/chicago.jpg" alt="Card image">
					<div class="card-body text-center">
						<h4 class="card-title">John Doe</h4>
					</div>
				</div>
				<div class="card pr-3">
					<img class="card-img-top" src="./images/chicago.jpg" alt="Card image">
					<div class="card-body text-center">
						<h4 class="card-title">John Doe</h4>
					</div>
				</div>
				<div class="card pr-3">
					<img class="card-img-top" src="./images/chicago.jpg" alt="Card image">
					<div class="card-body text-center">
						<h4 class="card-title">John Doe</h4>
					</div>
				</div>

			</div>
		</div>
	</div>

</body>

</html>
</body>

</html>

1 Ответ

0 голосов
/ 02 ноября 2018

Причина, по которой ваши карты становятся меньше, заключается в том, что .card-group отображается как flex, а элементы карты flex-grow установлены в 1, что означает, что они будут занимать одинаковую ширину:

enter image description here

enter image description here

Чтобы получить то, что вы хотите, вы можете определить собственный класс вместе с его значением по умолчанию .card-group (чтобы вы не переопределяли стили группы карт по умолчанию), установить его стиль переполнения, а также его дочерние элементы <card> flex-basis, чтобы они имели ширину по умолчанию. Вам нужно будет установить стиль обтекания группы карт на no-wrap, а также установить по умолчанию wrap.

CSS

@media (min-width: 576px) {
    .card-group.card-group-scroll {
        overflow-x: auto;
        flex-wrap: nowrap;
    }

    .card-group.card-group-scroll > .card {
        flex-basis: 35%;
    }
}

Результат

enter image description here

скрипка: http://jsfiddle.net/b2jw13go/1/

...