• scrolltrigger简单讲解


    const trigger = new ScrollTrigger.default({
                trigger: {
                    once: false,    // 切换是否只是一次性
                    offset: {
                        // 元素的偏移量要加上视图的偏移量才算整体偏移量
                        // 例如:现在的视图高度是667,元素out的高度是228(还没显示用out元素高度,已经显示用in元素的高度),所以现在的偏移量是228*0.2+667*02
                        element: {
                            x: 0,
                            y: (trigger: any, rect: any, direction: any) => {
                                // rect (整体scrollDOM容器的所有信息)
                                // trigger (内部已经添加的动画)
                                // direction (方向,top,bottom等)
                                // 元素距离视图层多少的偏移量就显示元素
                                return 0.2
                            }
                        },
                        viewport: {
                            x: 0,
                            y: (trigger: any, frame: any, direction: any) => {
                                // trigger (内部已经添加的动画)
                                // frame (视图高宽)
                                // direction (方向,top,bottom等)
                                return trigger.visible ? 0 : 0.2
                            }
                        }
                    },
                    toggle: {
                        // 元素切换的class,可以数组显示多个元素,也可以只是字符串
                        class: {
                        },
                        // 回调函数
                        callback: {
                            // 元素可见状态变化的回调方法
                            visible: (trigger: any) => {
    
                            },
                            // 进入元素的回调方法
                            in: (trigger: any) => {
                                return new Promise((resolve, reject) => {
                                    setTimeout(resolve, 10)
                                })
                            },
                            // 移出元素的回调方法
                            out: (trigger: any) => {
                                return new Promise((resolve, reject) => {
                                    setTimeout(resolve, 10)
                                })
                            }
                        }
                    },
                },
                scroll: {
                    // 滚动停止后,动画继续执行的毫秒数
                    sustain: 200,
                    // 滚动条的主体
                    element: document.getElementById('scroll'),
                    // 滚动中的回调函数
                    callback: (e: any) => {
                        if (e.y < 500) {
                            setMove(e.y + 100)
                        }
                    },
                    // 开始滚动的回调函数
                    start: () => { },
                    // 停止滚动的回调函数
                    stop: () => { },
                    // 滚动方向变化的回调函数
                    directionChange: () => { }
                }
            })
            trigger.add('.an', {
                toggle: {
                    class: {
                        in: ['animateIn'],
                        out: ['animateOut']
                    }
                }
            })
    
    <div className="an"></div>
    

      

  • 相关阅读:
    Java SE 5.0(JDK 1.5)新特性
    第22章—开启HTTPS
    第21章—websocket
    IE8Get请求中文不兼容:encodeURI的使用
    JavaScript自定义函数
    disable的错误使用
    20190401-记录一次bug ConstraintViolationException
    new Date()的浏览器兼容性问题
    单例模式(转)
    SQL Server使用一个语句块批量插入多条记录的三种方法和union和union all区别
  • 原文地址:https://www.cnblogs.com/huangqiming/p/13356620.html
Copyright © 2020-2023  润新知