如何用css3響應(yīng)式的裁剪縮放圖片

其實(shí)這篇文章的標(biāo)題也可以叫做《如何用css3實(shí)現(xiàn)微信小程序image的mode屬性》,因?yàn)槲覀兘裉煊懻摰捻憫?yīng)式裁剪縮放圖片栋艳,主要是實(shí)現(xiàn)了微信小程序image標(biāo)簽的mode屬性吸占。

微信小程序image組件的mode屬性

開(kāi)發(fā)過(guò)微信小程序的同學(xué)都知道兼蕊,當(dāng)后臺(tái)返回來(lái)的圖片大小不一樣孙技,或者用戶(hù)上傳的圖片大小不一樣牵啦,而我們需要統(tǒng)一進(jìn)行展示的時(shí)候哈雏,可以利用image標(biāo)簽的mode屬性對(duì)圖片進(jìn)行縮放裁剪裳瘪。mode屬性的具體屬性及表現(xiàn)形式如圖:

mode的取值

小程序開(kāi)發(fā)文檔

如何使用css實(shí)現(xiàn)mode效果

在移動(dòng)端和PC端開(kāi)發(fā)中,我們可以采用兩種方案去實(shí)現(xiàn)mode的各種效果,由于使用了css3的一些屬性愈腾,移動(dòng)端瀏覽器適配性比較好,不需要額外做適配橱乱,PC端可以根據(jù)具體情況做一些兼容處理泳叠。

  • 使用背景圖片的background-position屬性和background-size屬性
  • 使用css3的object-fit屬性和object-position屬性

object-fit屬性

這個(gè)屬性決定了像[img]和[videos]這樣的替換元素的內(nèi)容應(yīng)該如何使用他的寬度和高度來(lái)填充其容器。
可以通過(guò)使用 [object-position] 屬性來(lái)切換被替換元素的內(nèi)容對(duì)象在元素框內(nèi)的對(duì)齊方式种蝶。

取值:
contain
被替換的內(nèi)容將被縮放螃征,以在填充元素的內(nèi)容框時(shí)保持其寬高比锅棕。 整個(gè)對(duì)象在填充盒子的同時(shí)保留其長(zhǎng)寬比裸燎,因此如果寬高比與框的寬高比不匹配,該對(duì)象將被添加“[黑邊]

cover
被替換的內(nèi)容在保持其寬高比的同時(shí)填充元素的整個(gè)內(nèi)容框移稳。如果對(duì)象的寬高比與內(nèi)容框不相匹配个粱,該對(duì)象將被剪裁以適應(yīng)內(nèi)容框。

fill
被替換的內(nèi)容正好填充元素的內(nèi)容框。整個(gè)對(duì)象將完全填充此框睛低。如果對(duì)象的寬高比與內(nèi)容框不相匹配,那么該對(duì)象將被拉伸以適應(yīng)內(nèi)容框。

none
被替換的內(nèi)容將保持其原有的尺寸澄暮。

scale-down
內(nèi)容的尺寸與 nonecontain 中的一個(gè)相同麻惶,取決于它們兩個(gè)之間誰(shuí)得到的對(duì)象尺寸會(huì)更小一些窃蹋。

object-position屬性

