Выровнять по вертикали ячейку сетки по центру? - PullRequest
0 голосов
/ 07 января 2019

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

Если я использую 'text-align: right', это работает ... (Первый пример)

Если я использую 'display: flex' и 'align-items: center', это работает ... (Второй пример)

Если я использую их оба, text-align: right перестанет работать? (Третий пример)

Как правильно выровнять текст по центру, пожалуйста и спасибо.

.container {
  display: grid;
  grid-template-columns: 150px auto;
}

.A {
  background-color: cyan;
  display: flex;
  align-items: center;
}

.B {
  background-color: cyan;
  text-align: right;
}

.C {
  background-color: cyan;
  display: flex;
  align-items: center;
  text-align: right;
}

.D {
  background-color: magenta;
}
<div class="container">
  <div class="A">
    Test.
  </div>
  <div class="D">
    <ul>
      <li>Test.</li>
      <li>Test.</li>
      <li>Test.</li>
    </ul>
  </div>
</div>
&nbsp;
<div class="container">
  <div class="B">
    Test.
  </div>
  <div class="D">
    <ul>
      <li>Test.</li>
      <li>Test.</li>
      <li>Test.</li>
    </ul>
  </div>
</div>
&nbsp;
<div class="container">
  <div class="C">
    Test.
  </div>
  <div class="D">
    <ul>
      <li>Test.</li>
      <li>Test.</li>
      <li>Test.</li>
    </ul>
  </div>
</div>

Ответы [ 2 ]

0 голосов
/ 07 января 2019

justify-content: flex-end; - это то, что вам нужно для выравнивания по центру текста по правому краю

Подробнее о justify-content: здесь или здесь

.container {
  display: grid;
  grid-template-columns: 150px auto;
}

.A {
  background-color: cyan;
  display: flex;
  align-items: center;
}

.B {
  background-color: cyan;
  text-align: right;
}

.C {
  background-color: cyan;
  display: flex;
  align-items: center;
  text-align: right;
  justify-content: flex-end;
}

.D {
  background-color: magenta;
}
<div class="container">
  <div class="A">
    Test.
  </div>
  <div class="D">
    <ul>
      <li>Test.</li>
      <li>Test.</li>
      <li>Test.</li>
    </ul>
  </div>
</div>
&nbsp;
<div class="container">
  <div class="B">
    Test.
  </div>
  <div class="D">
    <ul>
      <li>Test.</li>
      <li>Test.</li>
      <li>Test.</li>
    </ul>
  </div>
</div>
&nbsp;
<div class="container">
  <div class="C">
    Test.
  </div>
  <div class="D">
    <ul>
      <li>Test.</li>
      <li>Test.</li>
      <li>Test.</li>
    </ul>
  </div>
</div>
0 голосов
/ 07 января 2019

Если вам нужно установить align-items, вы должны быть display: flex, поэтому причина, по которой вы работаете в первом, В третьем примере вы не используете flexbox, поэтому align-items не работает и text-align: center будет тоже не работает, потому что если вам нужно выровнять текст по горизонтали, вам нужно использовать justify-content с flexbox, если вам нужно выровнять его по вертикали, вам понадобится align-items с flexbox, так что вот ваш пример с правильными свойствами

.container {
  display: grid;
  grid-template-columns: 150px auto;
}
.A,
.B,
.C {
  display: flex;
  justify-content: flex-end;
  align-items: center;
}
.A {
  background-color: cyan;
}

.B {
  background-color: cyan;
}

.C {
  background-color: cyan;
}

.D {
  background-color: magenta;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...