Выравнивание по центру с помощью сетки CSS

#css #alignment

#css — код #выравнивание

Вопрос:

У меня есть кнопка class="view-more" , которую я пытаюсь выровнять по центру на странице в моем div class="main" , но я просто не могу заставить ее двигаться.

Я пробовал параметры выравнивания, содержимого и элементов, а также параметры выравнивания, но они просто остаются в левом нижнем углу div.

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

Вот полный основной код.

 main {
  background-color: var(--secondary-color);
  height: 1060px;
}

main .videos {
  display: grid;
  grid-template-columns: 50% 50%;
  margin: 5px;
}

main .videos img {
  height: 240px;
  width: 92%;
  margin: 10px 0 0 24px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, .4);
  z-index: 100;
  position: relative;
}

main a {
  position: relative;
}

main .videos h4 {
  padding: 0;
  margin: 15px 0 0 0;
  color: var(--light-color);
  text-align: center;
  font-family: 'Oswald', sans-serif;
  font-size: 1.6em;
}

main .videos h4 span {
  background-color: rgba(0, 0, 0, 0.1);
  padding: 0 10px;
  border-radius: 10px;
}

main .videos i {
  position: absolute;
  color: white;
  z-index: 3;
  top: 30%;
  left: 40%;
  box-shadow: 0 4px 8px rgba(0, 0, 0, .8);
  border-radius: 100px;
}

main .view-more {
  position: absolute;
  border-radius: 10px;
  background-color: var(--dark-color);
  color: var(--hightlight-color);
} 
 <main>
    <h3>Featured Videos</h3>
    <div class="videos">
        <h4><span>Hands // Tobias Levin</span></h4>
        <h4><span>Rise // Virtuoso</span></h4>
        <a href="https://www.youtube.com/watch?v=kQLhO7dW5ZY" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/tobias1.jpg" alt=""></a>
        <a href="https://www.youtube.com/watch?v=S7kG641iA_g" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/rise.jpg" alt=""></a>
        <h4><span>This is Dan and Dave</span></h4>
        <h4><span>Super // Chris Webber</span></h4>
        <a href="https://www.youtube.com/watch?v=hBRkiXlW_kM" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/dand.jpg" alt=""></a>
        <a href="https://www.youtube.com/watch?v=Lyf_SsOThMs" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/cwebber.jpg" alt=""></a>
        <h4><span>Superhuman // Brian Tudor</span></h4>
        <h4><span>Smoke Screen // Jaspas Deck</span></h4>
        <a href="https://www.youtube.com/watch?v=qU0I8BnwoFk" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/bt.jpg" alt=""></a>
        <a href="https://www.youtube.com/watch?v=_Wk3imz44qI" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/smokescreen.jpg" alt=""></a>
    </div>
    <button class="view-more">Open The Vault</button>
</main> 

Комментарии:

1. Мы не можем определить проблему только с помощью CSS, вам также необходимо включить HTML-код в свой вопрос

2. Добавьте css и html в один фрагмент. В противном случае мы не сможем увидеть css в работе.

3. Одобренное редактирование, извините, я не очень хорошо знаю, как использовать этот сайт.

4. Почему вы смешиваете grid-template и position:absolute? Сетка может выполнить эту работу, если вы установите дочерние элементы в правильные ячейки.

5. @G-Cyrillus Спасибо, что указали на это, я все еще учусь, поэтому иногда я немного путаюсь во всех элементах. Я немного подумал и добавил кнопку обратно в основную сетку и просто выровнял себя вместе с 2 столбцами, и это сработало отлично.

Ответ №1:

Вы не возражаете, если заголовок / все в главном контейнере будет центрирован? Если нет, вы можете просто добавить выравнивание текста по центру в контейнер, который будет центрировать дочерние элементы. Проблема с тем, что ваш код не перемещает кнопку, заключается в том, что вы добавили «абсолютную позицию» к кнопке, что означает, что она будет центрироваться не относительно своего родительского элемента, а скорее к окну. Я удалил эту абсолютную позицию, и теперь кнопка будет прослушивать своего родителя. Имеет ли это смысл?

 main {
  background-color: var(--secondary-color);
  height: 1060px;
  text-align: center;
}

main .videos {
  display: grid;
  grid-template-columns: 50% 50%;
  margin: 5px;
}

main .videos img {
  height: 240px;
  width: 92%;
  margin: 10px 0 0 24px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, .4);
  z-index: 100;
  position: relative;
}

main a {
  position: relative;
}

main .videos h4 {
  padding: 0;
  margin: 15px 0 0 0;
  color: var(--light-color);
  text-align: center;
  font-family: 'Oswald', sans-serif;
  font-size: 1.6em;
}

main .videos h4 span {
  background-color: rgba(0, 0, 0, 0.1);
  padding: 0 10px;
  border-radius: 10px;
}

main .videos i {
  position: absolute;
  color: white;
  z-index: 3;
  top: 30%;
  left: 40%;
  box-shadow: 0 4px 8px rgba(0, 0, 0, .8);
  border-radius: 100px;
}

main .view-more {
  border-radius: 10px;
  background-color: var(--dark-color);
  color: var(--hightlight-color);
} 
 <main>
                <h3>Featured Videos</h3>
                <div class="videos">
                    <h4><span>Hands // Tobias Levin</span></h4>
                    <h4><span>Rise // Virtuoso</span></h4>
                    <a href="https://www.youtube.com/watch?v=kQLhO7dW5ZY" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/tobias1.jpg" alt=""></a>
                    <a href="https://www.youtube.com/watch?v=S7kG641iA_g" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/rise.jpg" alt=""></a>
                    <h4><span>This is Dan and Dave</span></h4>
                    <h4><span>Super // Chris Webber</span></h4>
                    <a href="https://www.youtube.com/watch?v=hBRkiXlW_kM" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/dand.jpg" alt=""></a>
                    <a href="https://www.youtube.com/watch?v=Lyf_SsOThMs" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/cwebber.jpg" alt=""></a>
                    <h4><span>Superhuman // Brian Tudor</span></h4>
                    <h4><span>Smoke Screen // Jaspas Deck</span></h4>
                    <a href="https://www.youtube.com/watch?v=qU0I8BnwoFk" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/bt.jpg" alt=""></a>
                    <a href="https://www.youtube.com/watch?v=_Wk3imz44qI" class="fresco"><i class="fas fa-play-circle fa-7x"></i><img src="/images/smokescreen.jpg" alt=""></a>
                </div>
                <button class="view-more">Open The Vault</button>
            </main> 

Комментарии:

1. Я удалил позицию: absolute на кнопке и добавил текстовое выравнивание, о котором вы упомянули, но теперь я вообще не могу найти кнопку. С помощью position: absolute он выровнял его, но не по центру, он был слишком далеко вправо.

2. @FrocketGaming Здравствуйте, извините, я не был активен на сайте. С Днем благодарения! Смогли ли вы найти решение? Кажется странным, что кнопка исчезнет, если у вас не будет других элементов с абсолютной позицией, которые будут мешать. РЕДАКТИРОВАТЬ :: Игнорируйте мой комментарий, я видел, что у вас есть решение, работающее в комментариях выше!