<template> <view class="tui-image-container" :class="{ 'tui-image-direction': direction == 'column' }"> <view v-for="(item, index) in imageList" :key="index" class="tui-image-item_box" :style="{ width: width, height: height, borderRadius: radius, marginLeft: direction == 'column' ? 0 : (index && distance) + 'rpx', marginTop: direction == 'row' ? 0 : (index && distance) + 'rpx' }" @tap="bindClick(index, item.id)" > <image class="tui-image-item" :mode="mode" :lazy-load="lazyLoad" fade-show="fadeShow" :webp="webp" :show-menu-by-longpress="longpress" @error="error" @load="load" :style="{ width: width, height: height, borderRadius: radius, borderWidth: borderWidth, borderColor: borderColor }" :src="item.src" ></image> <slot /> </view> </view> </template> <script> export default { name: 'tuiImageGroup', props: { //图片集合 /* [{id:1,src:"1.png"}] */ imageList: { type: Array, default: () => { return []; } }, //图片宽度 width: { type: String, default: '120rpx' }, //图片高度 height: { type: String, default: '120rpx' }, //图片边框宽度 rpx borderWidth: { type: String, default: '0' }, //图片边框颜色 可传rgba borderColor: { type: String, default: '#fff' }, //图片圆角 radius: { type: String, default: '50%' }, //图片裁剪、缩放的模式 mode: { type: String, default: 'scaleToFill' }, //图片懒加载。只针对page与scroll-view下的image有效 lazyLoad: { type: Boolean, default: true }, //图片显示动画效果 | 仅App-nvue 2.3.4+ Android有效 fadeShow: { type: Boolean, default: true }, //默认不解析 webP 格式,只支持网络资源 | 微信小程序2.9.0 webp: { type: Boolean, default: false }, //开启长按图片显示识别小程序码菜单 | 微信小程序2.7.0 longpress: { type: Boolean, default: false }, //是否组合排列 isGroup: { type: Boolean, default: false }, //排列方向 row ,column direction: { type: String, default: 'row' }, //偏移距离 rpx distance: { type: [Number, String], default: -16 } }, data() { return {}; }, methods: { error(e) { this.$emit('errorEvent', e); }, load(e) { this.$emit('loaded', e); }, bindClick(index, id) { this.$emit('click', { index: index, id: id || '' }); } } }; </script> <style scoped> .tui-image-container { display: inline-flex; align-items: center; } .tui-image-direction { flex-direction: column; } .tui-image-item_box { position: relative; } .tui-image-item { border-style: solid; flex-shrink: 0; display: block; } </style>