[英]How to maintain image aspect ratio in modal using flexbox?
我的模態中有一個圖片庫,該圖片庫使用flexbox設置了樣式。 問題是,有些圖片在水平方向上過大,從而使flexbox拉伸,因此即使flex權重設置為css,其旁邊的項目也被弄亂了。
<div class="slideshow-container">
<div class="mySlides fade" style="display: block;">
<div class="numbertext">1 / 16</div>
<img src="./img/normal/image.jpg" class="galimg" style="height: 331px;">
<div class="text">Image description</div>
</div>
....
</div>
我希望每個圖像都保持其縱橫比。 有些是風景,有些是肖像。 所以我想嘗試以下方法:
var maxHeight = $('#modal-gallery').height()-39; // need 39px for the gallery navigation.
var maxWidth = $('#modal-gallery').width();
var ratio = maxHeight/maxWidth;
$('.galimg').each(function(i){
if ($(this).height()/$(this).width() > ratio){
$(this).width(maxWidth);
} else {
$(this).height(maxHeight);
}
});
CSS:
#modal-gallery { // this is the div surrounding the gallery
flex: 6;
display: flex;
margin-right: auto;
flex-direction: column;
justify-content: flex-start;
align-items: center;
}
.slideshow-container {
display: flex;
position: relative;
margin: 0;
}
我知道問題可能出在我的JS中,因為我嘗試記錄寬度和高度並經常得到0。html是通過JS動態生成的。 我嘗試添加onImgLoad函數,但未得到任何結果。
不需要做js事情。 只需修復您的CSS。 添加一些樣式和HTML元素。 以下是在許多網站上顯示不同尺寸圖像的最常用方法(請同時擴展代碼段以查看其行為)。
#modal-gallery { // this is the div surrounding the gallery flex: 6; display: flex; margin-right: auto; flex-direction: column; justify-content: flex-start; align-items: center; } .slideshow-container { display: flex; position: relative; margin: 0; } .mySlides{ display:block } .slide-image{ display:inline-block; width:220px; text-align:center; vertical-align:top; margin-bottom: 20px; } .img-container{ display:block; width:200px; } .img-container .img{ display:table-cell; vertical-align:middle; text-align:center; } .img-container img{ max-height:200px; max-width:200px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="slideshow-container"> <div class="mySlides fade"> <div class="slide-image"> <div class="numbertext">1 / 16</div> <div class="img-container"> <div class="img"> <img src="https://s3-us-west-1.amazonaws.com/powr/defaults/image-slider1.jpg" class="galimg" /> </div> </div> <div class="text">Image description</div> </div> <div class="slide-image"> <div class="numbertext">1 / 16</div> <div class="img-container"> <div class="img"> <img src="http://i.imgur.com/RRUe0Mo.png" class="galimg" /> </div> </div> <div class="text">Image description</div> </div> <div class="slide-image"> <div class="numbertext">1 / 16</div> <div class="img-container"> <div class="img"> <img src="https://www.smashingmagazine.com/wp-content/uploads/2015/06/10-dithering-opt.jpg" class="galimg" /> </div> </div> <div class="text">Image description</div> </div> <div class="slide-image"> <div class="numbertext">1 / 16</div> <div class="img-container"> <div class="img"> <img src="https://www.smashingmagazine.com/wp-content/uploads/2015/06/10-dithering-opt.jpg" class="galimg" /> </div> </div> <div class="text">Image description</div> </div> <div class="slide-image"> <div class="numbertext">1 / 16</div> <div class="img-container"> <div class="img"> <img src="https://s3-us-west-1.amazonaws.com/powr/defaults/image-slider1.jpg" class="galimg" /> </div> </div> <div class="text">Image description</div> </div> <div class="slide-image"> <div class="numbertext">1 / 16</div> <div class="img-container"> <div class="img"> <img src="http://i.imgur.com/RRUe0Mo.png" class="galimg" /> </div> </div> <div class="text">Image description</div> </div> </div> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.