簡體   English   中英

如何使用flexbox保持模態下的圖像長寬比?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM