CSS 圖片固定長寬比實現高度自適應
某些場景下圖片的寬度不固定,為了保證圖片不失真,需要通過固定長寬比的方式來動態計算圖片高度
應用場景
- 例如圖片期望大小是 460 * 240 ,但真實圖片可能出現如下情況
- 圖片大小不固定
- 圖片可能載入失敗
- 在一個通過 panel 展現的列表中,由於瀏覽器可大可小,單個專案的寬度不固定
- 如果固定高度,會導致圖片出現比例不協調的情況
- 如果不固定高度,會出現如下單個專案高度不一致的情況
解決方式
出現上述情況的程式碼
- 可以看出為了保證圖片不失真,同時當瀏覽器大小變化時,單個專案能跟隨一起動態變化,專案本身以及圖片的容器沒有設定硬性高度
<div class="column-item training-item col-md-3" data-id="${training.hexId}">
...
<div class="thumbnail-img">
<img src="${training.thumbnail}" alt="">
</div>
...
</div>
.column-item {
margin-top: 15px;
padding-left: 0;
}
.column-item .thumbnail-img {
border-radius: 5px;
overflow: hidden;
border: 1px solid #eef3ff;
}
.column-item .thumbnail-img img {
width: 100%;
}
解決上述情況的程式碼
- 將原本作為
<img/>
展現的圖片改為父容器的背景 - 父容器背景的佈局方式設定為
background-position: center;
以及background-size: cover;
- 父容器的 height 設定為 0 ,真實高度由 padding-top 填充
- 由於高度為 0 ,如果容器內部還存在其他子元素,則需要設定為
position: absolute
- 子元素為 absolute 的話,父容器則需要設定為
position: relative
- 由於高度為 0 ,如果容器內部還存在其他子元素,則需要設定為
- 關鍵點在於 padding-top 的值如何確定
- 前面說過圖片的比例為 460 * 240
- 那麼計算比例應該是
100 * 240 / 460
得出52.17
padding-top: 52.17%
則基本可以確保容器撐開的大小與圖片正確比例一致
<div class="column-item training-item col-md-3" data-id="${training.hexId}">
...
<div class="thumbnail-img" style="background-image: url(${training.thumbnail})"></div>
...
</div>
.column-item {
margin-top: 15px;
padding-left: 0;
}
.column-item .thumbnail-img {
border-radius: 5px;
overflow: hidden;
border: 1px solid #eef3ff;
position: relative;
height: 0;
padding-top: 52.17%;
background-position: center;
background-size: cover;
}
解決後的效果圖
相關文章
- CSS實現背景圖片固定寬高比自適應調整CSS
- css 實現圖片寬度自適螢幕,高度與寬度成固定比例CSS
- CSS實現圖片寬度自適應CSS
- 固定寬度下,CSS 實現自適應文字CSS
- 純css實現高度與寬度固定比例CSS
- css實現兩欄固定中間自適應CSS
- css實現圖片自適應容器的幾種方式CSS
- css中圖片按照長寬比縮放CSS
- css佈局,左右固定中間自適應實現CSS
- css實現固定的圖片比例CSS
- 如何使用純CSS實現固定寬高比div?CSS
- 圖片實現寬高比
- CSS實現寬高等比例自適應矩形CSS
- css--常見左右盒子寬度高度自適應佈局CSS
- padding-bottom實現圖片自適應padding
- textarea實現高度自適應的理解
- 圖片寬高自動適配
- css設定圖片固定寬高,按比例縮放CSS
- 如何設定圖片高度固定,寬度可以根據比例縮放
- 圖片自適應
- 微信小程式swiper高度自適應,swiper的子元素高度不固定微信小程式
- 響應式圖片(自適應圖片)
- flex一欄寬度固定一欄寬度自適應佈局Flex
- vxe-table 列寬拖拽模式設定,自適應列寬,固定列寬模式
- flex佈局兩邊固定寬 中間自適應Flex
- 微信輪播圖自適應高度
- 一列寬度固定一列寬度自適應佈局
- 微信小程式之swiper輪播圖中的圖片自適應高度微信小程式
- [教程文件]html5實現圖片自適應手機螢幕頁面的cssHTMLCSS
- Flutter實現馬蜂窩小紅書自適應高度輪播圖Flutter
- 【css】table標籤內的td、th如何設定固定寬度,而不是自適應?CSS
- 左邊固定寬,右邊自適應的6種方法
- 前端頁面高度和寬度自適應怎麼做?前端
- 實現左側固定寬度, 右側自適應的兩欄佈局常見方法
- css之左邊定寬右邊自適應CSS
- textarea 高度自適應
- 微信小程式 – 富文字圖片寬度自適應(正則)微信小程式
- 安居客面試題:純css實現未知比例圖片自適應且水平垂直居中面試題CSS