summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2023-04-03 13:01:24 +0900
committerGitHub <noreply@github.com>2023-04-03 13:01:24 +0900
commit58f3a2ee94b668e776844b610336bbbafc436e35 (patch)
tree09030e98032845e75357fb00c03cd250089c3222 /packages/frontend/src/components
parentMerge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff)
parentMerge branch 'develop' into acid-chicken-patch-1 (diff)
downloadmisskey-58f3a2ee94b668e776844b610336bbbafc436e35.tar.gz
misskey-58f3a2ee94b668e776844b610336bbbafc436e35.tar.bz2
misskey-58f3a2ee94b668e776844b610336bbbafc436e35.zip
Merge pull request #10420 from misskey-dev/acid-chicken-patch-1
fix: #10413
Diffstat (limited to 'packages/frontend/src/components')
-rw-r--r--packages/frontend/src/components/global/MkAvatar.vue25
-rw-r--r--packages/frontend/src/components/global/MkPageHeader.vue18
2 files changed, 36 insertions, 7 deletions
diff --git a/packages/frontend/src/components/global/MkAvatar.vue b/packages/frontend/src/components/global/MkAvatar.vue
index 814ab53d27..9a21941c8d 100644
--- a/packages/frontend/src/components/global/MkAvatar.vue
+++ b/packages/frontend/src/components/global/MkAvatar.vue
@@ -1,5 +1,5 @@
<template>
-<component :is="link ? MkA : 'span'" v-user-preview="preview ? user.id : undefined" v-bind="bound" class="_noSelect" :class="[$style.root, { [$style.cat]: user.isCat, [$style.square]: squareAvatars }]" :style="{ color }" :title="acct(user)" @click="onClick">
+<component :is="link ? MkA : 'span'" v-user-preview="preview ? user.id : undefined" v-bind="bound" class="_noSelect" :class="[$style.root, { [$style.animation]: animation, [$style.cat]: user.isCat, [$style.square]: squareAvatars }]" :style="{ color }" :title="acct(user)" @click="onClick">
<img :class="$style.inner" :src="url" decoding="async"/>
<MkUserOnlineIndicator v-if="indicator" :class="$style.indicator" :user="user"/>
<div v-if="user.isCat" :class="[$style.ears, { [$style.mask]: useBlurEffect }]">
@@ -27,6 +27,7 @@ import { acct, userPage } from '@/filters/user';
import MkUserOnlineIndicator from '@/components/MkUserOnlineIndicator.vue';
import { defaultStore } from '@/store';
+const animation = $ref(defaultStore.state.animation);
const squareAvatars = $ref(defaultStore.state.squareAvatars);
const useBlurEffect = $ref(defaultStore.state.useBlurEffect);
@@ -86,6 +87,18 @@ watch(() => props.user.avatarBlurhash, () => {
to { transform: rotate(-37.6deg) skew(-30deg); }
}
+@keyframes eartightleft {
+ from { transform: rotate(37.6deg) skew(30deg); }
+ 50% { transform: rotate(37.4deg) skew(30deg); }
+ to { transform: rotate(37.6deg) skew(30deg); }
+}
+
+@keyframes eartightright {
+ from { transform: rotate(-37.6deg) skew(-30deg); }
+ 50% { transform: rotate(-37.4deg) skew(-30deg); }
+ to { transform: rotate(-37.6deg) skew(-30deg); }
+}
+
.root {
position: relative;
display: inline-block;
@@ -144,6 +157,14 @@ watch(() => props.user.avatarBlurhash, () => {
mask:
url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><filter id="a"><feGaussianBlur in="SourceGraphic" stdDeviation="1"/></filter><circle cx="16" cy="16" r="15" filter="url(%23a)"/></svg>') exclude center / 50% 50%,
linear-gradient(#fff, #fff); // polyfill of `image(#fff)`
+
+ > .earLeft {
+ animation: eartightleft 6s infinite;
+ }
+
+ > .earRight {
+ animation: eartightright 6s infinite;
+ }
}
> .earLeft,
@@ -225,7 +246,7 @@ watch(() => props.user.avatarBlurhash, () => {
}
}
- &:hover {
+ &.animation:hover {
> .ears {
> .earLeft {
animation: earwiggleleft 1s infinite;
diff --git a/packages/frontend/src/components/global/MkPageHeader.vue b/packages/frontend/src/components/global/MkPageHeader.vue
index 0d229a9370..710edd797a 100644
--- a/packages/frontend/src/components/global/MkPageHeader.vue
+++ b/packages/frontend/src/components/global/MkPageHeader.vue
@@ -8,7 +8,9 @@
<template v-if="metadata">
<div v-if="!hideTitle" :class="$style.titleContainer" @click="top">
- <MkAvatar v-if="metadata.avatar" :class="$style.titleAvatar" :user="metadata.avatar" indicator/>
+ <div v-if="metadata.avatar" :class="$style.titleAvatarContainer">
+ <MkAvatar :class="$style.titleAvatar" :user="metadata.avatar" indicator/>
+ </div>
<i v-else-if="metadata.icon" :class="[$style.titleIcon, metadata.icon]"></i>
<div :class="$style.title">
@@ -249,13 +251,19 @@ onUnmounted(() => {
margin-left: 24px;
}
-.titleAvatar {
+.titleAvatarContainer {
$size: 32px;
- display: inline-block;
+ contain: strict;
+ overflow: clip;
width: $size;
height: $size;
- vertical-align: bottom;
- margin: 0 8px;
+ padding: 8px;
+ flex-shrink: 0;
+}
+
+.titleAvatar {
+ width: 100%;
+ height: 100%;
pointer-events: none;
}