diff --git a/src/api/knowledge/scroll.js b/src/api/knowledge/scroll.js
index 47801599c..8c3d72fc1 100644
--- a/src/api/knowledge/scroll.js
+++ b/src/api/knowledge/scroll.js
@@ -4,98 +4,100 @@
export function onScroll() {
- // 获取所有锚点元素
- const navContents = document.querySelectorAll('.models')
-
- // 所有锚点元素的 offsetTop
- const offsetTopArr = []
- navContents.forEach(item => {
- offsetTopArr.push(item.offsetTop)
- })
- // 获取当前文档流的 scrollTop
- const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
- // 定义当前点亮的导航下标
- let navIndex = 0
- for (let n = 0; n < offsetTopArr.length; n++) {
- // 如果 scrollTop 大于等于第n个元素的 offsetTop 则说明 n-1 的内容已经完全不可见
- // 那么此时导航索引就应该是n了
- if (scrollTop+210 >= offsetTopArr[n]) {
- navIndex = n
- }
- //若滚动条已经到底则直接激活最后一个导航
- if (scrollTop + document.documentElement.clientHeight === document.documentElement.scrollHeight) {
- navIndex = offsetTopArr.length - 1;
- }
+ // 获取所有锚点元素
+ const navContents = document.querySelectorAll('.models')
+
+ // 所有锚点元素的 offsetTop
+ const offsetTopArr = []
+ navContents.forEach(item => {
+ offsetTopArr.push(item.offsetTop)
+ })
+ // 获取当前文档流的 scrollTop
+ //const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
+ const scrollTop = document.querySelector('.app-container').scrollTop || document.body.scrollTop
+
+ // 定义当前点亮的导航下标
+ let navIndex = 0
+ for (let n = 0; n < offsetTopArr.length; n++) {
+ // 如果 scrollTop 大于等于第n个元素的 offsetTop 则说明 n-1 的内容已经完全不可见
+ // 那么此时导航索引就应该是n了
+ if (scrollTop + 210 >= offsetTopArr[n]) {
+ navIndex = n
}
- //active.value = navIndex
- return navIndex;
- }
-
- // 跳转到指定索引的元素
- export function scrollTo(index) {
-
-
- // 获取目标的 offsetTop
- // css选择器是从 1 开始计数,我们是从 0 开始,所以要 +1
- const targetOffsetTop = document.querySelector(`.content .models:nth-child(${index + 1})`).offsetTop
- // 获取当前 offsetTop
- let scrollTop = document.documentElement.scrollTop || document.body.scrollTop
- // 定义一次跳 150 个像素
- const STEP = 50
- // 判断是往下滑还是往上滑
- if (scrollTop > targetOffsetTop) {
- // 往上滑
- smoothUp()
- } else {
- // 往下滑
- smoothDown()
+ //若滚动条已经到底则直接激活最后一个导航
+ if (scrollTop + document.documentElement.clientHeight === document.documentElement.scrollHeight) {
+ navIndex = offsetTopArr.length - 1;
}
- // 定义往下滑函数
- function smoothDown() {
- // 如果当前 scrollTop 小于 targetOffsetTop 说明视口还没滑到指定位置
- if (scrollTop < targetOffsetTop) {
- // 如果和目标相差距离大于等于 STEP 就跳 STEP
- // 否则直接跳到目标点,目标是为了防止跳过了。
- if (targetOffsetTop - scrollTop >= STEP) {
- scrollTop += STEP
- } else {
- scrollTop = targetOffsetTop
- }
- document.body.scrollTop = scrollTop
- document.documentElement.scrollTop = scrollTop
- // 关于 requestAnimationFrame 可以自己查一下,在这种场景下,相比 setInterval 性价比更高
- requestAnimationFrame(smoothDown)
+ }
+ //active.value = navIndex
+ return navIndex;
+}
+
+// 跳转到指定索引的元素
+/* export function scrollTo(index) {
+
+
+ // 获取目标的 offsetTop
+ // css选择器是从 1 开始计数,我们是从 0 开始,所以要 +1
+ const targetOffsetTop = document.querySelector(`.content .models:nth-child(${index + 1})`).offsetTop
+ // 获取当前 offsetTop
+ let scrollTop = document.documentElement.scrollTop || document.body.scrollTop
+ // 定义一次跳 150 个像素
+ const STEP = 50
+ // 判断是往下滑还是往上滑
+ if (scrollTop > targetOffsetTop) {
+ // 往上滑
+ smoothUp()
+ } else {
+ // 往下滑
+ smoothDown()
+ }
+ // 定义往下滑函数
+ function smoothDown() {
+ // 如果当前 scrollTop 小于 targetOffsetTop 说明视口还没滑到指定位置
+ if (scrollTop < targetOffsetTop) {
+ // 如果和目标相差距离大于等于 STEP 就跳 STEP
+ // 否则直接跳到目标点,目标是为了防止跳过了。
+ if (targetOffsetTop - scrollTop >= STEP) {
+ scrollTop += STEP
+ } else {
+ scrollTop = targetOffsetTop
}
+ document.body.scrollTop = scrollTop
+ document.documentElement.scrollTop = scrollTop
+ // 关于 requestAnimationFrame 可以自己查一下,在这种场景下,相比 setInterval 性价比更高
+ requestAnimationFrame(smoothDown)
}
- // 定义往上滑函数
- function smoothUp() {
- if (scrollTop > targetOffsetTop) {
- if (scrollTop - targetOffsetTop >= STEP) {
- scrollTop -= STEP
- } else {
- scrollTop = targetOffsetTop
- }
- document.body.scrollTop = scrollTop
- document.documentElement.scrollTop = scrollTop
- requestAnimationFrame(smoothUp)
+ }
+ // 定义往上滑函数
+ function smoothUp() {
+ if (scrollTop > targetOffsetTop) {
+ if (scrollTop - targetOffsetTop >= STEP) {
+ scrollTop -= STEP
+ } else {
+ scrollTop = targetOffsetTop
}
+ document.body.scrollTop = scrollTop
+ document.documentElement.scrollTop = scrollTop
+ requestAnimationFrame(smoothUp)
}
}
- export function formatDate(timestamp) {
- var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
-
- var Y = date.getFullYear() + '-';
-
- var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
-
- var D = date.getDate() + ' ';
-
- var h = date.getHours() + ':';
-
- var m = date.getMinutes() + ':';
-
- var s = date.getSeconds();
-
- return Y+M+D+h+m+s;
- }
+} */
+export function formatDate(timestamp) {
+ var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
+
+ var Y = date.getFullYear() + '-';
+
+ var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+
+ var D = date.getDate() + ' ';
+
+ var h = date.getHours() + ':';
+
+ var m = date.getMinutes() + ':';
+
+ var s = date.getSeconds();
+
+ return Y + M + D + h + m + s;
+}
diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue
index 00bc57b3e..6f67a2ce8 100644
--- a/src/layout/components/AppMain.vue
+++ b/src/layout/components/AppMain.vue
@@ -34,7 +34,7 @@ const tagsViewStore = useTagsViewStore();
.hasTagsView {
.app-main {
/* 84 = navbar + tags-view = 50 + 34 */
- min-height: calc(100vh - 84px);
+ min-height: calc(100vh - 85px);
}
.fixed-header + .app-main {
diff --git a/src/views/knowledge/knowledge/components/KnowledgeContent.vue b/src/views/knowledge/knowledge/components/KnowledgeContent.vue
index 802b696f1..f9dfc551a 100644
--- a/src/views/knowledge/knowledge/components/KnowledgeContent.vue
+++ b/src/views/knowledge/knowledge/components/KnowledgeContent.vue
@@ -1,5 +1,5 @@
@@ -76,11 +72,11 @@ onMounted(() => {