展开目录
给滚动条置顶添加过渡动画
javascriptcss3transition
X
陈尼玛的博客
记录开发生涯的踩坑经历,用时间来验证成长
加载中

以往这个效果会首选使用js借助计时器设置body的滚动条位置,这样的好处是低版本浏览器也可以兼容,但是动画不如css3的transition来的流畅。现在手头的项目主要是在移动端上看的,所以考虑效果优化,至于低版本仅保证基本功能可以使用。 tranisition支持过渡效果的属性必须是css的属性,所以直接设置scrollTop是无法触发过渡动画的,所以考虑类似的属性变通实现。marginTop是最容易想到的css属性,具体做法是让body的marginTop等于负的滚动条高度,然后设置滚动条高度为0。 需要注意,设置marginTop成负值前必须先清除transition属性,否则动画过渡会导致设置无效,下面是实现的代码。

<meta charset='utf-8' />
<style>
html,body,div{
  margin: 0;
  width:100%;
  min-height:100%;
  line-height: 0;
  padding-left: 30px;
  position: relative;
}
</style>
<body>
  <div>
    <script>
    for(var i=0;i<30;i++)
      document.write('<p style="font-size:'+(i+12)*2+'px">'+i+'</p>');
    </script>
  </div>
</body>
<script src='https://www.xdelve.com/js-lib/plus/jquery.js'></script>
<script type="text/javascript">
$(document).click(function(){
  $('body').css({
    transitionDuration:'0s',
    marginTop:-$(document).scrollTop()
  });
  $(document).scrollTop(0);
  $('body').css({
    transition:'.6s all ease-in-out',
    marginTop:0
  });
});
</script>

相关文档

暂无

随便看看

  1. sqlite 查看table的构建语句

  2. windows电脑防止自动休眠

  3. ipsec vpn 添加新账号

  4. raw.githubusercontent.com DNS被指向127.0.0.1

  5. npm远程服务器某些配置不兼容代理的解决办法

  6. 树莓派实现用pi用户自动登录

  7. 判断变量是否 0 或者 '0'

  8. 模拟307跳转情况

  9. webrtc泄漏本地ip信息

  10. dd备份/还原

  11. 树莓派配置wifi热点

  12. ssl 证书生成方式

  13. mongodb2.4 添加用户

  14. sendmail用nginx做代理

  15. centos7 开放或者关闭端口

  16. 随机取某个概率区间的代码

  17. 前端性能观察器

畅言模块加载中