จัดแนวตั้งในตาราง bootstrap


123

ฉันกำลังพยายามแสดงตารางที่มี 4 คอลัมน์ซึ่งหนึ่งในนั้นเป็นรูปภาพ ด้านล่างนี้คือภาพรวม: -ใส่คำอธิบายภาพที่นี่

ฉันต้องการจัดแนวข้อความให้อยู่ในตำแหน่งกึ่งกลางในแนวตั้ง แต่ดูเหมือนว่า css จะใช้งานไม่ได้ ฉันใช้ตารางตอบสนอง bootstrap แล้ว ฉันต้องการทราบว่าเหตุใดรหัสของฉันจึงไม่ทำงานและอะไรคือวิธีการที่ถูกต้องในการทำให้มันใช้งานได้

ต่อไปนี้เป็นรหัสสำหรับตาราง

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>

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 ที่กำหนดเอง คุณต้องเพิ่ม class 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>


4

สิ่งต่อไปนี้ดูเหมือนจะใช้งานได้:

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

คุณสามารถนำไปใช้กับตารางเฉพาะได้เช่นกัน:

#some_table td {
  vertical-align: middle !important;
}

7
!importantมากเกินไปและเพิ่มความเฉพาะเจาะจงมากเกินความจำเป็น
Hungerstar


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.