Skip to content

Commit 608df54

Browse files
committed
chore: optimize vue dom again
1 parent 14df8cc commit 608df54

File tree

1 file changed

+32
-13
lines changed

1 file changed

+32
-13
lines changed

app/pages/about.vue

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,6 @@ function scheduleCloseActive() {
155155
}, 80)
156156
}
157157
158-
// ── Event delegation: un único listener en el <ul> ──────────────────────────
159-
const listRef = ref<HTMLElement>()
160-
161158
function getButtonFromEvent(e: Event): HTMLButtonElement | null {
162159
return (e.target as Element).closest('button[data-cid]')
163160
}
@@ -610,32 +607,54 @@ onBeforeUnmount(() => {
610607
</template>
611608

612609
<style scoped>
613-
[data-cid]:focus-visible {
614-
@apply ring-2 ring-accent scale-110;
615-
outline: none;
616-
z-index: 20;
610+
[data-cid] img {
611+
transition:
612+
box-shadow 100ms ease,
613+
transform 200ms ease;
617614
}
618615
619616
[data-cid][aria-expanded='true'] img {
620617
@apply ring-2 ring-accent;
621618
}
622619
623620
@media (hover: hover) {
624-
[data-cid]:hover img {
625-
@apply ring-accent;
626-
ring-width: 2px;
621+
[data-cid]:hover img,
622+
[data-cid][aria-expanded='true'] img {
623+
transform: scale(1.1);
624+
--un-ring-opacity: 1;
625+
--un-ring-color: color-mix(in srgb, var(--accent) var(--un-ring-opacity), transparent);
626+
box-shadow: 0 0 0 2px var(--un-ring-color);
627627
}
628628
}
629629
630+
[data-cid]:focus-visible img {
631+
transform: scale(1.1);
632+
--un-ring-opacity: 1;
633+
--un-ring-color: color-mix(in srgb, var(--accent) var(--un-ring-opacity), transparent);
634+
box-shadow: 0 0 0 2px var(--un-ring-color);
635+
}
636+
637+
[data-cid]:focus-visible {
638+
outline: none;
639+
z-index: 20;
640+
}
641+
630642
.contributor-popover {
631643
position: fixed;
632644
z-index: 9999;
633645
transform: translateX(-50%);
634-
/* GPU layer: evita repaints en el main thread */
635-
will-change: transform, opacity;
646+
/* GPU layer: avoid repaints in the main thread */
647+
will-change: opacity;
636648
contain: layout style;
637-
outline: none; /* Remove focus outline from container */
649+
/* Remove focus outline from container:
650+
don't remove important to fix FF outline
651+
*/
652+
outline: none !important;
653+
/* same computePos GAP */
654+
padding-top: 8px;
655+
margin-top: -8px;
638656
}
657+
639658
.contributor-popover.align-left {
640659
transform: translateX(0);
641660
}

0 commit comments

Comments
 (0)