จะแสดงตารางบนมือถือโดยใช้ Bootstrap ได้อย่างไร?


90

ตารางของฉันแสดงผลได้ดีบนเดสก์ท็อป แต่เมื่อฉันลองดูเวอร์ชันมือถือตารางของฉันก็กว้างเกินไปสำหรับหน้าจออุปกรณ์เคลื่อนที่ ฉันกำลังใช้รูปแบบที่ตอบสนอง

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


2
ฉันสังเกตเห็นว่า Bootstrap 3.0 จะเป็น "มือถือก่อน" มีใครคิดว่าพวกเขาจะแก้ไข "ปัญหา" ของตารางบนอุปกรณ์เคลื่อนที่ได้หรือไม่?

ตารางยังคงเหมือนเดิมใน Bootstrap 3 :(
Giles Roberts


@ ta.speot.is ตอนนี้พวกเขาดีขึ้นกว่าในรุ่นผู้สมัคร ตัวอย่างทั้งหมดมีเพียง 4 คอลัมน์ ยังใช้งานได้ไม่ดีนักสำหรับโต๊ะกว้าง ๆ ฉันลงเอยด้วยการใช้โซลูชันที่มีคอลัมน์แรกคงที่และการเลื่อนที่เหลือทั้งหมด
Giles Roberts

@ ta.speot.is เพิ่งเห็นคำตอบของคุณด้านล่าง พลาดไม่ได้ที่ Bootstrap 3 มีคลาสที่ตอบสนองต่อตาราง ทำงานได้ดีถ้าคุณไม่ต้องการให้บางคอลัมน์มองเห็นได้ตลอดเวลา
Giles Roberts

คำตอบ:


125

Bootstrap 3 แนะนำตารางตอบสนอง :

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

Bootstrap 4 นั้นคล้ายกัน แต่สามารถควบคุมได้มากขึ้นผ่านคลาสใหม่ ๆ :

... ตอบสนองทุกวิวพอร์ต ... ด้วย.table-responsive. .table-responsive{-sm|-md|-lg|-xl}หรือเลือกเบรกพอยต์สูงสุดที่จะมีตารางการตอบสนองขึ้นไปโดยใช้

ให้เครดิตกับJason Bradleyสำหรับการให้ตัวอย่าง:

ตารางตอบสนอง


6
ขอขอบคุณ. เช่นเดียวกับผู้คน 99.9% ฉันไม่รำคาญที่จะอ่านเอกสารของการอัปเดต ฉันเดาว่าฉันควรจะมี
David Bélanger

1
แท้จริงมันคือ! นอกจากนี้ยังทำในสิ่งที่ฉันต้องการตั้งแต่แรกดังนั้นสำหรับฉันมันเป็น 2 in 1!
David Bélanger

อะไรกันแน่ที่ไม่table-responsiveชั้นทำอย่างไร เอกสาร Bootstrap ระบุว่า "เพื่อให้เลื่อนในแนวนอน" แต่ฉันไม่สังเกตเห็นความแตกต่างที่เกี่ยวข้องกับการเลื่อน ความแตกต่างเพียงอย่างเดียวที่ฉันสังเกตเห็นคือตารางมีขอบด้านนอกเมื่ออยู่ภายใต้ขนาดหน้าจอที่กำหนด ( ดังที่เห็นในตัวอย่าง )
Dennis

5
@ ta.speot.is ฉันรู้ว่าฉันอ่านเอกสารผิดและใช้คลาสไม่ถูกต้อง ฉันเพิ่ม.table-responsiveเข้าไปในตารางเอง (เช่น<table class="table table-responsive">) แทนที่จะห่อตาราง.table-responsiveซึ่งคุณได้ชี้ให้เห็นในตัวอย่างของคุณ
Dennis

1
@PirateApp ใช้hidden-*กับtdคอลัมน์ที่คุณต้องการซ่อนgetbootstrap.com/docs/3.3/css/#responsive-utilities
ta.speot.is

68

คุณอาจลองใช้วิธีใดวิธีหนึ่งเหล่านี้เนื่องจากตารางขนาดใหญ่ไม่เหมาะกับมือถือแม้ว่าจะใช้งานได้:

http://elvery.net/demo/responsive-tables/

ฉันเป็นส่วนหนึ่งของ 'No More Tables' แต่แน่นอนว่าขึ้นอยู่กับใบสมัครของคุณ


3
ลิงค์ที่ยอดเยี่ยมและสามวิธีแก้ปัญหาที่ยอดเยี่ยมจริงๆ! ฉันต้อง Google กลับไปที่คำถามนี้เพื่อเพิ่มคะแนนคำตอบของคุณ ขอบคุณ!
Simon

2
คำตอบที่ประกอบด้วยลิงก์เพียงอย่างเดียวคือมารยาท Stack Overflow ที่ไม่ดี หน้าอาจหายไปเนื้อหาในหน้าสามารถเปลี่ยนแปลงได้คำตอบไม่ปรากฏในทันทีไม่สามารถปรับปรุงคำตอบได้และอื่น ๆ BTW ลิงก์ไม่ชี้ไปที่เนื้อหาที่ถูกต้องอีกต่อไป
Dennis

เห็นด้วย แต่สำหรับตอนนี้: web.archive.org/web/20130725223053/http://elvery.net/demo/…
คอร์ด

1
@ เดนนิสพูดถูก โปรดอธิบายคำตอบของคุณอย่างละเอียดเพื่อสรุปสิ่งที่อยู่ในลิงก์และเก็บลิงก์ไว้สำหรับการสาธิตและรายละเอียดเพิ่มเติม คุณได้รับคะแนนโหวตของฉัน แต่ลิงก์นั้นน่าสนใจมาก ไชโย
Mario Awad

5

ตารางทั้งหมดที่อยู่ใน bootstrap จะยืดออกตามคอนเทนเนอร์ที่มีอยู่คุณสามารถวางตารางไว้ใน.spanองค์ประกอบเพื่อควบคุมขนาดได้ ดังนั้นคำถามนี้อาจช่วยคุณได้

เหตุใดตาราง Bootstrap ของ Twitter จึงมีความกว้าง 100% เสมอ


0

หลังจากค้นคว้าข้อมูลเป็นเวลาเกือบ 1 เดือนฉันพบโค้ดด้านล่างซึ่งทำงานได้อย่างสวยงามและสมบูรณ์ 100% บนเว็บไซต์ของฉัน หากต้องการตรวจสอบตัวอย่างการทำงานคุณสามารถตรวจสอบได้จากลิงค์ https://www.jobsedit.in/state-government-jobs/

รหัส CSS -----

@media only screen and (max-width: 500px)  {
    .resp table  { 
        display: block ; 
    }   
    .resp th  { 
        position: absolute;
        top: -9999px;
        left: -9999px;
        display:block ;
    }   
     .resp tr { 
    border: 1px solid #ccc;
    display:block;
    }   
    .resp td  { 
        /* Behave  like a "row" */
        border: none;
        border-bottom: 1px solid #eee; 
        position: relative;
        width:100%;
        background-color:White;
        text-indent: 50%; 
        text-align:left;
        padding-left: 0px;
        display:block;      
    }
    .resp  td:nth-child(1)  {
        border: none;
        border-bottom: 1px solid #eee; 
        position: relative;
        font-size:20px;
        text-indent: 0%;
        text-align:center;
}   
    .resp td:before  { 
        /* Now like a table header */
        position: absolute;
        /* Top/left values mimic padding */
        top: 6px;
        left: 6px;
        width: 45%; 
        text-indent: 0%;
        text-align:left;
        white-space: nowrap;
        background-color:White;
        font-weight:bold;
    }
    /*
    Label the data
    */
    .resp td:nth-of-type(2):before  { content: attr(data-th) }
    .resp td:nth-of-type(3):before  { content: attr(data-th) }
    .resp td:nth-of-type(4):before  { content: attr(data-th) }
    .resp td:nth-of-type(5):before  { content: attr(data-th) }
    .resp td:nth-of-type(6):before  { content: attr(data-th) }
    .resp td:nth-of-type(7):before  { content: attr(data-th) }
    .resp td:nth-of-type(8):before  { content: attr(data-th) }
    .resp td:nth-of-type(9):before  { content: attr(data-th) }
    .resp td:nth-of-type(10):before  { content: attr(data-th) }
}

รหัส HTML -

<table>
<tr>
<td data-th="Heading 1"></td>
<td data-th="Heading 2"></td>
<td data-th="Heading 3"></td>
<td data-th="Heading 4"></td>
<td data-th="Heading 5"></td>
</tr>
</table>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.