Вертикальное выравнивание в таблице начальной загрузки

123

Я пытаюсь отобразить таблицу с 4 столбцами, один из которых является изображением. Ниже приведен снимок: -введите описание изображения здесь

Я хочу выровнять текст по вертикали по центру, но почему-то CSS не работает. Я использовал адаптивные таблицы начальной загрузки. Я хочу знать, почему мой код не работает и как правильно его заставить работать.

Ниже приведен код таблицы

CSS

img {
    height: 150px;
    width: 200px;
}
th, td {
    text-align: center;
    vertical-align: middle;
}

HTML

<table id="news" class="table table-striped table-responsive">
    <thead>
        <tr>
          <th>Name</th>
          <th>Email</th>
          <th>Phone</th>
          <th>Photo</th>
        </tr>
    </thead>
    <tbody>
        <?php
        $i=0;
        foreach ($result as $row) 
        { ?>
        <tr>
            <td>
                <?php echo 'Lorem Ispum'; ?>
            </td>
            <td>
                <?php echo 'lrem@ispum.com'; ?>
            </td>
            <td>
                <?php echo '9999999999'; ?>
            </td>
            <td>
                <?php echo '<img src="'.  base_url('files/images/test.jpg').'">'; ?>
            </td>
        </tr>

        <?php
        }
        ?>           
    </tbody>
</table>
Пиюш Вишвакарма
источник

Ответы:

252

Исходя из того, что вы предоставили, ваш селектор CSS недостаточно конкретен , чтобы переопределить правила CSS, определенные Bootstrap.

Попробуй это:

.table > tbody > tr > td {
     vertical-align: middle;
}

В Boostrap 4 этого можно достичь с помощью служебного класса .align-middle Vertical Alignment .

<td class="align-middle">Text</td>
hungerstar
источник
8
@BarryFranklin Добавьте класс в эту таблицу <table class="table vertical-align">и немного увеличьте специфичность селектора, используя этот класс table.vertical-align > tbody > tr > td {}. Вы также можете сделать это, .table.vertical-alilgn > tbody > tr > td {}хотя у этого есть более высокая специфичность, чем у первого варианта. Я всегда стараюсь как можно меньше повышать конкретность в моих селекторах CSS. Обратите внимание, что первая опция выбирает элемент таблицы, который имеет, .vertical-alignа вторая опция выбирает элемент, который имеет классы .tableAND .vertical-align.
hungerstar
37

Начиная с Bootstrap 4, теперь гораздо проще использовать встроенные утилиты вместо настраиваемого CSS. Вам просто нужно добавить класс align-middle к td-element:

<table>
  <tbody>
    <tr>
      <td class="align-baseline">baseline</td>
      <td class="align-top">top</td>
      <td class="align-middle">middle</td>
      <td class="align-bottom">bottom</td>
      <td class="align-text-top">text-top</td>
      <td class="align-text-bottom">text-bottom</td>
    </tr>
  </tbody>
</table>
Андреас Бергстрём
источник
11

У меня <td class="align-middle" >${element.imie}</td>работает. Я использую Bootstrap v4.0.0-beta.

Павел Гил
источник
4

Похоже, что работает следующее:

table td {
  vertical-align: middle !important;
}

Вы можете подать заявку на конкретную таблицу так:

#some_table td {
  vertical-align: middle !important;
}
Vasco
источник
7
!importantявляется излишним, добавляя больше конкретики, чем необходимо.
hungerstar
2

SCSS

.table-vcenter {
    td,
    th {
        vertical-align: middle;
    }
}

использование

<table class="table table-vcenter">
</table>
Сюкур Зай
источник
0

Пытаться:

.table thead th{
   vertical-align:middle;
}
Андрей Козлов
источник