关键代码

  1. const H = 50; // header的高度
  2. const H2 = H / 2;
  3. let cy = 0;
  4. class Home extends Component {
  5. @observable top = 0;
  6. @observable ms = 0;
  7. onScroll = ({ y }) => {
  8. let scrollLength = Math.abs(y - cy);
  9. if (y < cy) {
  10. l("paeg up");
  11. if (this.top >= -H) {
  12. const newTop = this.top - scrollLength;
  13. this.top = Math.max(newTop, -H);
  14. }
  15. } else if (y > cy) {
  16. // l("page down");
  17. if (this.top <= 0) {
  18. let newTop = this.top + scrollLength;
  19. this.top = Math.min(newTop, 0);
  20. }
  21. } else {
  22. // l("没动");
  23. }
  24. if (cy !== y) cy = y; // 保存这一次的值,在下一次作比较
  25. };
  26. onScrollEnd = ({ y }) => {
  27. const top = Math.abs(this.top);
  28. this.ms = 200;
  29. if (top <= H2) {
  30. l("show");
  31. this.top = 0;
  32. } else {
  33. l("hide");
  34. this.top = -H;
  35. }
  36. this.ms = 0;
  37. };
  38. render() {
  39. const { classes } = this.props;
  40. return (
  41. <div class={classes.root}>
  42. {/* hedaer */}
  43. <HomeHeader top={this.top} ms={this.ms} />
  44. <div className={classes.wraper}>
  45. <Scroll
  46. onScroll={this.onScroll}
  47. onScrollEnd={this.onScrollEnd}
  48. bounce={false}
  49. >
  50. <div> ... </div>
  51. </Scroll>
  52. </div>
  53. </div>
  54. );
  55. }
  56. }
  57. class HomeHeader extends Component {
  58. render() {
  59. const { top, ms } = this.props;
  60. return (
  61. <AppBar
  62. color="inherit"
  63. position="fixed"
  64. style={{
  65. transition: `transform ${ms}ms ease`,
  66. transform: `translateY(${top}px)`,
  67. }}
  68. > ... </AppBar>
  69. );
  70. }
  71. }

react better-scroll 编写类似手机chrome的header显示隐藏效果的更多相关文章

  1. JS编写类似弹出窗口样式显示层

    JSp中增加div <!-- 提交变更申请 --> <div id="changeWindow" class="easyui-window" ...

  2. WinForm实现类似QQ停靠,显示隐藏过程添加特效效果

    原文:WinForm实现类似QQ停靠,显示隐藏过程添加特效效果 这可能是个老题长谈的问题了,只是在项目中会用到这个效果,所以今天做个记录.大家见了别喷我.在项目中的需求是这样的. 打开程序,在屏幕的右 ...

  3. 真机调试之android手机+chrome

    真机调试之android手机+chrome 虽然chrome上的移动设备模拟器很强大,但是在真机运行的时候,总会遇到一些小问题,这时就需要使用真机调试了. 第一步:准备一台android手机,并在手机 ...

  4. Appium(Python)驱动手机Chrome浏览器

    手机Chrome浏览器访问淘宝H5与在电脑上访问淘宝H5是一摸一样的: 第一种方法: 直接在电脑Chrome浏览器上打开F12: 第二种方法: 手机连接电脑后, 在手机Chrome浏览器上打开淘宝H5 ...

  5. 【Python】[技术博客] 一些使用Python编写获取手机App日志的操作

    一些使用Python编写获取手机App日志的操作 如何获取手机当前打开的App的包名 如何获取当前App进程的PID 如何查看当前App的日志 如何将日志保存到文件 如何关闭进程 如何不显示命令行窗口 ...

  6. 手机软件Toast无法显示提示信息

    近日在做项目时,测试组的同事提出一个bug,就是在一台LG手机上,原本应该显示的Toast信息,都不显示,消息栏也没有出现通知,后来经过查资料知道有些三星.LG手机默认禁用了显示通知那一项,而不显示通 ...

  7. EditTextPreference点击后输入框显示隐藏内容,类似密码输入(转)

    http://bbs.anzhuo.cn/thread-928131-1-1.html EditTextPreference点击后输入框显示隐藏内容,类似密码输入... [复制链接]     aski ...

  8. scroll事件实现监控滚动条并分页显示示例(zepto.js)

    scroll事件实现监控滚动条并分页显示示例(zepto.js  ) 需求:在APP落地页上的底部位置显示此前其他用户的购买记录,要求此div盒子只显示3条半,但一页有10条,div内的滑动条滑到一页 ...

  9. 手机自带的显示基站命令(android手机定位,iphone基站定位)

    手机自带的显示基站命令(安卓手机定位,苹果手机基站定位) 分类: 通信和网络2012-02-07 17:48 1734人阅读 评论(0) 收藏 举报 手机htciphone中兴三星网络 安卓手机自带快 ...

随机推荐

  1. 【springboot】【redis】springboot结合redis,操作List集合实现时间轴功能

    springboot结合redis,操作List集合实现时间轴功能

  2. 毕业论文Word格式技巧

    word利用多级列表功能实现章节标题自动编号 坑:在选择级别1后,直接在当前对话框直接继续设置级别2:然后选中级别2,设置相应的格式,主要在将级别链接到样式处选择为标题2,然后要在库中显示的级别选择级 ...

  3. vs 2017 community中文版下载地址

    https://my.visualstudio.com/Downloads?pid=2190 SHA1: 109C6646A79844D8116DADB293A0B64754363C69 File n ...

  4. gmock

    https://www.cnblogs.com/welkinwalker/archive/2011/11/29/2267225.html http://www.cnblogs.com/jycboy/p ...

  5. fiddle扩展

    扩展地址:http://www.telerik.com/fiddler/add-ons 证书选择 ios设置证书生成 (CertMaker for iOS and Android) 证书查看 (Fid ...

  6. SpUtil多样加密存储,兼容android9.0

    代码地址如下:http://www.demodashi.com/demo/15058.html 前言 在android系统不断升级的过程中,Sharepreferences存储出现多中问题,其中有些是 ...

  7. Clion使用MinGW编译好的boost库

    MinGW编译Boost库可以参考我之前写的编译Boost的文章. 以下是cmake链接boost静态库的配置: cmake_minimum_required(VERSION 3.8) project ...

  8. Mysql中NUMERIC和DECIMAL类型区别比较

    decimal(numeric ) 同义,用于精确存储数值 . decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边.decimal 数据类型存储了一个准确(精确)的数字表 ...

  9. LaTeX中的各种距离设置总结

    LaTeX中的各种距离设置总结   1. 页面设置 A4 会给你一个较小的页面,为了使用更多的控制,可用 geometry宏包  和  命令 \layout . 2. 改变长度 在latex里改变长度 ...

  10. [elk]elasticsearch实现冷热数据分离

    本文以最新的elasticsearch-6.3.0.tar.gz为例,为了节约资源,本文将副本调为0, 无client角色 https://www.elastic.co/blog/hot-warm-a ...