Skip to content

Commit e3774f4

Browse files
committed
feat: add sticky effect to the readme header on the readme page
1 parent f18d64e commit e3774f4

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

app/pages/package/[[org]]/[name].vue

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,24 @@ const router = useRouter()
3333
3434
const header = useTemplateRef('header')
3535
const isHeaderPinned = shallowRef(false)
36+
const readmeHeader = useTemplateRef('readmeHeader')
37+
const isReadmeHeaderPinned = shallowRef(false)
3638
const navExtraOffset = shallowRef(0)
3739
const isMobile = useMediaQuery('(max-width: 639.9px)')
3840
39-
function checkHeaderPosition() {
40-
const el = header.value
41-
if (!el) return
41+
function isStickyPinned(el: HTMLElement | null): boolean {
42+
if (!el) return false
4243
4344
const style = getComputedStyle(el)
4445
const top = parseFloat(style.top) || 0
4546
const rect = el.getBoundingClientRect()
4647
47-
isHeaderPinned.value = Math.abs(rect.top - top) < 1
48+
return Math.abs(rect.top - top) < 1
49+
}
50+
51+
function checkHeaderPosition() {
52+
isHeaderPinned.value = isStickyPinned(header.value)
53+
isReadmeHeaderPinned.value = isStickyPinned(readmeHeader.value)
4854
}
4955
5056
useEventListener('scroll', checkHeaderPosition, { passive: true })
@@ -1392,7 +1398,11 @@ const showSkeleton = shallowRef(false)
13921398

13931399
<!-- README -->
13941400
<section id="readme" class="min-w-0 scroll-mt-20" :class="$style.areaReadme">
1395-
<div class="flex flex-wrap items-center justify-between mb-3 px-1">
1401+
<div
1402+
ref="readmeHeader"
1403+
class="flex sticky top-34 z-10 flex-wrap items-center justify-between mb-3 py-1 -mx-1 px-2 rounded-md transition-shadow duration-200"
1404+
:class="{ 'bg-bg shadow-sm': isReadmeHeaderPinned }"
1405+
>
13961406
<h2 id="readme-heading" class="group text-xs text-fg-subtle uppercase tracking-wider">
13971407
<LinkBase to="#readme">
13981408
{{ $t('package.readme.title') }}

app/pages/package/[[org]]/[name]/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// stub page to help with paths
33
definePageMeta({
44
name: 'package',
5-
scrollMargin: 150,
5+
scrollMargin: 200,
66
})
77
</script>
88

0 commit comments

Comments
 (0)