鍍金池/ 問答/HTML/ 前端圖片顯示,如何最大程度的讓其不壓縮變形,同時又能鋪滿盒子?

前端圖片顯示,如何最大程度的讓其不壓縮變形,同時又能鋪滿盒子?

很多項目都會有后臺上傳圖片的功能,這導(dǎo)致往往用戶會傳一些不規(guī)則比例的圖片(這個確實頭疼,其實不只用戶傳圖沒有固定寬高比,前端樣式上,圖片盒子也很難保證一個通用的比例),也就導(dǎo)致了有些超出比例的圖片在前端顯示的時候會出現(xiàn)壓縮,拉伸,變形問題。
現(xiàn)在項目通過阿里云儲存能夠?qū)崿F(xiàn)一些基本的圖片縮放,裁剪處理,但是很顯然,在嚴(yán)重超出前端圖片盒子比例的情況下,仍然會有拉伸變形問題。
我這邊的處理方法總結(jié)了一下,只能做到兩步:
1 阿里云裁剪,壓縮。
2 圖片居中自適應(yīng),即:img{max-width:100%;max-heightt:100%}。
如上問題所述,當(dāng)原圖寬高比例嚴(yán)重不符的時候仍然會存在問題。
我能想到的方式還有一種就是把圖片作為圖片盒子的背景,然后居中鋪滿,但是很顯然,工作量大,改動多(因為框架用的vue,拉取數(shù)據(jù)后還得綁定樣式)。
問:
有沒有更好的方式能達(dá)到最大化的圖片顯示優(yōu)化?請指教

回答
編輯回答
吃藕丑

object-fit屬性

雖然不能做到ie9以下的兼容問題。希望對你有用

2017年6月23日 06:45
編輯回答
陌南塵

上傳的時候記錄圖片尺寸
前臺拿到圖片的尺寸就好處理樣式了

2018年7月15日 11:06
編輯回答
尛曖昧

你說的用背景圖的方式是最快捷的 可以依然用img 然后用js去轉(zhuǎn)換成背景圖并隱藏img
如果一定要用img 就要把img做成絕對定位
然后獲取圖片的比例 比例相對于容器是偏扁的就給一個horizontal的class 反之給一個vertical的class
horizontal的img就高度100% 寬度自動 用transform水平居中
vertical的img就寬度100% 高度自動 用transform垂直居中

2017年8月15日 19:54
編輯回答
擱淺

對img使用css object-fit: contain;

2018年2月2日 04:10
編輯回答
囍槑

還是建議把裁剪壓縮放到前端,這樣上傳到后臺的時間相對比較穩(wěn)定,另外用戶端完全可以在圖片處理后再顯示,可以保證寬和高里有一個是確定的,圖片外邊加個容器就可以實現(xiàn)固定尺寸了。

2017年4月24日 09:19