keep image natural ratio in gallery row

This commit is contained in:
taehoon 2019-10-18 16:04:17 -04:00
parent 6c4d23714a
commit 0396c6f29d
5 changed files with 34 additions and 5 deletions

View file

@ -7,6 +7,11 @@ const Gallery = {
'nsfw',
'setMedia'
],
data () {
return {
sizes: {}
}
},
components: { Attachment },
computed: {
rows () {
@ -23,12 +28,25 @@ const Gallery = {
}
return rows
},
rowStyle () {
return itemsPerRow => ({ 'padding-bottom': `${(100 / (itemsPerRow + 0.6))}%` })
},
useContainFit () {
return this.$store.state.config.useContainFit
}
},
methods: {
onNaturalSizeLoad (id, size) {
this.$set(this.sizes, id, size)
},
rowStyle (itemsPerRow) {
return { 'padding-bottom': `${(100 / (itemsPerRow + 0.6))}%` }
},
itemStyle (id) {
const size = this.sizes[id]
if (size) {
return { flex: size.width / size.height }
} else {
return {}
}
}
}
}

View file

@ -18,6 +18,8 @@
:nsfw="nsfw"
:attachment="attachment"
:allow-play="false"
:natural-size-load="onNaturalSizeLoad.bind(null, attachment.id)"
:style="itemStyle(attachment.id)"
/>
</div>
</div>