微信小程序輪播圖片自適應(yīng)顯示組件

在項目中由于需要上傳不同的輪播圖片,但是圖片可能尺寸不一樣,導(dǎo)致會顯示圖片變形,很難看,所以最后弄了一個圖片自適應(yīng)的組件,可以解決這個問題.

實現(xiàn)原理

其實實現(xiàn)就是獲取到每張圖片的寬高,然后根據(jù)每張圖片的,結(jié)合當(dāng)前屏幕的寬度,計算出需要的最大高度,因為屏幕寬度是不變的,根據(jù)這個高度設(shè)置swiper容器的高度,再給每張圖片加上mode='widthFix'屬性,這樣圖片就會自適應(yīng)顯示,不會變形.

但是缺點是我獲取到的圖片寬高是通過微信小程序API wx.getImageInfo,這個接口是要先把圖片下載下來,所以要求圖片是https,還要小程序后臺綁定對應(yīng)downLoad域名,測試在工具上勾選不驗證域名查看效果,還有圖片大會稍微有點慢,不知道有沒有其他人有不同實現(xiàn)方法.

效果圖

兩張圖片高度不一樣

實現(xiàn)過程

1.組件

Component({
  /**
   * 組件的屬性列表
   */
  properties: {
    listimg: {//傳進來的圖片數(shù)組
      type: null
    },
  },

  /**
   * 組件的初始數(shù)據(jù)
   */
  data: {
    configimg: [],
    indicatorDots: true,
    autoplay: true,
    interval: 3000,
    duration: 1000,
    swiperCurrent: 0
  },
  ready: function() {
    this.initData();
  },
  /**
   * 組件的方法列表
   */
  methods: {
    //格式化數(shù)組
    initData: function() {
      if (!this.data.listimg && this.data.listimg.length == 0){
        console.log("沒有圖片")
         return;
      }
      let list = this.data.listimg;
      let newList = [];
      for (let i = 0; i < list.length; i++) {
        let h = {};
        h.showImg = list[i];
        newList.push(h);
      }
      this.getDownLoadimg(newList);
    },

    //獲取圖片真實寬高
    getDownLoadimg: function(list) {
      let that = this;
      let f = 0;
      for (let h = 0; h < list.length; h++) {
        wx.getImageInfo({
          src: list[h].showImg,
          success: function(res) {
            list[h].width = res.width;
            list[h].height = res.height;
          },
          fail: function(err) {
            console.log("錯誤")
            console.log(err)
          },
          complete: function(res) {
            f++
            if (f == list.length) {
              console.log('執(zhí)行完畢');
              that.getImgMax(list)
            } else {
              console.log("繼續(xù)");
            }
          }
        })
      }
    },

    //計算高度比求最大高度值
    getImgMax: function(list) {
      let heightArr = [];
      for (let g = 0; g < list.length; g++) {
        //獲取圖片真實寬度  
        var imgwidth = list[g].width,
          imgheight = list[g].height,
          //寬高比  
          ratio = imgwidth / imgheight;
        //計算的高度值  
        var viewHeight = 750 / ratio;
        var imgheight = viewHeight
        heightArr.push(imgheight)
        list[g].imgheight = imgheight;
      }
      for (let t = 0; t < list.length; t++) {
        var maxN = this.checkMax(heightArr)
        list[t].maxHeight = maxN;
      }
      console.log(list)
      this.setData({
        configimg: list
      })
    },

    //判斷最大值
    checkMax: function(heightArr) {
      let maxN = Math.max.apply(null, heightArr);
      return maxN;
    },
  }
})

詳細(xì)請demo地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市丛塌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌帽驯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件书闸,死亡現(xiàn)場離奇詭異尼变,居然都是意外死亡,警方通過查閱死者的電腦和手機浆劲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門嫌术,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梳侨,你說我怎么就攤上這事蛉威。” “怎么了走哺?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵蚯嫌,是天一觀的道長。 經(jīng)常有香客問我,道長择示,這世上最難降的妖魔是什么束凑? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮栅盲,結(jié)果婚禮上汪诉,老公的妹妹穿的比我還像新娘。我一直安慰自己谈秫,他們只是感情好扒寄,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拟烫,像睡著了一般该编。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上硕淑,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天课竣,我揣著相機與錄音,去河邊找鬼置媳。 笑死于樟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拇囊。 我是一名探鬼主播迂曲,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寂拆!你這毒婦竟也來了奢米?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤纠永,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谒拴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尝江,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年英上,在試婚紗的時候發(fā)現(xiàn)自己被綠了炭序。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡苍日,死狀恐怖惭聂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情相恃,我是刑警寧澤辜纲,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響耕腾,放射性物質(zhì)發(fā)生泄漏见剩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一扫俺、第九天 我趴在偏房一處隱蔽的房頂上張望苍苞。 院中可真熱鬧,春花似錦狼纬、人聲如沸羹呵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冈欢。三九已至,卻和暖如春没炒,著一層夾襖步出監(jiān)牢的瞬間涛癌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工送火, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拳话,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓种吸,卻偏偏與公主長得像弃衍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子坚俗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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