|
|
@ -3,13 +3,13 @@ |
|
|
|
<view class="dynamics" v-html="$utils.stringFormatHtml(item.title)"> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="Artworkimages"> |
|
|
|
<view class="Artworkimages" :class="layoutClass"> |
|
|
|
<view class="wrokimg" @click.stop="previewMedia(media, i)" :key="i" v-for="(media, i) in mediaList"> |
|
|
|
<image v-if="media.type === 'image'" :src="media.url" mode="aspectFill"></image> |
|
|
|
<video v-else-if="media.type === 'video'" :src="media.url" |
|
|
|
controls |
|
|
|
:poster="media.poster || ''" |
|
|
|
style="width: 190rpx; height: 190rpx; border-radius: 20rpx;"></video> |
|
|
|
:style="videoStyle"></video> |
|
|
|
<!-- <view v-if="media.type === 'video'" class="video-overlay"> |
|
|
|
<uv-icon name="play-circle-fill" size="60rpx" color="#fff"></uv-icon> |
|
|
|
</view> --> |
|
|
@ -70,6 +70,35 @@ |
|
|
|
} |
|
|
|
|
|
|
|
return mediaArray |
|
|
|
}, |
|
|
|
// 根据媒体数量决定布局类型 |
|
|
|
layoutClass(){ |
|
|
|
const count = this.mediaList.length |
|
|
|
if(count === 1){ |
|
|
|
return 'single-layout' |
|
|
|
} else if(count === 2 || count === 4){ |
|
|
|
return 'grid-layout-2x2' |
|
|
|
} else { |
|
|
|
return 'grid-layout-3x3' |
|
|
|
} |
|
|
|
}, |
|
|
|
// 动态视频样式 |
|
|
|
videoStyle(){ |
|
|
|
const count = this.mediaList.length |
|
|
|
let style = 'border-radius: 20rpx;' |
|
|
|
|
|
|
|
if(count === 1){ |
|
|
|
// 单个视频占满宽度 |
|
|
|
style += 'width: 100%; height: 400rpx;' |
|
|
|
} else if(count === 2 || count === 4){ |
|
|
|
// 4宫格布局 |
|
|
|
style += 'width: calc(50% - 10rpx); height: 200rpx;' |
|
|
|
} else { |
|
|
|
// 9宫格布局 |
|
|
|
style += 'width: calc(33.33% - 10rpx); height: 150rpx;' |
|
|
|
} |
|
|
|
|
|
|
|
return style |
|
|
|
} |
|
|
|
}, |
|
|
|
data() { |
|
|
@ -112,20 +141,54 @@ |
|
|
|
.Artworkimages { |
|
|
|
display: flex; |
|
|
|
flex-wrap: wrap; |
|
|
|
margin-top: 20rpx; |
|
|
|
|
|
|
|
.wrokimg { |
|
|
|
margin: 10rpx; |
|
|
|
position: relative; |
|
|
|
// 单图布局 - 占满宽度 |
|
|
|
&.single-layout { |
|
|
|
.wrokimg { |
|
|
|
width: 100%; |
|
|
|
margin: 0; |
|
|
|
|
|
|
|
image { |
|
|
|
width: 100%; |
|
|
|
height: 400rpx; |
|
|
|
border-radius: 20rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
image { |
|
|
|
height: 190rpx; |
|
|
|
width: 190rpx; |
|
|
|
border-radius: 20rpx; |
|
|
|
// 4宫格布局 - 2x2 |
|
|
|
&.grid-layout-2x2 { |
|
|
|
.wrokimg { |
|
|
|
width: calc(50% - 10rpx); |
|
|
|
margin: 5rpx; |
|
|
|
|
|
|
|
image { |
|
|
|
width: 100%; |
|
|
|
height: 200rpx; |
|
|
|
border-radius: 20rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 9宫格布局 - 3x3 |
|
|
|
&.grid-layout-3x3 { |
|
|
|
.wrokimg { |
|
|
|
width: calc(33.33% - 10rpx); |
|
|
|
margin: 5rpx; |
|
|
|
|
|
|
|
image { |
|
|
|
width: 100%; |
|
|
|
height: 150rpx; |
|
|
|
border-radius: 20rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.wrokimg { |
|
|
|
position: relative; |
|
|
|
|
|
|
|
video { |
|
|
|
height: 190rpx; |
|
|
|
width: 190rpx; |
|
|
|
border-radius: 20rpx; |
|
|
|
} |
|
|
|
|
|
|
|