首页 > 其他分享 >好看的滚动文字渐入效果

好看的滚动文字渐入效果

时间:2023-12-25 15:35:33浏览次数:26  
标签:const observer paragraphs item forEach 渐入 滚动 main 好看

全部代码:

const observers = [] // 用于存储所有观察者 -> 收集起来主要是为了当路由变化时效果之前的观察者。

export default {
 // ... 省略
 setup() {
  const route = useRoute()
  onMounted(() => {
   initFirstScreen() // 初始化 -> 给首次渲染就在视口的元素加上自定义属性,这些元素永远不用加动画类
   animateFn() // 执行核心脚本
  })
  
    // 元素是否在视口
  const isElementInViewport = element => {
   var rect = element.getBoundingClientRect()
   const isInViewport =
    rect.top >= 0 &&
    rect.bottom <=
     (window.innerHeight || document.documentElement.clientHeight)
   return isInViewport
  }
 
    // 检查是否有自定义属性
  const checkHasAttribute = element => {
   return !!element.getAttribute('snow_is_show')
  }
  
    // 初始化函数
  const initFirstScreen = () => {
   const main = document.querySelector('.vp-doc>div') || []
   const paragraphs = [...(main?.children || [])]
   paragraphs.forEach(item => {
    if (isElementInViewport(item)) {
     item.setAttribute('snow_is_show', true)
    }
   })
  }
  
    // 核心脚本 
  const animateFn = () => {
   const main = document.querySelector('.vp-doc>div') || []
   const paragraphs = [...(main?.children || [])]
   paragraphs.forEach(item => {
    const observer = new IntersectionObserver(entries => {
     entries.forEach(entry => {
      if (entry.isIntersecting && !checkHasAttribute(item)) {
       // 元素进入视口
       item.classList.add('animate__animated')
       item.classList.add('animate__fadeInUp')
       item.setAttribute('snow_is_show', true)
      }
     })
    })
    observer.observe(item)
    observers.push(observer)
   })
  }
  
    // 清空所有 observer 的函数
  const destructionObserver = () => {
   observers.forEach(observe => {
    observe.disconnect()
   })
   observers.length = 0
  }
    
  watch(
   () => route.path,
   () =>
    nextTick(() => {
     destructionObserver() // 先清空所有的观察者
     initFirstScreen() // 再初始化一次 类似onMounted
     animateFn() // 再次执行核心函数
    })
  )
 },
 Layout,
}

标签:const,observer,paragraphs,item,forEach,渐入,滚动,main,好看
From: https://blog.51cto.com/u_15997490/8968943

相关文章

  • 关于uniapp设置头部固定,内容区域滚动,不同手机显示表现不一致的问题
    问题若固定了头部元素区域高度,比如固定的rpx,vh等,在其他手机中可能出现部分空白,导致界面不协调。我的解决方案是自动计算出头部区域元素的高度,让内容区域自动设置外边距方案使用了unaipp提供的 uni.createSelectorQuery() 方法来获取头部区域的高度。首先,通过 ref="header"......
  • 一个简单的QML滚动字幕实现
    一个简单的QML滚动字幕实现目录结构configparam.h#ifndefCONFIGPARAM_H#defineCONFIGPARAM_H#include<QObject>#include<QTypeInfo>classconfigParam:publicQObject{Q_OBJECTQ_PROPERTY(QStringbackGroundColorREADgetBackGroundColorNOTIFYba......
  • 滚动阴影解决方案
    1.backgroud,限制高度,加overflow,codeopen,.g-scroll{top:-1px;position:relative;height:500px;overflow-y:scroll;overflow-x:hidden;background:linear-gradient(#fff,transparent)top/100%100px,radial-grad......
  • Ant Design + List + 滚动加载列表
    <div><InfiniteScrolldataLength={load.length}hasMore={load.length<datas.length+1}loader={null}endMessage={null}onScroll={(e)=>{/*屏幕发生滚动的执行方法。也可以采用官网的next+scrollableTarget或者loadMore也可*/......
  • qt滚动条样式设计
    /*整个垂直滚动条区域样式*/QScrollBar:vertical{border:none;background:rgb(30,30,30);width:10px;margin:0px00px0;}/*整个水平滚动条区域样式*/QScrollBar:horizontal{border:none;background:rgb(30,30,30);height:10px;m......
  • qt 折叠与展开 窗口,折叠列表,展开列表,抽屉效果,根据窗口大小自动产生滚动条
      自定义折叠控件,h头文件#ifndefQUESTIONBANKWIDGET_H#defineQUESTIONBANKWIDGET_H#include<QWidget>#include<QVBoxLayout>#include<QHBoxLayout>#include<QToolButton>#include<QPushButton>#include<QLabel>#include<......
  • 外观很好看的云盘:一款开源的云盘系统 —— kodcloud
    看到一款外观十分好看的开源云盘系统:下载地址:https://kodcloud.com/explorer/download/    开源地址:https://github.com/kalcaddle  具体项目:https://github.com/kalcaddle/KodExplorer  ==========================  这个网盘系统是使用PHP语言写......
  • cocos creator ScrollView不滚动问题
    拖放默认的ScrollView可以,可以滚动显示文字,结构如下:ScrollView scrollBar(滚动条结点,不显示滚动条时,可直接删除,删除后把ScrollView里面的VertticalScrollBar值清了) bar view(视图结点) content item(具体文本)content......
  • 新增数据后自动滚动到表格底部
    <table> <thead> <tr> <th></th> </tr> </thead> <tbody:ref="indexInfo.index_id":id="indexInfo.index_id"> <tr> <td></td> </tr> </tbody>......
  • vue路由切换时内容组件的滚动条回到顶部
    vue路由切换时内容组件的滚动条回到顶部:https://blog.csdn.net/Macao7_W/article/details/125517519?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170252373016800185826420%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=......