Flexbox基礎-處理圖片-跟著KP用21天征服Responsive Layout-W2

閱讀時間約 0 分鐘

對於前端工程師而言,如何處理圖片是一個看是基本但是又重要的技能。就像是日本料理的師傅要懂得處理生魚片一樣。

因為flexbox的flex-item有自動伸縮的功能,所以要注意裡面的圖片如何被伸縮。

圖片被flexbox拉長了

這裡讓我們看個例子:

html:img作為flex-item

<d class="row">
<p>
"At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat."
</p>
<img src="https://picsum.photos/200/200">
</div>


css

.row{
display:flex;
}


結果:

raw-image


結果可以看到,圖片被拉長到和文字的高度一樣,而且比例被改變了(圖片的大小是200*200的正方形)。


flex-item的高度伸縮原理

在之前的文章,我們有提到flex-item如何水平伸縮,現在我們就來看看flex-item如何垂直伸縮。

flex-container有個屬性,叫做align-items,這個屬性是在處理flex-item的垂直對齊。而其預設值為stretch ,也就是flex-item都會拉長到一樣的高度(拉到和最高的flex-item一樣高)。


回到例子,如果要讓圖片不要被拉高,有兩個方式。

1.調整align-items

將align-items設定為flex-start,flex-item就會對齊頂部,高度不會拉長到一樣高,而是維持flex-item內容的原始高度。

.row{
display:flex;
align-items:flex-start; /*----調整align-items-----*/
}


結果

raw-image

可以看到,圖片就恢復成正常尺寸與比例了。

2.在圖片外層包div

另一個做法則是用div來包住圖片,這樣圖片就不是flex-item,也就不會被拉長了。

html

<d class="row">
<div class="col">
<p>
"At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat."
</p>
</div>
<div class="col"> <!--用div包裹住img--->
<img src="https://picsum.photos/200/200">
</div>
</div>


結果

raw-image

圖片也一樣恢復到原始的大小與比例了。


圖片的起手式

在上面的解法2,我們用div來包裹圖片,圖片就不會有flex-item的效果,也就不會有縮放的能力。

但是現在的網站,基本上都是Responsive。我們會希望圖片都具有伸縮的能力。所以我們會習慣在開頭時,就對所有圖片設置max-width:100%。

img{
max-width:100%
}


設置max-width:100%,可以讓圖片莫忘初衷:

1.具有伸縮性,且不會超過原始的大小。

2.圖片的比例都維持跟原始圖片一樣



結論:

1.flex-item的align-items預設是stretch,會將item都拉到一樣高。

2.在flexbox使用圖片時,可以用div將圖片包住,或是改變align-items。讓圖片不會不自然地拉高。

3.圖片起手式:max-width:100%。給予圖片伸縮的超能力,又讓圖片莫忘初衷(維持遠始比例與不超過原始大小。)

歡迎來到我的部落格!這裡是一個分享前端開發、貓咪寫真以及與菲律賓女友生活的文化衝擊與英文學習的個人空間。我熱愛前端技術,喜歡追求最新的網頁開發趨勢,並將這些知識分享給大家。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液