vue-loading圖


父組件給子組件src地址;

 columns(){
     return [
         {'title': '圖片', 'key': 'img', render(h, {row}){
             return h(LoadingImg, {
                 props: {//把這些傳給子組件
                     'w': 80,
                     'h': 45,
                     'src': 'http://192.168.2.233/carimages_small/' + row.id + '/view/' + row.img
                 }
             });
         }},
         {'title': '編號', 'key': 'id'},
         {'title': '品牌', 'key': 'brand'},
         {'title': '車系', 'key': 'series'},
         {'title': '顏色', 'key': 'color'},
         {'title': '售價', 'key': 'price'},
         {'title': '環保', 'key': 'exhaust'},
         {'title': '發動機', 'key': 'engine'},
         {'title': '燃料', 'key': 'fuel'}
     ];
 }

子組件

props: ['w', 'h', 'src'],
    methods: {
        change(){
            // 顯示菊花
            this.isShowPin = true;
            // 創建一個虛擬圖片
            var img = new Image();
            // 設置src
            img.src = this.src;
            // 監聽load
            img.onload = () => {
                // 加載完畢之后替了
                this.picurl = this.src;
                // 隱藏菊花
                this.isShowPin = false;
            }
        }
    },
//創建前直接顯示
created(){
    this.change();
},
 //改變后重新加載loading
 watch:{
      src(){
         this.change()
      }
}

loading

<template>
    <div style="position:relative;" :style="{'width': w + 'px', 'height': h + 'px'}">
        <img :style="{'width': w + 'px', 'height': h + 'px'}" :src="picurl" >
        <Spin fix v-show="isShowPin">
            <Icon type="ios-loading" size=18 class="demo-spin-icon-load"></Icon>
        </Spin>
    </div>
</template>

<script>
    export default {
        props: ['w', 'h', 'src'],
        data(){
            return {
                picurl: '',
                isShowPin: false
            };
        },
        methods: {
            change(){
                // 顯示菊花
                this.isShowPin = true;
                // 創建一個虛擬圖片
                var img = new Image();
                // 設置src
                img.src = this.src;
                // 監聽load
                img.onload = () => {
                    // 加載完畢之后替了
                    this.picurl = this.src;
                    // 隱藏菊花
                    this.isShowPin = false;
                }
            }
        },
        created(){
            this.change();
        },
        watch:{
            src(){
                this.change()
            }
        }
    }
</script>

<style>
    .demo-spin-icon-load{
        animation: ani-demo-spin 1s linear infinite;
    }
    @keyframes ani-demo-spin {
        from { transform: rotate(0deg);}
        50%  { transform: rotate(180deg);}
        to   { transform: rotate(360deg);}
    }
    .demo-spin-col{
        height: 100px;
        position: relative;
        border: 1px solid #eee;
    }
</style>

喜歡的小伙伴可以關注我的微信公眾號“前端偽大叔”

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM