diff --git a/src/client/directives/index.ts b/src/client/directives/index.ts index 7b9d31a601..6513350e0d 100644 --- a/src/client/directives/index.ts +++ b/src/client/directives/index.ts @@ -7,6 +7,7 @@ import tooltip from './tooltip'; import hotkey from './hotkey'; import appear from './appear'; import anim from './anim'; +import stickyContainer from './sticky-container'; export default function(app: App) { app.directive('userPreview', userPreview); @@ -17,4 +18,5 @@ export default function(app: App) { app.directive('hotkey', hotkey); app.directive('appear', appear); app.directive('anim', anim); + app.directive('sticky-container', stickyContainer); } diff --git a/src/client/directives/sticky-container.ts b/src/client/directives/sticky-container.ts new file mode 100644 index 0000000000..db29ea64b7 --- /dev/null +++ b/src/client/directives/sticky-container.ts @@ -0,0 +1,15 @@ +import { Directive } from 'vue'; + +export default { + mounted(src, binding, vn) { + //const query = binding.value; + + const header = src.children[0]; + const currentStickyTop = getComputedStyle(src).getPropertyValue('--stickyTop'); + src.style.setProperty('--stickyTop', `${parseInt(currentStickyTop) + header.offsetHeight}px`); + header.style.setProperty('--stickyTop', currentStickyTop); + header.style.position = 'sticky'; + header.style.top = 'var(--stickyTop)'; + header.style.zIndex = '1'; + }, +} as Directive; diff --git a/src/client/pages/user/index.timeline.vue b/src/client/pages/user/index.timeline.vue index 1b7a96fff6..4941abdade 100644 --- a/src/client/pages/user/index.timeline.vue +++ b/src/client/pages/user/index.timeline.vue @@ -1,11 +1,11 @@ @@ -56,3 +56,11 @@ export default defineComponent({ }, }); + +