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

#html #css

#HTML #css

Вопрос:

Я работаю над веб-сайтом, и у меня есть 4 ячейки сетки, которые занимают раздел моей веб-страницы. Проблема в том, что весь мой текст находится в случайных местах, я хочу, чтобы он был центрирован внутри каждого элемента сетки (один серый, один синий, один черный, один желтый).

Я перепробовал все комбинации justify, align, self, есть идеи, как я могу это сделать? Любая помощь была бы очень признательна.

Вот мой jsfiddle, документирующий проблему: https://jsfiddle.net/RomelF/jd8L7a6n/3 /

И вот мой HTML:

 <div class="container">
<section id="welcome-section"><h1 id="name">My name's Romel, here are some of my projects:</h1>
</section>
<section id="projects">
  <div class="project-tile" id="p1"><p class="ptext"><a href="#">Tribute Page<a></p></div>
  <div class="project-tile" id="p2"><p class="ptext"><a href="#">Political Questionnaire<a></p></div>
  <div class="project-tile" id="p3"><p class="ptext"><a href="#">Landing Page<a></p></div>
  <div class="project-tile" id="p4"><p class="ptext"><a href="#">Technical Documentation<a></p></div>
</section>
  

И вот мой CSS:

 #projects {
  width: 70%;
  display: grid;
}

...

.project-tile {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  place-items: stretch;
  height: 50vh
}

#p1 {
  background: rgb(255,253,254);
  background: radial-gradient(circle, rgba(255,253,254,1) 0%, rgba(74,75,75,0.4) 100%);
  grid-column: 1 / 2;
  grid-row: 1 / 2;
}

#p2 {
  background-color: black;
  grid-column: 1 / 2;
  grid-row: 2 / 3;
}

#p3 {
  background-color: blue;
  grid-column: 2 / 3;
  grid-row: 1 / 2;
}

#p4 {
  background-color: yellow;
  grid-column: 2 / 3;
  grid-row: 2 / 3;
}

.project-tile a {
  text-decoration: none;
}

.ptext {
  align-self: center;
}
  

Ответ №1:

ваш .project-tile не обязательно должен быть самой сеткой. Использование flexbox предоставляет вам все инструменты, необходимые для центрирования элемента.

 .project-tile {
   display: flex;
   place-items: center;
   height: 50vh;
}

.ptext {
  margin: auto
}
  

Это даст вам текст по центру до тех пор, пока текст не войдет в границы родительского элемента.

Ответ №2:

Пожалуйста, удалите этот стиль

 .project-tile{
   grid-template-columns: 1fr 1fr;
   grid-template-rows: 1fr 1fr;
}
  

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

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