獲取圖片原始寬高及對(duì)應(yīng)比例

html5提供了獲取圖片原始寬高的方法:img.naturalWidth/img.naturalHeight

現(xiàn)在阁簸,我想要輪播展示一組圖片:
當(dāng)圖片寬/高>1(展示框比例)時(shí)(即扁扁的圖片)欢策,讓圖片的寬達(dá)到展示框的100%,而高度適應(yīng)原圖片比例推姻,圖片在展示框中左右頂邊,上下居中框沟。
當(dāng)圖片寬/高<=1時(shí)(即瘦瘦的圖片)藏古,讓圖片的高達(dá)到展示框的100%增炭,而寬度適應(yīng)原圖片比例,圖片在展示框中上下頂邊拧晕,左右居中隙姿。
那么,需要獲得各個(gè)圖片的寬高厂捞,以及它們的比例输玷;根據(jù)比例是否大于1;對(duì)應(yīng)添加類Fill-x/Fill-y對(duì)應(yīng)不同的樣式靡馁。

一開始欲鹏,獲取寬高的我是直接這樣寫的:

imageList.forEach(function(item) {
  img = item.children[0];
  var imgW = img.naturalWidth;
  var imgH = img.naturalHeight;
  var imgR = imgW / imgH;

  console.log("width:" + imgW);
  console.log("height:" + imgH);
  console.log(imgR);

  var resultMode = imgR > 1 ? ‘Fill-x' : 'Fill-y';
  $(img).addClass(resultMode);
}

但是運(yùn)行時(shí)卻發(fā)現(xiàn),獲取到的寬高始終都是0臭墨。
上網(wǎng)查了一下資料赔嚎,發(fā)現(xiàn)是因?yàn)樵趫D片的相關(guān)數(shù)據(jù)沒有被加載前,它的默認(rèn)高度就是0胧弛。
這個(gè)時(shí)候想到的解決方法是:可以使用setTimeout尤误,通過延遲來保證圖片加載完成:

function imageLoad(img) {
  img.onload = function() {
    var imgW = img.naturalWidth;
    var imgH = img.naturalHeight;
    var imgR = imgW / imgH;
    console.log("width:" + imgW);
    console.log("height:" + imgH);
    console.log(imgR);
    var resultMode = imgR > 1 ? 'Fill-x' : 'Fill-y';
    $(img).addClass(resultMode);
    }
 }
}

list.forEach(function(item) {
    img = item.children[0];
    setTimeout(imageLoad(img), 500)
})

但是在運(yùn)行時(shí)依然存在問題,跑出來的寬高有時(shí)是正確的结缚,有時(shí)卻是0损晤,這個(gè)時(shí)候是因?yàn)闆]有考慮img.complete的情況,故最終代碼為:(不過需要注意ie沒有foreach方法)

function imageLoad(img) {
  if(img.complete){
   var imgW = img.naturalWidth;
   var imgH = img.naturalHeight;
   var imgR = imgW / imgH;
   console.log("complete:width:" + imgW);
   console.log("height:" + imgH);
   console.log(imgR);
   var resultMode = imgR > 1 ? 'Fill-x' : 'Fill-y';
   $(img).addClass(resultMode); 
  }
  img.onload = function() {
    var imgW = img.naturalWidth;
    var imgH = img.naturalHeight;
    var imgR = imgW / imgH;
    console.log("width:" + imgW);
    console.log("height:" + imgH);
    console.log(imgR);
    var resultMode = imgR > 1 ? 'Fill-x' : 'Fill-y';
    $(img).addClass(resultMode);
    }
 }
}

imageList.forEach(function(item) {
    img = item.children[0];
    setTimeout(imageLoad(img), 500)
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掺冠,一起剝皮案震驚了整個(gè)濱河市沉馆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌德崭,老刑警劉巖斥黑,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異眉厨,居然都是意外死亡锌奴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門憾股,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹿蜀,“玉大人,你說我怎么就攤上這事服球≤钋。” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵斩熊,是天一觀的道長(zhǎng)往枣。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么分冈? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任圾另,我火速辦了婚禮,結(jié)果婚禮上雕沉,老公的妹妹穿的比我還像新娘集乔。我一直安慰自己,他們只是感情好坡椒,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布扰路。 她就那樣靜靜地躺著,像睡著了一般肠牲。 火紅的嫁衣襯著肌膚如雪幼衰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天缀雳,我揣著相機(jī)與錄音渡嚣,去河邊找鬼。 笑死肥印,一個(gè)胖子當(dāng)著我的面吹牛识椰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播深碱,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼腹鹉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了敷硅?” 一聲冷哼從身側(cè)響起功咒,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绞蹦,沒想到半個(gè)月后力奋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幽七,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年景殷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澡屡。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猿挚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驶鹉,到底是詐尸還是另有隱情绩蜻,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布室埋,位于F島的核電站辜羊,受9級(jí)特大地震影響踏兜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜八秃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肉盹。 院中可真熱鬧昔驱,春花似錦、人聲如沸上忍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窍蓝。三九已至腋颠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吓笙,已是汗流浹背淑玫。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留面睛,地道東北人絮蒿。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叁鉴,于是被迫代替她去往敵國和親土涝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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