#20-有看到我的猫吗?用offsetPath让猫猫滚起来!(SVG)

偶尔会看到,往下滚,球就会跟着滚动的幅度以抛物线移动。

今天就来使用SVG的Path做做看!
其实是我做好的第二个版本,第一个是使用GSAP & ScrollMagic的外挂完成,
但...人家才不要套件啦!

老样,先看成果!
滚轮上滚时,猫猫也会用一样的比例倒回去~

那你有看到我的猫了吗?


用offset-path华丽滚!用JS控制滚动幅度

用css的参数就可以达到曲线滚动的效果罗!

offset-path: path('M3.9,...看你要什麽路径');
motion-offset: 100%; //看猫猫要走多久!我们等一下就是要控制这个

今天的offse-path就来用这个双峰:
出处:SVG 研究之路 (4) - Path 基础篇

不过因为我想要让猫走完整个萤幕,所以用JS看一下现在的萤幕宽度
然後设定一下猫猫要跑的路线

const cat = document.querySelector('.cat'); //先找到猫猫
const windowWidth = window.innerWidth*1.5; //比萤幕宽一点
cat.style.offsetPath = `path('M0 0 Q${windowWidth/4} ${windowWidth/4}, ${windowWidth/2} 0 T${windowWidth} 0')`; //就是刚刚那个图啦,总共需要三个点,就是一直对切除以二罗~

再来侦测scroll滚动,
想让猫猫再第一块区块滚动结束时开始滚,
然後在300px的距离里面滚完~

const main = document.querySelector('.main');
let scrollStart = main.offsetTop; //第一个区块的高度就是要开始滚的距离~
let distancePercent;

//侦测滚动的距离
document.addEventListener('scroll', function(){
    //滚动的距离
  let scrollHeight = document.documentElement.scrollTop || document.body.scrollTop;
  //看滚动了多少  除以  想要滚动的幅度(数学都有学吧!)
  let percent = (scrollHeight - scrollStart) / 300 * 100;
  
  //如果是负的话,就要让猫猫倒着回去~所以用100去减
  distancePercent = percent > 0 ? percent : 100 - distancePercent;
  cat.style.offsetDistance =  `${percent}%`;

就这样啦!猫咪就滚起来噜


以上!

今天的code在这里
剩下10篇了,请多多指教~~


<<:  用React刻自己的投资Dashboard Day21 - 介绍Finmind API

>>:  Day 21 Odoo 的domain是什麽?

[Day23] Flutter GetX with Dio (二)

承袭前一篇Dio 这篇是接着发起request 这次范例是使用News API response 回...

Golang 初心者村

前言 本30天系列文章是采取边写边纪录,对golang的了解几乎可以说是白纸一张,目前的经验只有用看...

Day1 前言

报名这次的铁人赛事十分紧张,对於我自己资讯方面的技术并不是那麽熟练,想利用铁人赛来督促自己学习新的...

Day20 让电脑透过数据机和有线、无线网路传递讯息

上一回讲的是透过数据机连结各种电脑周边 今天来分享数据机更强大的功能,传递讯息 可以先查询 mode...

【在 iOS 开发路上的大小事-Day23】透过 Firebase 将多种 OAuth 身份验证方式连结在单一帐号上

前情提要 你有想过 Line、KKBOX 等 App 上面的「与外部帐号连结」是怎麽做到的吗 ▲ L...