คอนเทนเนอร์ของเหลวเทียบกับ. ภาชนะบรรจุ


509

เพิ่งดาวน์โหลด 3.1 และพบในเอกสาร ...

เปิดรูปแบบตารางใด ๆ ความกว้างคงเป็นรูปแบบเต็มความกว้างโดยการเปลี่ยนนอกสุดของคุณจะ.container.container-fluid

มองในbootstrap.cssก็ปรากฏว่าเป็นเหมือน.container-fluid .containerทั้งคู่มี CSS เหมือนกันและทุกอินสแตนซ์ของ.container-fluidจะถูกจับคู่กับ.containerและคลาสคอลัมน์ทั้งหมดจะถูกระบุเป็นเปอร์เซ็นต์

เมื่อ twiddling ด้วยตัวอย่างฉันไม่เห็นความแตกต่างใด ๆ

ขณะที่ฉันยังใหม่กับ Bootstrap ฉันคิดว่าฉันขาดอะไรไป ใครซักคนใช้เวลาสักครู่และสอนฉัน


4
ฉันเห็นอันนั้น มันถูกโพสต์ไม่กี่ revs กลับ ภาชนะของเหลวถูกนำออกมาสำหรับ 3.0 และเพิ่มกลับมาสำหรับ 3.1
FatFingers

1
@Ranveer ไม่ซ้ำกันอย่างแน่นอนเนื่องจากนี่หมายถึง> BS3 นั่นคือ BS2.3 - เนื่องจากคำถามนั้นไม่สามารถตอบได้โปรดลบออกเพื่อไม่ให้สับสนกับผู้ใช้ในอนาคต
PW Kad

จากของเหลว docs ครอบคลุมความกว้างของวิวพอร์ตทั้งหมด (หรือเป็นของภาชนะบรรจุปัจจุบันทั้งหมดหรือองค์ประกอบที่มี?) ในกรณีใด ๆ ทำไมของเหลวชื่อ? ของเหลวที่ไม่ตรงกับภาชนะที่ไม่ใช่ของเหลวคืออะไร?
pashute

คำตอบ:


704

ฉบับย่อ: .containerมีความกว้างคงที่หนึ่งสำหรับแต่ละขนาดหน้าจอใน bootstrap (xs, sm, md, lg); .container-fluidขยายเพื่อเติมความกว้างที่มี


ความแตกต่างระหว่างcontainerและcontainer-fluidมาจากบรรทัดของ CSS เหล่านี้:

@media (min-width: 568px) {
  .container {
    width: 550px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}

ขึ้นอยู่กับความกว้างของวิวพอร์ตที่เว็บเพจกำลังดูอยู่containerคลาสจะให้ div ความกว้างคงที่เฉพาะเจาะจง ไม่มีบรรทัดเหล่านี้ในรูปแบบใด ๆcontainer-fluidดังนั้นความกว้างของมันจะเปลี่ยนแปลงทุกครั้งที่ความกว้างของวิวพอร์ตเปลี่ยนไป

ตัวอย่างเช่นสมมติว่าหน้าต่างเบราว์เซอร์ของคุณกว้าง 1,000px เนื่องจากสูงกว่าความกว้างต่ำสุดที่ 992px .containerองค์ประกอบของคุณจะมีความกว้าง 970px จากนั้นคุณค่อยๆขยายหน้าต่างเบราว์เซอร์ของคุณ ความกว้างของคุณ.containerจะไม่เปลี่ยนแปลงจนกว่าคุณจะไปที่ 1200px ซึ่งมันจะข้ามไปที่ความกว้าง 1170px และคงไว้ซึ่งความกว้างของเบราว์เซอร์ที่ใหญ่ขึ้น

.container-fluidองค์ประกอบของคุณจะปรับขนาดอย่างต่อเนื่องในขณะที่คุณทำการเปลี่ยนแปลงแม้แต่น้อยที่สุดกับความกว้างของเบราว์เซอร์ของคุณ


@jkillian นั่นหมายความว่าถ้าฉันต้องการสร้างเลย์เอาต์แบบเต็มความกว้างฉันควรใช้.container-fluidและ.containerสำหรับความกว้างแบบกล่องมันใช่ไหม?
Hung PD

1
@TheHung ขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย 'เต็มความกว้าง' แต่container-fluidเป็นสิ่งที่ฉันจะไปในกรณีของคุณเท่าที่ฉันสามารถบอกได้
JKillian

@JKillian ทุกวันนี้มีธีมมากมายที่พวกเขามี 2 เลย์เอาท์: เลย์เอาต์และเค้าโครงที่กว้าง หวังว่าคุณจะเข้าใจสิ่งที่ฉันอธิบาย ขออภัยสำหรับภาษาอังกฤษที่ไม่ดี
Hung PD

@JKillian เกี่ยวกับการใช้. container และ. container-fluid ในบางกรณี? เช่น: ( design.davidrozando.com/drew-html-v1.1/… )
Brightweb

5
@JKillian เหตุใดจึงต้องมีภาชนะบรรจุของไหล

177

ฉันคิดว่าคุณกำลังพูดว่าcontainervs container-fluidเป็นความแตกต่างระหว่างการตอบสนองและไม่ตอบสนองต่อกริด นี่ไม่เป็นความจริง ... สิ่งที่พูดคือความกว้างไม่คงที่ ... ความกว้างเต็ม!

นี่เป็นการยากที่จะอธิบายเพื่อให้ดูตัวอย่าง


ตัวอย่างที่หนึ่ง

container-fluid:

http://www.bootply.com/119981

ดังนั้นคุณจะเห็นว่าภาชนะที่จะขึ้นหน้าจอทั้งหมด ... container-fluidที่ของ

ตอนนี้ให้ดูที่อื่นเพียงปกติcontainerและดูขอบของตัวอย่าง

ตัวอย่างที่สอง

container

http://www.bootply.com/119982

ตอนนี้คุณเห็นพื้นที่สีขาวในตัวอย่างหรือไม่ นั่นเป็นเพราะความกว้างคงที่container! การเปิดตัวอย่างทั้งสองในแท็บสองแท็บที่แตกต่างกันและสลับไปมาเป็นเรื่องที่สมเหตุสมผล

แก้ไข

ยังดีกว่านี่คือตัวอย่างของคอนเทนเนอร์ทั้งสองในคราวเดียว! ตอนนี้คุณสามารถบอกความแตกต่างได้จริง ๆ !

http://www.bootply.com/119983

ฉันหวังว่าสิ่งนี้จะช่วยชี้แจงเล็กน้อย!


ตัวอย่างที่มีคอนเทนเนอร์ทั้งสองประเภทมีรายการที่เปลี่ยนความกว้างได้
ahnbizcad

6
แม้จะรู้ว่าอะไรคือความแตกต่างฉันพบตัวอย่าง "ทั้งสอง" ทำให้สับสนเนื่องจากการแรเงา ฉันแยกรหัสของคุณเพื่อทำสิ่งที่อาจเป็นตัวอย่างที่ชัดเจนกว่าสำหรับบางคน: bootply.com/119983 ( เช่นกัน. ไม่จำเป็นต้องใช้ .row-fluid ใน Bootstrap 3 เพียงใช้. ยอมรับว่าคอนเทนเนอร์ของคุณเป็นของเหลวหรือไม่)
Bussema Carl

Carl ลิงก์ของคุณไปยังตัวอย่างเช่นเดียวกับต้นฉบับ หากคุณยังมีเวอร์ชั่นที่แยกคุณสามารถโพสต์ลิงก์ได้หรือไม่?
Mike T

6
นี่คือตัวอย่างการเชื่อมโยงที่ดีในกรณีที่คนอื่นพบสิ่งนี้ในอนาคต
Mike Collins

ขอบคุณ Mike อีกตัวอย่างหนึ่งที่พวกเขาดูเหมือนกันในเบราว์เซอร์ของฉัน
eric

169

ทั้งสอง.containerและ.container-fluidตอบสนอง (เช่นพวกเขาเปลี่ยนเค้าโครงตามความกว้างของหน้าจอ) แต่ในรูปแบบที่แตกต่างกัน (ฉันรู้ว่าการตั้งชื่อไม่ได้ทำให้มันเป็นอย่างนั้น)

คำตอบสั้น ๆ :

.container กำลังปรับขนาด jumpy / choppy และ

.container-fluid คือการปรับขนาดอย่างต่อเนื่อง / ปรับความกว้าง: 100%

จากมุมมองการทำงาน:

.container-fluidปรับขนาดอย่างต่อเนื่องในขณะที่คุณเปลี่ยนความกว้างของหน้าต่าง / เบราว์เซอร์ตามจำนวนใด ๆ โดยไม่ต้องเว้นพื้นที่ว่างด้านข้างเป็น.containerพิเศษ (ดังนั้นการตั้งชื่อ: "ของเหลว" ซึ่งตรงข้ามกับ "ดิจิตอล", "ไม่ต่อเนื่อง", "chunked" หรือ "เชิงปริมาณ")

.containerปรับขนาดเป็นชิ้นตามความกว้างที่แน่นอน กล่าวอีกนัยหนึ่งมันจะแตกต่างกันเฉพาะ aka "คงที่" ความกว้างช่วงที่แตกต่างกันของความกว้างหน้าจอ

ความหมาย: "ความกว้างคงที่"

คุณสามารถดูว่าการตั้งชื่อเกิดความสับสนได้อย่างไร ในทางเทคนิคเราสามารถพูดได้ว่า.container"ความกว้างคงที่" แต่ได้รับการแก้ไขในแง่ที่ว่ามันไม่ได้ปรับขนาดในทุกความกว้างของเม็ดละเอียด จริงๆแล้วมันไม่ได้ "คงที่" ในแง่ที่ว่ามันยังคงอยู่ที่ความกว้างของพิกเซลที่กำหนดเสมอเนื่องจากมันสามารถเปลี่ยนขนาดได้

จากมุมมองพื้นฐาน:

.container-fluidมีคุณสมบัติ CSS width: 100%;ดังนั้นจึงปรับใหม่อย่างต่อเนื่องในทุกความกว้างของหน้าจอ

.container-fluid {
  width: 100%;
}

.containerมีบางอย่างเช่น "width = 800px" (หรือ em, rem ฯลฯ ) ค่าความกว้างพิกเซลเฉพาะที่ความกว้างหน้าจอที่แตกต่างกัน หลักสูตรนี้เป็นสิ่งที่ทำให้ความกว้างขององค์ประกอบข้ามไปที่ความกว้างอื่นทันทีเมื่อความกว้างหน้าจอข้ามเกณฑ์ความกว้างของหน้าจอ และเกณฑ์นั้นจะถูกควบคุมโดยการสอบถามสื่อ CSS3 ซึ่งช่วยให้คุณสามารถใช้สไตล์ที่แตกต่างสำหรับเงื่อนไขต่าง ๆ เช่นช่วงความกว้างของหน้าจอ

@media screen and (max-width: 400px){
  .container {
    width: 123px;
  }
}
@media screen and (min-width: 401px) and (max-width: 800px){

  .container {
    width: 456px;
  }
}
@media screen and (min-width: 801px){
  .container {
    width: 789px;
  }
}

เกิน

คุณสามารถสร้างองค์ประกอบที่ตอบสนองความกว้างคงที่ผ่านการสืบค้นสื่อไม่ใช่แค่.containerองค์ประกอบเนื่องจากเคียวรีสื่อเป็นวิธี.containerการที่นำมาใช้โดย bootstrap ในพื้นหลัง (ดูคำตอบของ JKillian สำหรับรหัส)


1
พฤติกรรมที่แม่นยำกว่าสำหรับ.containerAdaptive นั้นไม่ใช่การตอบสนองหรือไม่
ayjay

@ayjay คุณนำมาเป็นจุดที่ดี การมีคำศัพท์เพื่อแยกความแตกต่างของการปรับขนาดอย่างต่อเนื่องและการปรับขนาดที่น่ากลัวจะมีประโยชน์
ahnbizcad

1
@ayjay Adaptive ตรวจจับประเภทของอุปกรณ์ที่ลูกค้าใช้และแสดงสิ่งที่ฝั่งเซิร์ฟเวอร์ การตอบสนองไม่สนใจว่าลูกค้าพิมพ์อุปกรณ์ประเภทใด มันสนใจเฉพาะความกว้าง (เนื่องจากคำสั่งสื่อ) ดังนั้นการตอบสนองจะแสดงผลฝั่งไคลเอ็นต์ (css, javascript) ดูhuffingtonpost.com/garrett-goodman/ และamberweinberg.com/is-it-adaptive-or-responsive-web-design IMO Responsive นั้นง่ายต่อการบำรุงรักษาและสร้างมากกว่ารุ่นต่าง ๆ ของไซต์ของคุณสำหรับอุปกรณ์ต่าง ๆ แต่ CSS ของคุณต้องคำนึงถึงทุกเบราว์เซอร์
ahnbizcad

@Jay Revisitingng คำถามความหมายของการปรับตัวตอบสนองต่อการตอบสนอง ... เนื่องจากการปรับตัวหมายถึงการตรวจสอบอุปกรณ์และการคาย html / css / js ที่แตกต่างกันตาม ... เป็นไปได้ว่า html / css / js สามารถมีสไตล์ css ความกว้าง: 100%; และมันสามารถใช้ได้กับทุกอุปกรณ์ ในกรณีเช่นนี้มันปรับตัวได้ทั้งหมด แต่ยังคงปรับขนาดอย่างต่อเนื่องมากกว่าในทันที ... ดังนั้นจึงไม่ถูกต้องทางความหมายที่จะเรียกมันว่าการปรับตัวกับการตอบสนอง
ahnbizcad

24

ใช้.container-fluidเมื่อคุณต้องการให้หน้าของคุณเปลี่ยนรูปแบบโดยมีความแตกต่างกันเล็กน้อยในขนาดวิวพอร์ต

ใช้.containerเมื่อคุณต้องการให้หน้าของคุณเปลี่ยนขนาดได้เพียง 4 ขนาดซึ่งรู้จักกันในชื่อ"เบรกพอยต์"

เบรกพอยต์ที่สอดคล้องกับขนาดของพวกเขาคือ:

  • ขนาดเล็กพิเศษ: (เฉพาะความละเอียดของมือถือเท่านั้น)
  • เล็ก: 768px (แท็บเล็ต)
  • ปานกลาง: 992px (แล็ปท็อป)
  • ใหญ่: 1200px (แล็ปท็อป / เดสก์ท็อป)

11

อัปเดตในปี 2019

ความแตกต่างพื้นฐานคือการที่containerเป็นเกล็ด responsively ขณะอยู่เสมอcontainer-fluid width:100%ดังนั้นในคำจำกัดความของรูท CSS มันจะเหมือนกัน แต่ถ้าคุณดูเพิ่มเติมคุณจะเห็นว่า.containerถูกผูกไว้กับเคียวรี่สื่อ

Bootstrap 4

containerมี 5 ความกว้าง ...

.container {
  width: 100%;
}

@media (min-width: 576px) {
  .container {
    max-width: 540px;
  }
}

@media (min-width: 768px) {
  .container {
    max-width: 720px;
  }
}

@media (min-width: 992px) {
  .container {
    max-width: 960px;
  }
}

@media (min-width: 1200px) {
  .container {
    max-width: 1140px;
  }
}

Bootstrap 3

containerมี 4 ขนาด ความกว้างเต็มรูปแบบบนxsหน้าจอจากนั้นความกว้างจะแตกต่างกันไปตามเคียวรีสื่อบันทึกต่อไปนี้ ..

    @media (min-width: 1200px) {
        .container {
            width: 1170px;
        }
    }
    @media (min-width: 992px) {
        .container {
            width: 970px;
        }
    }
    @media (min-width: 768px) {
        .container {
            width: 750px;
        }
    }

คอนเทนเนอร์เทียบกับการสาธิตคอนเทนเนอร์ของเหลว


สิ่งนี้ไม่เกี่ยวข้องกับคำถาม ข้อมูลที่ดี แต่ไม่เกี่ยวข้องที่นี่
BeNice

ซิมเขาถูกขอให้สิ่งที่เป็นความแตกต่างระหว่างและ.container-fluid .containerนั่นคือข้อมูลที่ฉันกำลังมองหา ข้อมูลของคุณน่าสนใจ แต่เมื่อฉันมาหาคำตอบที่สับสนจริงๆ heck ออกจากฉันสองสามนาที หากมีการระบุไว้หลังคำตอบที่ตอบคำถามที่จะดี แต่ดังนั้นดูเหมือนจะไม่ให้เราแนะนำคำสั่งของเราเอง และการอ่านความคิดเห็นดั้งเดิมของฉันฉันไม่ชัดเจนเท่าที่ควร ขอบคุณมากสำหรับข้อมูล
BeNice

กล่าวโดยย่อคือ.containerการเปลี่ยนแปลงความกว้างตาม.container-fluid
Hassan Tareq

6

.containerมีค่าพิกเซลความกว้างสูงสุดในขณะที่.container-fluidความกว้างสูงสุด 100%

.container-fluid ปรับขนาดอย่างต่อเนื่องในขณะที่คุณเปลี่ยนความกว้างของหน้าต่าง / เบราว์เซอร์ด้วยจำนวนเท่าใดก็ได้

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


ดูเหมือนของเหลวโดยรวมจะดีกว่าไหม? ตอบสนองต่อโทรศัพท์มือถือซึ่งเป็นเรื่องใหญ่ในวันนี้ ...

5

จากมุมมองการแสดงผล.containerช่วยให้คุณควบคุมสิ่งที่ผู้ใช้เห็นได้มากขึ้นและทำให้ง่ายต่อการดูสิ่งที่ผู้ใช้จะเห็นเนื่องจากคุณมีจอแสดงผล 4 รูปแบบเท่านั้น (5 ในกรณีของ bootstrap 5) เนื่องจากขนาดเกี่ยวข้องกับ เหมือนกับขนาดกริด เช่น.col-xs, .col-sm, และ.col.col-lg

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

เมื่อใช้งาน.container-fluidเนื่องจาก witdh เกี่ยวข้องกับความกว้างของวิวพอร์ตจอแสดงผลเป็นแบบไดนามิกดังนั้นความแปรผันจึงยิ่งใหญ่กว่ามากและผู้ใช้ที่มีหน้าจอขนาดใหญ่มากหรือความกว้างหน้าจอผิดปกติอาจเห็นผลลัพธ์ที่คุณไม่ได้คาดหวัง


0

คุณอยู่ใน 3.1 .container-fluid และ. container เหมือนกันและทำงานเหมือน container แต่ถ้าคุณลบมันมันจะทำงานเหมือน. container-fluid (เต็มความกว้าง) พวกเขาลบ. container-fluid สำหรับ "Mobile First Approach" แต่ตอนนี้มันกลับมาใน 3.3.4 (และพวกเขาจะทำงานต่างออกไป)

ที่จะได้รับบูตล่าสุดโปรดอ่านโพสต์นี้ใน StackOverflow มันจะช่วยตรวจสอบออก

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