首页 > 其他分享 >【前端必会】适合首页的滚动过渡(CSS transition)

【前端必会】适合首页的滚动过渡(CSS transition)

时间:2022-10-10 00:44:50浏览次数:47  
标签:滚动 transition clientHeight let 首页 offsetTop scrollTop CSS build

背景
经常看到一些首页的过渡效果不错,闲来无事,实现个基本效果

直接上代码

<body>
  <div id="1" class="block build-in-scale-up"><h1>Hello1</h1></div>
  <div id="2" class="block build-in-scale-up"><h1>Hello2</h1></div>
  <div id="3" class="block build-in-scale-up"><h1>Hello3</h1></div>
  <div id="4" class="block build-in-scale-up"><h1>Hello4</h1></div>
  <div id="5" class="block build-in-scale-up"><h1>Hello5</h1></div>
</body>
<script>
  function addAni() {
    let panels = document.getElementsByTagName("div");
    for (let i = 0; i < panels.length; i++) {
      let p = panels[i];
      let id = p.getAttribute("id");
      let scrollTop = document.body.scrollTop;
      let scrollHeight = document.body.clientHeight;
      let offsetTop = p.offsetTop;
      let clientHeight = document.body.clientHeight;
      console.log(
        id,
        scrollHeight,
        "scrollTop",
        scrollTop + clientHeight - 100,
        "panel offsetTop",
        offsetTop
      );

      if (scrollTop + clientHeight - 100 > offsetTop) {
        p.classList.add("build-in-animate");
      } else {
        p.classList.remove("build-in-animate");
      }
    }
  }
  window.addEventListener("scroll", addAni);
  addAni();
</script>
<style>
  .block {
    height: 300px;
    background-color: bisque;
    margin: 5px;
  }
  .build-in-scale-up.build-in-animate {
    opacity: 1;
    transform: scale(1) translateY(0);
  }

  .build-in-scale-up {
    /* opacity: 0; */
    transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
    transform: scale(0.96) translateY(24px);
  }
</style>

效果如下:
滚动到元素刚出现时,呈现一个放大的效果。
图1:刚出现的效果

图2:继续滚动Hello3面板会放大到最终位置

总结

  1. 适当的过渡效果让页面没那么生硬
  2. 当滚动到元素出现时,添加样式。实现原理与滚动加载差不多。不过也有点区别(scrollTop + clientHeight - 100 > offsetTop)
  3. 添加样式后会展现过渡效果

标签:滚动,transition,clientHeight,let,首页,offsetTop,scrollTop,CSS,build
From: https://www.cnblogs.com/lee35/p/16774235.html

相关文章

  • html css JavaScript web网页设计期末作业 共5页【视频演示】
    ......
  • HTM5网页设计作业成品 HTML+CSS校园安全公益网站制作
    ......
  • safari: css:解决translate时移动的元素闪烁(safari 15.5)
    一,解决translate时移动的元素闪烁:1,问题的表现:mac版safari,在div有transformtranslate动画滑动时会发生闪烁(或者说是闪动,有黑影闪过)另外滑动的div达到一定长度才有这......
  • js是什么、html、css
    一:js简介1.前端三剑客:html+css+js,其中html是用来部署网页的结构,css是用来美化网页,而js则是让网页具有行为,让页面具有动态效果(动态不是简单指页面动起来,是后台与前台可以......
  • CSS
    CSS是什么CSS就是层叠级联样式表,作用:用来美化网页CSS怎么用(快速入门)CSS选择器(重点+难点)美化网页(文字,阴影,超链接,列表,渐变...)盒子模型浮动定位网页动画(特效效果)......
  • CSS选择器与常用属性
    CSSCSS全称层叠样式表,网页的内容由HTML控制,网页的样式由CSS控制<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>demo</title><st......
  • css如何美化滚动条
    /*定义滚动条高宽及背景高宽分别对应横竖滚动条的尺寸*/::-webkit-scrollbar{width:7px;height:7px;background-color:#f5f5f5;}/*定义滚动条轨道内阴......
  • css img神奇的缝隙
    <divclass="wrap"><imgsrc="a.jpg"alt="">dragaasdf<divclass="rect"></div></div>.wrap{font-size:100px;}.rect{width:500px;height:200px;backgrou......
  • css设置字体闪烁
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>文字闪烁</title></head><body><spanid="blink"><b>奇葩天地网</b></span><scri......
  • 直播平台搭建源码,css预加载旋转动画 与 流光字体
    直播平台搭建源码,css预加载旋转动画与流光字体一、预加载旋转动画Html<viewclass="concentric_round"></view>​cssbody{}.concentric_round{width:200rpx;heig......