1. 程式人生 > >vue pc端element-ui的走馬燈carousel實現自適應全屏banner

vue pc端element-ui的走馬燈carousel實現自適應全屏banner

前提摘要:使用vue很方便做一些效果,目前開源的元件特別的多pc端使用輪播圖的話element-ui的carousel是一個不錯的選擇,當然也可以選擇swiper元件。

問題:我發現carousel元件容器的高度是固定寫死的,就算是我把image圖片的寬度設定100%,它會隨著瀏覽器螢幕的寬度等比例縮小到我設定的最小寬度就不會再變小。但是因為外面的容器已經寫死了一個高度,這樣的話就會留有一片空白區域。如下:


解決思路:獲取當前圖片的高度然後賦給swiper外部容器的高度,然後flex佈局容器裡面的圖片居中。

問題解決:這是我的自己的解決方案,大家有更好的可以留言謝謝。

1,template html程式碼

<div class="swiper">     <el-carousel indicator-position="none" arrow="always" :height="bannerHeight + 'px'">         <el-carousel-item v-for="(item, index) in swiperlist" :key="index">             <a:href="item.bannerTargetUrl" :target="targetUrl(item.targetType)"
>
                <img :src="item.bannerUrl" ref="image" @load="imageLoaded">            </a>         </el-carousel-item>     </el-carousel></div>2,監聽瀏覽器resize變化

當調整瀏覽器視窗的大小時,發生 resize 事件。

resize() 方法觸發 resize 事件,或規定當發生 resize 事件時執行的函式。

mounted () { window.addEventListener('resize'
, () => { this.bannerHeight = this.$refs.image[0].height }, false) },3,第一次進入頁面的時候圖片還沒載入完成,我需要在圖片加載出來瞭然後獲取到圖片的高度賦給swiper容器的高度 bannerHeight

我是這樣處理的:


load函式 methods中定義載入成功一張圖片的時候執行獲取當前第一張圖片高度


完畢!