NProgress가 페이지 스크롤 진행 상황을 모니터링하고 마지막에 사라지지 않도록 하는 한 단계

최근에 블로그 웹사이트를 작성하고 있는데 상단에 스크롤바를 적용한 효과를 디자인하고 스크롤 페이지의 위치에 따라 백분율을 계산하여 상단의 스크롤바도 해당 위치로 스크롤되도록 하고 싶습니다. 하지만 그 기간 동안 몇 가지 사소한 문제가 있었습니다. 예를 들어, 페이지를 스크롤하지 않을 때 왜 스크롤 막대가 저절로 느리게 커지거나, 페이지 끝으로 스크롤하면 스크롤 막대가 사라지는 것이었습니다. 형님 걱정하지 마세요 천천히 들어주세요 ~~
효과는 그림과 같습니다.
여기에 이미지 설명을 삽입하세요

1. 설치

npm install --save nprogress
或
yarn add nprogress

둘, 사용

1. 로딩 진행률 표시줄로
Vue 항목 파일 main.js에 nprogress를 도입합니다
. 참고: 최소값은 0이어야 합니다. 그렇지 않으면 자동 증가 현상이 발생합니다.

import NProgress from 'nprogress' //引入 nprogress 插件
NProgress.configure({
    
    showSpinner: false});
NProgress.configure({
    
    minimum:0});
NProgress.configure({
    
    ease:'linear',speed:100});

경로 전환 시 로드(main.js에도 있음)

//当路由进入前
router.beforeEach((to, from, next) => {
    
    
  // 每次切换页面时,调用进度条
  NProgress.start();
  // 这个一定要加,没有next()页面不会跳转的。这部分还不清楚的去翻一下官网就明白了
  next();
});
//当路由进入后:关闭进度条
router.afterEach(() => {
    
    
  // 在即将进入新的页面组件前,关闭掉进度条
  NProgress.done()
})

2. 페이지 스크롤 진행 표시줄로
App.vue 참고 사항
: CSS 스타일에서 다음 스타일을 추가해야 합니다. 그렇지 않으면 다음 '버그'가 나타납니다.

#nprogress .peg {
    
    
  box-shadow: 0 0 10px #dd181800, 0 0 5px #c2282800 !important;
}

그림과 같이 :

스크롤바 머리 부분에 각도가 있는 설명할 수 없는 사각형이 나타나는 것을 볼 수 있는데, 이는 정말 골칫거리입니다.

<template>
  <div id="app">
    <router-view />
  </div>
</template>
<script>
import NProgress from "nprogress"; // 导入nprogress(因为在main.js 中已经导入样式,这里不需要再次导入)
export default {
    
    
  name: "App",
  mounted() {
    
    
    window.addEventListener("scroll", this.handleScroll); // 监听滚动条事件
  },
  methods: {
    
    
    handleScroll() {
    
    
      // 屏幕剩余的高度
      let surplus =
        document.documentElement.scrollHeight -
        document.documentElement.clientHeight;
      // 当前滑动高度
      let scrollY = document.documentElement.scrollTop;
      // 当前位置百分比小数
      let coorY = scrollY / surplus;
      // 设置导航栏,这里使用NProgress.set() 动态更改进度条
      NProgress.set(coorY);
    },
  },
};
</script>
<style>
#nprogress .bar {
    
    
  background: orange !important;
  height: 3px !important;
}
#nprogress .peg {
    
    
  box-shadow: 0 0 10px #dd181800, 0 0 5px #c2282800 !important;
}
</style>

3. 구성 항목

1. 기본 스타일 변경:
App.vue에서

<style>
#nprogress .bar{
    
     //自定义进度条颜色
  background: orange !important; 
}
#nprogress .peg {
    
     // 自定义辅助阴影颜色,这里默认为透明
  box-shadow: 0 0 10px #00000000, 0 0 5px #00000000 !important; 
}
</style>

2. NProgress 구성:
showSpinner: 진행률 링 표시 및 숨기기

NProgress.configure({
    
    showSpinner: false});

용이성: 애니메이션 설정을 조정합니다. 용이성은 CSS3 버퍼 애니메이션 문자열(예: 용이성, 선형, 완화, 완화, 완화, 입방 베지어)을 전달할 수 있습니다. speed는 애니메이션 속도(ms)입니다.

NProgress.configure({
    
    ease:'ease',speed:1000});

최소: 진행률 표시줄의 최소 비율을 설정합니다.

NProgress.configure({
    
    minimum:0.0});

백분율: 진행률을 설정하여 .set(n)을 호출하여 진행률을 제어합니다. 여기서 n의 값 범위는 0-1입니다.

NProgress.set(0.4);

넷째, 위의 문제를 해결하려면 소스 코드를 읽으십시오.

node_modules에서 nprogress 폴더를 찾아
여기에 이미지 설명을 삽입하세요
nprogress.js 파일을 찾아 다음 내용을 수정하여 스크롤바를 끝까지 스크롤하면 사라지는 문제를 해결합니다
여기에 이미지 설명을 삽입하세요
. css 폴더를 보면 # 회전 스타일이 실제로 nprogress .peg에 추가된 것을 볼 수 있습니다.
여기에 이미지 설명을 삽입하세요

추천

출처blog.csdn.net/qq_53461589/article/details/130782973