[CSS]屬性 object-position 規(guī)定了[可替換元素]的內(nèi)容匈辱,在這里我們稱(chēng)其為對(duì)象(即 object-position 中的 object,在其內(nèi)容框中的位置〈剐唬可替換元素的內(nèi)容框中未被對(duì)象所覆蓋的部分,則會(huì)顯示該元素的背景。

在接下來(lái)的方案中鹃栽,有些方案可以使用兩種方式實(shí)現(xiàn)蓬抄,有的我暫時(shí)只用了一種方案耍贾,大家可以自取所需简肴。兩種方案html代碼如下:

<!-- 背景圖片 -->
<div class="wrapper">
  <div class="inner"></div>
</div>

<!-- object-fit -->
<img src="2.jpg" class="objectImg">
.wrapper{
  width: 200px;
  height: 200px;
  border: solid 2px red;
  overflow: hidden;
}

我們展示的原圖如下:


原圖晃听,來(lái)自網(wǎng)絡(luò),侵刪

實(shí)現(xiàn)在固定區(qū)域內(nèi)砰识,圖片保持其寬高比能扒,使圖片短邊能完全顯示出來(lái)

圖片保持其寬高比,使圖片短邊能完全顯示出來(lái)
.inner{
    width: 100%;
    height: 0;
    padding-bottom: 100%;
    background: green;
    background-size: cover;
    background-image: url('4.jpg');
    overflow: hidden;
    background-position: center center;
    background-repeat: no-repeat;
    -webkit-background-size:cover;
    -moz-background-size:cover;
    background-size:cover;
}

.objectImg{
  width: 200px;
  height: 200px;
  object-fit: cover;
}

實(shí)現(xiàn)在固定區(qū)域內(nèi)辫狼,圖片保持其寬高比初斑,使圖片長(zhǎng)邊能完全顯示出來(lái)

圖片保持其寬高比,使圖片長(zhǎng)邊能完全顯示出來(lái)
.inner{
  width: 100%;
  height: 0;
  padding-bottom: 100%;
  background: green;
  background-size: contain;
  background-image: url('4.jpg');
  overflow: hidden;
  background-position: center center;
  background-repeat: no-repeat;
}

.objectImg{
  width: 200px;
  height: 200px;
  object-fit: contain;
}

這種方案膨处,圖片兩側(cè)可能會(huì)出現(xiàn)背景色

不保持縱橫比縮放圖片见秤,使圖片完全適應(yīng)

不保持縱橫比縮放圖片,使圖片完全適應(yīng)
.objectImg{
  width: 200px;
  height: 200px;
  object-fit: fill;
}

別的方式直接用圖片寬高100%就可以灵迫,這種會(huì)使圖片變形

不縮放圖片秦叛,只顯示圖片的頂部、底部瀑粥、左側(cè)挣跋、右側(cè)、左上狞换、右上避咆、左下、右下區(qū)域

不縮放圖片修噪,只顯示圖片的頂部查库、底部、左側(cè)黄琼、右側(cè)樊销、左上、右上脏款、左下围苫、右下區(qū)域
.objectImg{
  width: 200px;
  height: 200px;
  object-fit: none;
}
<div class="wrapper">
  <img src="4.jpg" class="objectImg" style="object-position: 50% 0;">
  <div class="text">object-fit 頂部</div>
</div>

<div class="wrapper">
  <img src="4.jpg" class="objectImg" style="object-position: 50% 100%;">
  <div class="text">object-fit 底部</div>
</div>

<div class="wrapper">
  <img src="4.jpg" class="objectImg" style="object-position: 0% 50%;">
  <div class="text">object-fit 左側(cè)</div>
</div>

<div class="wrapper">
  <img src="4.jpg" class="objectImg" style="object-position: 100% 50%;">
  <div class="text">object-fit 右側(cè)</div>
</div>

<div class="wrapper">
  <img src="4.jpg" class="objectImg" style="object-position: 0 0;">
  <div class="text">object-fit 左上</div>
</div>

<div class="wrapper">
  <img src="4.jpg" class="objectImg" style="object-position: 0 100%;">
  <div class="text">object-fit 左下</div>
</div>

原理上就是我們?cè)O(shè)置object-fit: none屬性后,圖片將不會(huì)進(jìn)行縮放撤师,我們可以通過(guò)object-position屬性自由調(diào)整圖片的位置剂府。object-position屬性的用法和background-position屬性簡(jiǎn)直一模一樣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剃盾,一起剝皮案震驚了整個(gè)濱河市腺占,隨后出現(xiàn)的幾起案子淤袜,更是在濱河造成了極大的恐慌,老刑警劉巖衰伯,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铡羡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嚎研,警方通過(guò)查閱死者的電腦和手機(jī)蓖墅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)库倘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)临扮,“玉大人,你說(shuō)我怎么就攤上這事教翩「擞拢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵饱亿,是天一觀的道長(zhǎng)蚜退。 經(jīng)常有香客問(wèn)我,道長(zhǎng)彪笼,這世上最難降的妖魔是什么钻注? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮配猫,結(jié)果婚禮上幅恋,老公的妹妹穿的比我還像新娘。我一直安慰自己泵肄,他們只是感情好捆交,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著腐巢,像睡著了一般品追。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冯丙,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天肉瓦,我揣著相機(jī)與錄音,去河邊找鬼胃惜。 笑死泞莉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛹疯。 我是一名探鬼主播戒财,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捺弦!你這毒婦竟也來(lái)了饮寞?” 一聲冷哼從身側(cè)響起孝扛,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎幽崩,沒(méi)想到半個(gè)月后苦始,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慌申,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年陌选,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹄溉。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咨油,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柒爵,到底是詐尸還是另有隱情役电,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布棉胀,位于F島的核電站法瑟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏唁奢。R本人自食惡果不足惜霎挟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麻掸。 院中可真熱鬧酥夭,春花似錦、人聲如沸论笔。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)狂魔。三九已至蒜埋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間最楷,已是汗流浹背整份。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留籽孙,地道東北人烈评。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像犯建,于是被迫代替她去往敵國(guó)和親讲冠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5适瓦? 答:HTML5是最新的HTML標(biāo)準(zhǔn)竿开。 注意:講述HT...
    kismetajun閱讀 27,486評(píng)論 1 45
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,101評(píng)論 1 32
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案谱仪? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,753評(píng)論 1 92
  • by zhangxinxu from http://www.zhangxinxu.com本文地址:http://w...
    xinhui9056閱讀 2,124評(píng)論 1 2
  • “你有多久沒(méi)回過(guò)家了” 前幾天去廈門(mén)見(jiàn)了一個(gè)湖北老家的朋友,好多年沒(méi)見(jiàn)否彩,相談甚歡疯攒,聊了很多小時(shí)候老家那邊的事。 聊...
    窩書(shū)閱讀 382評(píng)論 0 0