diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-02-08 16:54:51 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-02-08 16:54:51 +0900 |
| commit | ac7537278c7d4701cec3f4f7c0aabb0c102f0f4a (patch) | |
| tree | cb66ff30423936d5bd2af308f31e13401531929f /packages/frontend/src | |
| parent | fix(mfm): default degree not used in rotate (#9831) (diff) | |
| download | misskey-ac7537278c7d4701cec3f4f7c0aabb0c102f0f4a.tar.gz misskey-ac7537278c7d4701cec3f4f7c0aabb0c102f0f4a.tar.bz2 misskey-ac7537278c7d4701cec3f4f7c0aabb0c102f0f4a.zip | |
enhance(client): tweak medialist style
Diffstat (limited to 'packages/frontend/src')
| -rw-r--r-- | packages/frontend/src/components/MkMediaList.vue | 120 |
1 files changed, 50 insertions, 70 deletions
diff --git a/packages/frontend/src/components/MkMediaList.vue b/packages/frontend/src/components/MkMediaList.vue index f263ae0ce9..562cd3d63f 100644 --- a/packages/frontend/src/components/MkMediaList.vue +++ b/packages/frontend/src/components/MkMediaList.vue @@ -1,11 +1,11 @@ <template> -<div class="hoawjimk"> +<div> <XBanner v-for="media in mediaList.filter(media => !previewable(media))" :key="media.id" :media="media"/> - <div v-if="mediaList.filter(media => previewable(media)).length > 0" class="gird-container"> - <div ref="gallery" :data-count="mediaList.filter(media => previewable(media)).length"> + <div v-if="mediaList.filter(media => previewable(media)).length > 0" :class="$style.container"> + <div ref="gallery" :class="[$style.medias, count <= 4 ? $style['n' + count] : $style.nMany]"> <template v-for="media in mediaList.filter(media => previewable(media))"> - <XVideo v-if="media.type.startsWith('video')" :key="media.id" :video="media"/> - <XImage v-else-if="media.type.startsWith('image')" :key="media.id" class="image" :data-id="media.id" :image="media" :raw="raw"/> + <XVideo v-if="media.type.startsWith('video')" :key="media.id" :class="$style.media" :video="media"/> + <XImage v-else-if="media.type.startsWith('image')" :key="media.id" :class="$style.media" class="image" :data-id="media.id" :image="media" :raw="raw"/> </template> </div> </div> @@ -32,6 +32,7 @@ const props = defineProps<{ const gallery = ref(null); const pswpZIndex = os.claimZIndex('middle'); +const count = $computed(() => props.mediaList.filter(media => previewable(media)).length); onMounted(() => { const lightbox = new PhotoSwipeLightbox({ @@ -122,83 +123,62 @@ const previewable = (file: misskey.entities.DriveFile): boolean => { }; </script> -<style lang="scss" scoped> -.hoawjimk { - > .gird-container { - position: relative; - width: 100%; - margin-top: 4px; - - &:before { - content: ''; - display: block; - padding-top: 56.25% // 16:9; - } - - > div { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: grid; - grid-gap: 8px; - - > * { - overflow: hidden; - border-radius: 6px; - } - - &[data-count="1"] { - grid-template-rows: 1fr; - } +<style lang="scss" module> +.container { + position: relative; + width: 100%; + margin-top: 4px; +} - &[data-count="2"] { - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr; - } +.medias { + display: grid; + grid-gap: 8px; - &[data-count="3"] { - grid-template-columns: 1fr 0.5fr; - grid-template-rows: 1fr 1fr; + &.n1 { + aspect-ratio: 16/9; + grid-template-rows: 1fr; + } - > *:nth-child(1) { - grid-row: 1 / 3; - } + &.n2 { + aspect-ratio: 16/9; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr; + } - > *:nth-child(3) { - grid-column: 2 / 3; - grid-row: 2 / 3; - } - } + &.n3 { + aspect-ratio: 16/9; + grid-template-columns: 1fr 0.5fr; + grid-template-rows: 1fr 1fr; - &[data-count="4"] { - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr 1fr; - } + > .media:nth-child(1) { + grid-row: 1 / 3; + } - > *:nth-child(1) { - grid-column: 1 / 2; - grid-row: 1 / 2; - } + > .media:nth-child(3) { + grid-column: 2 / 3; + grid-row: 2 / 3; + } + } - > *:nth-child(2) { - grid-column: 2 / 3; - grid-row: 1 / 2; - } + &.n4 { + aspect-ratio: 16/9; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr; + } - > *:nth-child(3) { - grid-column: 1 / 2; - grid-row: 2 / 3; - } + &.nMany { + grid-template-columns: 1fr 1fr; - > *:nth-child(4) { - grid-column: 2 / 3; - grid-row: 2 / 3; - } + > .media { + aspect-ratio: 16/9; } } } + +.media { + overflow: hidden; // clipにするとバグる + border-radius: 8px; +} </style> <style lang="scss"> |