Skip to content

Commit

Permalink
feat: 滚动时隐藏header,当面包屑存在时将面包屑提升到header上
Browse files Browse the repository at this point in the history
close#362
  • Loading branch information
RSS1102 committed Aug 27, 2024
1 parent be3be09 commit fbab0c7
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/config/style.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ export default {
isUseTabsRouter: false,
showHeader: true,
brandTheme: '#0052D9',
toggleHeadVisible: false,
};
38 changes: 38 additions & 0 deletions src/layouts/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,46 @@ const appendNewRoute = () => {
tabsRouterStore.appendTabRouterList({ path, query, title: title as string, name, isAlive: true, meta: route.meta });
};
const toggleHeadVisible = () => {
const layoutElement = document.querySelector(`.${prefix}-layout`);
if (layoutElement) {
const { scrollTop } = layoutElement;
const headerMenuFixedElement = document.querySelector(`.${prefix}-header-menu-fixed`);
const headerMenuFixedElementHeight = headerMenuFixedElement.scrollHeight;
// 面包屑fixed在头部
if (settingStore.showBreadcrumb) {
document.querySelector(`.t-layout__header`)?.setAttribute('style', `position:relative;`);
const breadcrumbElement = document.querySelector(`.t-breadcrumb`);
if (scrollTop > headerMenuFixedElementHeight && settingStore.toggleHeadVisible) {
headerMenuFixedElement.setAttribute('style', 'display: none;');
breadcrumbElement.setAttribute('style', 'position:absolute;top:18px;');
} else {
headerMenuFixedElement.setAttribute('style', null);
breadcrumbElement.setAttribute('style', null);
}
} else {
const headerElement = document.querySelector(`.t-layout__header`);
if (scrollTop > headerMenuFixedElementHeight && settingStore.toggleHeadVisible) {
headerElement.setAttribute('style', 'display: none;');
(layoutElement as HTMLElement).style.height = '100vh';
} else {
headerElement.setAttribute('style', null);
(layoutElement as HTMLElement).style.height = 'calc(100vh - var(--td-comp-size-xxxl))';
}
}
}
};
onMounted(() => {
appendNewRoute();
const targetElement = document.querySelector(`.${prefix}-layout`);
if (targetElement) {
targetElement.addEventListener('scroll', toggleHeadVisible);
}
});
watch(
Expand Down
3 changes: 3 additions & 0 deletions src/layouts/setting.vue
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@
<t-form-item :label="$t('layout.setting.element.menuAutoCollapsed')" name="menuAutoCollapsed">
<t-switch v-model="formData.menuAutoCollapsed"></t-switch>
</t-form-item>
<t-form-item :label="$t('layout.setting.element.toggleHeadVisible')" name="toggleHeadVisible">
<t-switch v-model="formData.toggleHeadVisible"></t-switch>
</t-form-item>
</t-form>
<div class="setting-info">
<p>{{ $t('layout.setting.tips') }}</p>
Expand Down
1 change: 1 addition & 0 deletions src/locales/lang/en_US/layout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export default {
title: 'Element Switch',
showHeader: 'Show Header',
showBreadcrumb: 'Show Breadcrumb',
toggleHeadVisible: 'Toggle Header Display',
showFooter: 'Show Footer',
useTagTabs: 'Use Tag Tabs',
menuAutoCollapsed: 'Menu Auto Collapsed',
Expand Down
1 change: 1 addition & 0 deletions src/locales/lang/zh_CN/layout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export default {
title: '元素开关',
showHeader: '显示顶栏',
showBreadcrumb: '显示面包屑',
toggleHeadVisible: '切换顶栏显示',
showFooter: '显示页脚',
useTagTabs: '展示多标签Tab页',
menuAutoCollapsed: '菜单自动折叠',
Expand Down

0 comments on commit fbab0c7

Please sign in to comment.