แถวซ้อนกันกับระบบกริด bootstrap?


196

ฉันต้องการ 1 ภาพขนาดใหญ่ขึ้นด้วย 4 ภาพขนาดเล็กในรูปแบบ 2x2 เช่นนี้:

รูปที่ 1 ตัวอย่าง

ความคิดแรกของฉันคือการบ้านทุกอย่างในแถวเดียว จากนั้นสร้างสองคอลัมน์และในคอลัมน์ที่สองให้สร้างสองแถวและสองคอลัมน์เพื่อสร้างเอฟเฟกต์ 1x1 และ 2x2

อย่างไรก็ตามดูเหมือนจะเป็นไปไม่ได้หรือฉันแค่ทำไม่ถูกต้อง?


โปรดโพสต์ HTML / CSS ที่คุณได้ลองไปแล้ว
Steve Sanders

ลองสิ่งนี้: jsfiddle.net/KXje2/9 ฉันแก้ไขซอของฉันเพื่อรองรับหน้าจอขนาดใหญ่ผ่านหน้าจอขนาดเล็กพิเศษ
BuddhistBeast

รหัสด้านบนทำงานให้คุณได้หรือไม่ ...
BuddhistBeast

คำตอบ:


299

Bootstrap เวอร์ชัน 3.x

เช่นเคยอ่านเอกสารที่ดีของ Bootstrap:

3.x เอกสาร : https://getbootstrap.com/docs/3.3/css/#grid-nesting

ตรวจสอบให้แน่ใจว่าแถวระดับผู้ปกครองอยู่ภายใน.containerองค์ประกอบ เมื่อใดก็ตามที่คุณต้องการซ้อนแถวให้เปิด.rowคอลัมน์ใหม่ภายในคอลัมน์ของคุณ

นี่เป็นเค้าโครงแบบง่าย ๆ สำหรับการทำงานจาก:

<div class="container">
    <div class="row">
        <div class="col-xs-6">
            <div class="big-box">image</div>
        </div>
        <div class="col-xs-6">
            <div class="row">
                <div class="col-xs-6"><div class="mini-box">1</div></div>
                <div class="col-xs-6"><div class="mini-box">2</div></div>
                <div class="col-xs-6"><div class="mini-box">3</div></div>
                <div class="col-xs-6"><div class="mini-box">4</div></div>
            </div>
        </div>
    </div>
</div>

Bootstrap เวอร์ชัน 4.0

เอกสาร 4.0 : http://getbootstrap.com/docs/4.0/layout/grid/#nesting

นี่คือเวอร์ชันที่อัปเดตสำหรับ 4.0 แต่คุณควรอ่านส่วนของเอกสารทั้งหมดในกริดเพื่อให้คุณเข้าใจวิธีการใช้ประโยชน์จากฟีเจอร์ที่ทรงพลังนี้

<div class="container">
  <div class="row">
    <div class="col big-box">
      image
    </div>

    <div class="col">
      <div class="row">
        <div class="col mini-box">1</div>
        <div class="col mini-box">2</div>
      </div>
      <div class="row">
        <div class="col mini-box">3</div>
        <div class="col mini-box">4</div>
      </div>
    </div>

  </div>
</div>

การสาธิตใน Fiddle jsFiddle 3.x | jsFiddle 4.0

ซึ่งจะมีลักษณะเช่นนี้ ( พร้อมการเพิ่มสไตล์เล็กน้อย ):

ภาพหน้าจอ


1
ขอโทษที่จี้เธรดอายุ 1 ปี แต่คุณรู้วิธีรับ 0px ระหว่างรูปภาพและ 1 และ 3 หรือไม่
alex

2
alex @ นั่นเอง - เพียงแค่ตั้งค่าmargin: 0;ใน.mini-boxองค์ประกอบ ตัวอย่างของฉันเพิ่งเพิ่มอีกหนึ่งอันเพื่อความชัดเจน แต่คุณสามารถลบบรรทัดทั้งหมดได้ นี่คือตัวอย่าง
KyleMit

4
เหตุใดจึงไม่มีแถวระหว่าง col สำหรับ minibox 2 และ col สำหรับ minibox 3 และจะเกิดอะไรขึ้นหากมี?
pashute

4
@pashute ดูตาราง Bootstrap 3 จริง ๆ แล้วมันมีความสำคัญอย่างไรกับจำนวนคอลัมน์ในแถว? . แต่ละกล่องขนาดเล็กใช้พื้นที่ 50% ของพื้นที่ว่าง (จำกัด โดยคอลัมน์) ดังนั้นสองกล่องจะใช้แถวแรก รายการพิเศษใด ๆ ก็จะตัดเป็นบรรทัดใหม่ คุณยังสามารถจับคู่แต่ละแถวเป็นแถว แต่ไม่จำเป็น Bootstrap ล้อมรอบตามค่าเริ่มต้นดังนั้นคุณไม่ต้องวุ่นวายกับมาร์กอัปด้วยแถวใหม่ ถ้ามันมีความหมายเชิงความหมายฉันจะบอกว่าไป แต่ถ้าคุณเพิ่งแสดงรายการของวัตถุ 4 รายการให้เก็บไว้ในแถวเดียวกัน
KyleMit

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

6

การเพิ่มสิ่งที่ @KyleMit พูดไว้พิจารณาใช้:

  • col-md-* คลาสสำหรับคอลัมน์ภายนอกที่ใหญ่กว่า
  • col-xs-* คลาสสำหรับคอลัมน์ภายในที่เล็กกว่า

สิ่งนี้จะมีประโยชน์เมื่อคุณดูหน้าเว็บด้วยขนาดหน้าจอที่แตกต่างกัน

บนหน้าจอขนาดเล็กการตัดคอลัมน์ด้านนอกที่มีขนาดใหญ่กว่าจะเกิดขึ้นในขณะที่ยังคงรักษาคอลัมน์ภายในที่เล็กกว่าหากเป็นไปได้

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