Центрирование изображений (как по вертикали, так и по горизонтали) в карусели Bootstrap 4 - PullRequest
0 голосов
/ 14 декабря 2018

Я использую карусель Bootstrap 4 и пытаюсь отцентрировать изображение по вертикали и горизонтали.Ниже приведен мой код вместе со стилем:

<div id="myCarousel" class="carousel slide" data-ride="carousel">
    <ul class="carousel-indicators">
        <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
        <li data-target="#myCarousel" data-slide-to="1"></li>
        <li data-target="#myCarousel" data-slide-to="2"></li>
    </ul>

    <div class="carousel-inner">
        <div class="carousel-item active">
            <img src="https://placehold.it/200x200/c0392b/000">                      
        </div>
    </div>

    <a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
    </a>

    <a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
    </a>
</div>



#myCarousel {
    height: 100%;
    width: 100%;    
}

.carousel-indicators {
    margin-bottom: 8px;
}

.carousel-indicators>li {
    width: 10px;
    height: 10px;
    border-radius: 100%;
}

.carousel-inner {
    height: 100%;
    background-color: #213B74;
}

.carousel-item {
    text-align: center;
}

.carousel-item img {
    display: block;
    margin: auto;
}

На данный момент я добавил только один элемент карусели для тестирования.Изображение центрируется по горизонтали.Тем не менее, я попытался установить атрибут отображения для изображения, чтобы заблокировать и его поля на автоматический, но он по-прежнему не по центру по вертикали.Может кто-нибудь сказать мне, что я делаю не так, пожалуйста?

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

Спасибо

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Здесь мы идем, вам нужно будет добавить <div> в .carousel-item, и в этом div ваше изображение будет размещено.Мы используем этот медиаторный div для применения эффекта центрирования * 1003. *

Если вы попытаетесь применить классы flex, такие как d-flex к .carousel-item, карусель не будет работать должным образом.

здесь я добавил <div class="parent d-flex justify-content-center">, который помещает изображение внутри него в точный центр div.Также вам нужно будет указать div min-height, эквивалентный .carousel-item ИЛИ некоторой стандартной высоты для вашей карусели, чтобы он не разрушался, если внутреннее изображение меньше по размеру.

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

#myCarousel {
  height: 100%;
  width: 100%;
}

.carousel-indicators {
  margin-bottom: 8px;
}

.carousel-indicators>li {
  width: 10px;
  height: 10px;
  border-radius: 100%;
}

.carousel-inner {
  height: 100%;
  background-color: #213B74;
}

.carousel-item {
  text-align: center;
}

.parent {
  min-height: 200px;
}

.carousel-item img {
  display: block;
  margin: auto;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" 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="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

<div id="myCarousel" class="carousel slide" data-ride="carousel">
  <ul class="carousel-indicators">
    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#myCarousel" data-slide-to="1"></li>
    <li data-target="#myCarousel" data-slide-to="2"></li>
  </ul>

  <div class="carousel-inner">
    <div class="carousel-item active">
      <div class="parent d-flex justify-content-center">
        <img src="https://placehold.it/100x200/c0392b/000">
      </div>
    </div>
    <div class="carousel-item">
      <div class="parent d-flex justify-content-center">
        <img src="https://placehold.it/200x100/c0392b/000">
      </div>
    </div>
    <div class="carousel-item">
      <div class="parent d-flex justify-content-center">
        <img src="https://placehold.it/150x150/c0392b/000">
      </div>
    </div>
  </div>

  <a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>

  <a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>
0 голосов
/ 14 декабря 2018

Этого можно добиться с помощью align-items-center & align-content-center Bootstrap 4 flex-классов.Смотрите пример ниже:

.main-wrapper {
  width: 100%;
  height: 100vh;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<div class="main-wrapper">
  <div class="h-100 w-100 d-flex flex-wrap align-items-center align-content-center">
    <div class="mx-auto">

      Content

    </div>
  </div>
</div>
0 голосов
/ 14 декабря 2018

Я исправил вашу проблему, используя следующий код для CSS:

#myCarousel {
    height: 100vh;
    width: 100%;    
}

.carousel-indicators {
    margin-bottom: 8px;
}

.carousel-indicators>li {
    width: 10px;
    height: 10px;
    border-radius: 100%;
}

.carousel-inner {
    height: 100%;
    background-color: #213B74;
}

.carousel-item {
   height: 100%;
}

.carousel-item img {
   position: absolute;
   left: 50%;
   top: 50%;
   transform: translate(-50%, -50%)
}

Итак, во-первых, я назначил карусели высоту 100vh, чтобы заполнить общую высоту экрана (Вы можететакже установите фиксированную высоту).Затем я сделал элемент карусели height: 100%, чтобы сделать его полностью высотой карусели, а затем применил код img элемента карусели, как указано выше, чтобы переместить изображение в центр как по горизонтали, так и по вертикали.

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