• uniapp 仿微信朋友圈,微博晒图 图片自适应排版


        export default {
            data() {
                return {
                    imgList: [
                        '../../static/bac1.jpg',
                        '../../static/bac1.jpg'
                    ]
                }
            },
            onLoad() {
    
            },
            components: {
                imgBox
            },
            methods: {
            }
        }

    在 template 中使用组件

    
    
    复制代码     <img-box :imgList='imgList' :num='imgList.length'></img-box>
    
    

    参数说明

    
    
    参数名类型说明
    imgList Array 图片数组
    num Number 图片数量,即数组的长度
    
    

    注意

    
    

    暂时不支持在nvue页面中使用

     

    组件代码

    <template>
        <view class="myimgDV">
            <view v-if="imgPicList.length>0" class='receiveimage flex justify'>
                <block v-for="(item,ind) in imgPicList" :key="ind">
                    <image class="imgitem" :style="{imgwidth,height:imgheight}" :class="imgboxtype==0?'onepic':imgboxtype==1?'doublepic':imgboxtype==2?'triplepic':''"
                     :src="item" :mode="imgboxtype==0?'widthFix':imgboxtype==1?'aspectFill':imgboxtype==2?'aspectFill':''" @click="previewpic(item,imgPicList)"></image>
                    <!-- {(imgboxtype==0?'':imgwidth),height:(imgboxtype==0?'':imgwidth),padding:(imgboxtype==0?'':imgpad)} -->
                </block>
            </view>
        </view>
    </template>
    
    <script>
        export default {
            data() {
                return {
                    imgPicList: [],
                    imgboxtype: 0,
                    img 0,
                    imgpad: 0,
                    imgheight: ''
                }
            },
            props: {
                imgList: {
                    type: Array
                },
                num: {
                    type: Number,
                    default: 0
                },
                pad: {
                    type: Number,
                    default: 0
                }
            },
            methods: {
                // 图片预览
                previewpic(cind, clist) {
                    console.log(cind, clist);
                    uni.previewImage({
                        urls: clist,
                        current: cind,
                        indicator: 'default'
                    });
                },
                getheight() {
                    let that = this;
                    const query = uni.createSelectorQuery().in(that)
                    query.select('.imgitem').boundingClientRect()
                    query.exec(function(res) {
                        console.log(res[0].width)
                        if (that.num == 1) {
                            that.imgheight = '100%';
                        } else if (that.num == 2 || that.num == 4) {
                            that.imgheight = (res[0].width).toFixed(2) + 'px';
                        } else {
                            that.imgheight = (res[0].width).toFixed(2) + 'px';
                        }
                    })
    
                    // const query = uni.createSelectorQuery().in(this).select('.imgitem');
                    // uni.createSelectorQuery().select('.imgitem').boundingClientRect(res => {
                    //     console.log('reac', res)
                    //     if (this.num == 1) {
                    //         this.imgheight = '100%';
                    //     } else if (this.num == 2 || this.num == 4) {
                    //         this.imgheight = (res.width).toFixed(2) + 'px';
                    //     } else {
                    //         this.imgheight = (res.width).toFixed(2) + 'px';
                    //     }
                    // }).exec()
                }
            },
            mounted() {
                // let this = this;
                this.imgPicList = this.imgList;
                if (this.num == 1) {
                    this.imgboxtype = 0;
                    this.imgwidth = 100 + '%';
                } else if (this.num == 2 || this.num == 4) {
                    this.imgboxtype = 1;
                    this.imgwidth = 49 + '%';
                } else if (this.num == 3 || this.num > 4) {
                    this.imgboxtype = 2;
                    this.imgwidth = 32 + '%';
                }
                this.$nextTick(function() {
                    this.getheight();
                })
            }
        }
    </script>
    
    <style lang="scss">
        .myimgDV {
            .flex {
                display: flex;
            }
            .justify {
                justify-content: space-between;
            }
            .receiveimage {
                margin-top: 28rpx;
                display: flex;
                flex-wrap: wrap;
                 100%;
                .onepic {
                     100%;
                    // height: 188rpx;
                    // height: auto;
                    margin-bottom: 28rpx;
                    &:nth-child(3n) {
                        margin-right: 0;
                    }
                }
                .doublepic {
                    //  340rpx;
                    // height: 340rpx;
                    margin-right: 12rpx;
                    margin-bottom: 12rpx;
                    &:nth-child(2n) {
                        margin-right: 0;
                    }
                }
                .triplepic {
                    //  222rpx;
                    // height: 222rpx;
                    margin-right: 12rpx;
                    margin-bottom: 12rpx;
                    &:nth-child(3n) {
                        margin-right: 0;
                    }
                }
            }
        }
    </style>
  • 相关阅读:
    Speech Recognize 实用类 (发现bug的朋友,请留言如何修正,供他人参考)
    由“类的成员函数”充当“回调函数”引发的问题的思考和解决方案
    装载与软件体系结构
    artoolkit video 数据转换到 IplImage*
    CvCamShift算法+原理(转)
    基于SAPI的中文语音识别的xml书写与编程
    自己根据示例代码改写的可以用于TexttoSpeech的类库
    Linux下安装erlang及rabbitmq
    jaf activation
    基于DotNetOpenAuth实现OpenID 服务提供者<shou>
  • 原文地址:https://www.cnblogs.com/plBlog/p/13844835.html
Copyright © 2020-2023  润新知