การปรับและขนาดภาพให้พอดีกับ div (bootstrap)


100

ฉันกำลังพยายามทำให้ภาพพอดีกับ div ขนาดที่กำหนด น่าเสียดายที่รูปภาพไม่เป็นไปตามสัดส่วนและแทนที่จะย่อขนาดให้เป็นขนาดที่ไม่ใหญ่พอ ฉันไม่แน่ใจว่าวิธีที่ดีที่สุดคือวิธีใดในการทำให้ภาพพอดีกับภายใน

หากรหัสนี้ไม่เพียงพอฉันยินดีที่จะจัดหาเพิ่มเติมและฉันพร้อมที่จะแก้ไขข้อผิดพลาดอื่น ๆ ที่ฉันมองข้ามไป

นี่คือ HTML

<div class="span3 top1">  
        <div class="row">
          <div class="span3 food1">
              <img src="images/food1.jpg" alt="">
          </div>
        </div>
            <div class="row">
              <div class="span3 name1">
                  heres the name
            </div>
            </div>
          <div class="row">
              <div class="span3 description1">
                  heres where i describe and say "read more"
            </div>
            </div>


      </div>

CSS ของฉัน

.top1{

    height:390px;
    background-color:#FFFFFF;
    margin-top:10px;


}

.food1{

background-color:#000000;
height:230px;


}

.name1{

background-color:#555555;
height:90px;

}

.description1{

background-color:#777777;
height:70px;


}

ฉันได้โพสต์คำตอบสำหรับคำถามที่คล้ายกันที่นี่: stackoverflow.com/questions/41870216/…
FredyWenger

คำตอบ:


59

คุณสามารถกำหนดwidthและheightของรูปภาพอย่างชัดเจนได้แต่ผลลัพธ์อาจไม่ได้ดูดีที่สุด

.food1 img {
    width:100%;
    height: 230px;
}

jsFiddle


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

.top1 {
    height:390px;
    background-color:#FFFFFF;
    margin-top:10px;
    overflow: hidden;
}

.top1 img {
    height:100%;
}

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

ใช่นั่นคือสิ่งที่ฉันกำลังมองหา! ขอบคุณมาก!
smilefreak24

คำตอบอื่น ๆ คือคำตอบที่ดีที่สุดเพียงแค่เพิ่ม class = "img-responsive" ลงในแท็ก img ก็เป็นเคล็ดลับ!
iMobaio

1
ดีกว่าจากwidth:100%;is max-width:100%;และดีกว่าทั้งหมดคือคลาสimg-responsiveใน BS3 หรือimg-fluidใน BS4
Nabi KAZ

180

ลองวิธีนี้:

<div class="container">
    <div class="col-md-4" style="padding-left: 0px;  padding-right: 0px;">
        <img src="images/food1.jpg" class="img-responsive">
    </div>
</div>

อัพเดท:

ใน Bootstrap 4 img-responsiveจะกลายเป็นimg-fluidดังนั้นวิธีแก้ปัญหาโดยใช้ Bootstrap 4 คือ:

<div class="container">
    <div class="col-md-4 px-0">
        <img src="images/food1.jpg" class="img-fluid">
    </div>
</div>

5
เย็น! class = "img-responsive" ช่วย บางทีนี่อาจเป็นคำตอบที่ได้รับการยอมรับในวันนี้
อนุปาม

1
class = "img-responsive" เป็นวิธีที่แน่นอน! นี่ควรเป็นคำตอบที่ได้รับการยอมรับ
iMobaio

31
ก็img-fluidตอนนี้ไม่ได้img-responsive
wordsforthewise


32

เพียงเพิ่มคลาสimg-responsiveลงในimgแท็กของคุณก็สามารถใช้ได้ใน bootstrap 3 เป็นต้นไป!


ขออภัยคุณสามารถระบุได้ไหมฉันไม่ได้รับคำถามของคุณอย่างถูกต้องขอบคุณ!
Shashi

7

ฉันมีปัญหาเดียวกันนี้และพบวิธีแก้ปัญหาง่ายๆดังต่อไปนี้ เพียงแค่เพิ่มช่องว่างภายในรูปภาพเล็กน้อยแล้วปรับขนาดเองให้พอดีกับ div

<div class="col-sm-3">
  <img src="xxx.png" class="img-responsive" style="padding-top: 5px">
</div>

1
แก้ไขด้วย Bootstrap แทนที่จะเป็น CSS ที่กำหนดเอง ขอขอบคุณ.
mattgreen

7

ฉันใช้สิ่งนี้และได้ผลสำหรับฉัน

<div class="col-sm-3">
  <img src="xxx.png" style="width: auto; height: 195px;">
</div>

4

หากท่านใดที่กำลังมองหา Bootstrap-4 . นี่คือ

<div class="row no-gutters">
    <div class="col-10">
        <img class="img-fluid" src="/resources/img1.jpg" alt="">
    </div>
</div>

นี้ไม่ได้เป็นทางออกที่ดีถ้าคุณมีคอลัมน์อื่นที่มีข้อความในนั้นก็ยังจะขึ้นยากกับขอบของเส้นขอบ
เจมส์เบิร์ค

2

โดยส่วนใหญ่แล้วโครงการ bootstrap จะใช้ jQuery ดังนั้นคุณจึงสามารถใช้ jQuery ได้

เพียงแค่รับความกว้างและความสูงของพาเรนต์ด้วยJQuery.offsetHeight()และJQuery.offsetWidth()และตั้งค่าเป็นองค์ประกอบลูกด้วยJQuery.width()และJQuery.height()และ

หากคุณต้องการให้ตอบสนองให้ทำซ้ำขั้นตอนข้างต้นในส่วน$(window).resize(func)นี้ด้วย

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