การจัดการตารางที่ตอบสนองใน Twitter Bootstrap


84

เมื่อความกว้างของตารางเกินความกว้างของสแปนเช่นหน้านี้: http://jsfiddle.net/rcHdC/

คุณจะเห็นเนื้อหาของตารางอยู่นอกไฟล์span.

อะไรคือวิธีที่ดีที่สุดในการตอบสนองกรณีนี้?


คุณอยากให้เกิดอะไรขึ้น?
cimmanon

คำตอบ:


153

Bootstrap 3มีตารางที่ตอบสนองได้แล้ว ไชโย! :)

คุณสามารถตรวจสอบได้ที่นี่: https://getbootstrap.com/docs/3.3/css/#tables-responsive

เพิ่ม<div class="table-responsive">รอบโต๊ะของคุณและคุณควรจะไป:

<div class="table-responsive">
  <table class="table">
    ...
  </table>
</div>

เพื่อให้ใช้งานได้กับทุกเลย์เอาต์คุณสามารถทำได้:

.table-responsive
{
    overflow-x: auto;
}

7
แต่ใช้กับอุปกรณ์ขนาดเล็กเท่านั้น (ต่ำกว่า 768px): S ที่มา: getbootstrap.com/css/#tables-responsive
VSP

1
ในการเปิดใช้งานสิ่งนี้กับเค้าโครงทุกขนาดคุณสามารถวางสไตล์ที่ตอบสนองจากบล็อก 768 ในไฟล์ foundation_and_overrides.css.scss บางอย่างเช่น ".table-responsive {width: 100%; ล้น -y: ซ่อน; ล้น -x: เลื่อน; -ms-overflow-style: -ms-autohiding-scrollbar; -webkit-overflow-scrolling: สัมผัส; } ``
genkilabs

3
@ ase69s ตรวจสอบคำตอบที่อัปเดตของฉัน ตอนนี้ฉันต้องการมันบนโต๊ะที่มีคอลัมน์มากมาย การเพิ่มไฟล์overflow-x: autoแบบกำหนดเองCSSจะเป็นเคล็ดลับสำหรับการจัดวางการแสดงผลที่ใหญ่ขึ้น
Leniel Maccaferri

คุณอาจต้องการเพิ่มเส้นขอบในคำจำกัดความของ syle นั้นด้วยเพื่อความสอดคล้อง:border: 1px solid #dddddd;
ptim

2
อาจต้องการเพิ่ม.table-responsive td, .table-responsive th { white-space:nowrap; }เพื่อให้แน่ใจว่าเซลล์จะไม่หดตัวและเพิ่มตัวแบ่งบรรทัดโดยอัตโนมัติ
rybo111

21

ทางเลือกหนึ่งที่สามารถใช้ได้คือ fooTable ใช้งานได้ดีบนเว็บไซต์ที่ตอบสนองและช่วยให้คุณตั้งค่าเบรกพอยต์ได้หลายจุด ... ลิงก์ fooTable



18

มีหลายสิ่งที่คุณสามารถทำได้เมื่อจัดการกับตารางตอบสนอง

โดยส่วนตัวแล้วฉันชอบแนวทางนี้ของ Chris Coyier:

คุณสามารถค้นหาทางเลือกอื่น ๆ ได้ที่นี่:

หากคุณสามารถใช้ประโยชน์จาก Bootstrap และรับบางสิ่งได้อย่างรวดเร็วคุณสามารถใช้ชื่อคลาส ".hidden-phone" และ ".hidden-tablet" เพื่อซ่อนแถวบางแถว แต่วิธีนี้อาจดีที่สุดในหลาย ๆ กรณี ข้อมูลเพิ่มเติม (ดู "คลาสยูทิลิตี้ที่ตอบสนอง"):


5
+1 สำหรับ Coyer Link ฉันเคยใช้สิ่งนั้นในอดีตเพื่อให้ได้ผลดี
Fetchez la vache

ใช่วิธีแก้ปัญหาของ Chris Coyer นั้นเรียบร้อยมาก ดีกว่าที่จัดทำโดย bootstrap หรือ zurbfoundation (เพียงแค่เพิ่มการเลื่อนแนวนอน)
Adrien Be

ณ ตอนนี้มกราคม 2016 Coyier และสิ่งของที่ตอบสนองของผู้อื่นมีอายุ 5-6 ปีก่อนที่ทุกคนจะเริ่มใช้ Twitter Bootstrap
Andrew Koper

1

หากคุณใช้ Bootstrap 3 และ Less คุณสามารถใช้ตารางตอบสนองกับความละเอียดทั้งหมดได้โดยการอัปเดตไฟล์:

tables.less

หรือเขียนทับส่วนนี้:

@media (max-width: @screen-xs) {
  .table-responsive {
    width: 100%;
    margin-bottom: 15px;
    overflow-y: hidden;
    overflow-x: scroll;
    border: 1px solid @table-border-color;

    // Tighten up spacing and give a background color
    > .table {
      margin-bottom: 0;
      background-color: #fff;

      // Ensure the content doesn't wrap
      > thead,
      > tbody,
      > tfoot {
        > tr {
          > th,
          > td {
            white-space: nowrap;
          }
        }
      }
    }

    // Special overrides for the bordered tables
    > .table-bordered {
      border: 0;

      // Nuke the appropriate borders so that the parent can handle them
      > thead,
      > tbody,
      > tfoot {
        > tr {
          > th:first-child,
          > td:first-child {
            border-left: 0;
          }
          > th:last-child,
          > td:last-child {
            border-right: 0;
          }
        }
        > tr:last-child {
          > th,
          > td {
            border-bottom: 0;
          }
        }
      }
    }
  }
}

ด้วย:

@media (max-width: @screen-lg) {
  .table-responsive {
    width: 100%;
...

สังเกตว่าฉันเปลี่ยนค่า line @ screen-XX แรกอย่างไร

ฉันรู้ว่าการทำให้ตารางทั้งหมดตอบสนองอาจฟังดูไม่ดีนัก แต่ฉันพบว่ามีประโยชน์อย่างยิ่งที่จะเปิดใช้งาน LG บนโต๊ะขนาดใหญ่ (มีคอลัมน์จำนวนมาก)

หวังว่ามันจะช่วยใครบางคน

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