react better-scroll 编写类似手机chrome的header显示隐藏效果

关键代码

const H = 50; // header的高度
const H2 = H / 2;
let cy = 0;

class Home extends Component {
  @observable top = 0;
  @observable ms = 0;

  onScroll = ({ y }) => {
    let scrollLength = Math.abs(y - cy);

    if (y < cy) {
      l("paeg up");
      if (this.top >= -H) {
        const newTop = this.top - scrollLength;
        this.top = Math.max(newTop, -H);
      }
    } else if (y > cy) {
      // l("page down");
      if (this.top <= 0) {
        let newTop = this.top + scrollLength;
        this.top = Math.min(newTop, 0);
      }
    } else {
      // l("没动");
    }

    if (cy !== y) cy = y; // 保存这一次的值,在下一次作比较
  };

  onScrollEnd = ({ y }) => {
    const top = Math.abs(this.top);
    this.ms = 200;
    if (top <= H2) {
      l("show");
      this.top = 0;
    } else {
      l("hide");
      this.top = -H;
    }
    this.ms = 0;
  };

  render() {
    const { classes } = this.props;
    return (
      <div class={classes.root}>
        {/* hedaer */}
        <HomeHeader top={this.top} ms={this.ms} />

        <div className={classes.wraper}>
          <Scroll
            onScroll={this.onScroll}
            onScrollEnd={this.onScrollEnd}
            bounce={false}
          >
            <div> ... </div>
          </Scroll>
        </div>
      </div>
    );
  }
}

class HomeHeader extends Component {
  render() {
    const { top, ms } = this.props;
    return (
      <AppBar
        color="inherit"
        position="fixed"
        style={{
          transition: `transform ${ms}ms ease`,
          transform: `translateY(${top}px)`,
        }}
      > ... </AppBar>
    );
  }
}

原文地址:https://www.cnblogs.com/ajanuw/p/10156586.html

时间: 2024-11-13 10:31:58

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

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

JSp中增加div <!-- 提交变更申请 --> <div id="changeWindow" class="easyui-window" data-options="title:'提交变更申请',collapsible:false,minimizable:false,maximizable:false,modal:true" closed="true" style="width:820px;he

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

原文:WinForm实现类似QQ停靠,显示隐藏过程添加特效效果 这可能是个老题长谈的问题了,只是在项目中会用到这个效果,所以今天做个记录.大家见了别喷我.在项目中的需求是这样的. 打开程序,在屏幕的右下角会显示一个窗体,一般情况下该窗体会隐藏停靠在右边,只露出很小部分,当鼠标移动到这个很小部分时,窗体全部显示,显示过程是从右边滑动到左边,当鼠标离开窗体时,窗体需要隐藏在右边,只露出很小部分,隐藏过程是从左边滑动到右边. 实现此类效果我碰到的连个难点是:1.如何判断鼠标离开了窗体?2.窗体显示隐藏

真机调试之android手机+chrome

真机调试之android手机+chrome 虽然chrome上的移动设备模拟器很强大,但是在真机运行的时候,总会遇到一些小问题,这时就需要使用真机调试了. 第一步:准备一台android手机,并在手机上下载chrome浏览器,一根数据线. 第二步:进入设置-关于手机-版本号连续点击数次(会有提示),开发者选项就会显示,我们在打开即可. 第三步:打开手机上的chrome,并进入你要调试的网页. 第四步:新建一个tab,输入chrome://inspect/,进入调试页面.可以发现chrome检测到

Android apps浅析02-Android IM:一个类似手机QQ的即时通讯开源实现

Android apps浅析02-Android IM:一个类似手机QQ的即时通讯开源实现 这是Android上的一个简单的IM应用程序运行时,应用程序发出HTTP请求到服务器,在PHP和MySQL,验证,注册和得到其他朋友的状态和数据来实现,那么它与其他设备的其他应用程序通过通信套接字接口. 1. 数据库只要2个表:朋友表和用户表: CREATE TABLE `friends` ( `Id` int(10) unsigned NOT NULL auto_increment, `provider

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

一些使用Python编写获取手机App日志的操作 如何获取手机当前打开的App的包名 如何获取当前App进程的PID 如何查看当前App的日志 如何将日志保存到文件 如何关闭进程 如何不显示命令行窗口 1.如何获取手机当前打开的App的包名 可以直接在命令行中输入adb shell dumpsys window | findstr mCurrentFocus 以手机QQ为例,读取到的mCurrentFocus的信息为 mCurrentFocus=Window{cb7270e u0 com.ten

React Native之ViewPagerAndroid仿淘宝首页顶部分类布局效果实现

转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/51030410 大家好,趁着现在别人都去吃饭的时间,来给大家讲一讲React Native中Android部分的控件ViewPagerAndroid的讲解,这里特别提醒一下,我写的博客都是基于大家有一些React Native基础的前提下,因为关于React Native这一系列的博文我是最近开始更新,由于自身工作繁重(每天早上10点干到晚上10点,是不是很惨?),所以暂时还没

讲解如何在Unity的Inspector面板实现类似摄像机层次遮罩的多选效果

首先,我们现在的需求是这样的,我定义了一个脚本,里面有一个枚举,还有一个Public的枚举类型变量,现在我们就可以在Unity的工程里的Inspector面板中通过手动的选择来控制这个枚举变量到底选择什么了,就像我们Unity中的摄像机自带的那种可以选择遮罩层次的感觉,但是现在的问题是,我们只能选择一个,并不能多选,现在我们要解决的就是,给这个枚举变量写一段让它可以多选的代码. 效果图如下: 这里的变量名我改成了自定义的中文,其实在代码中大家可以根据自己的需求更改 和上一篇一样,我先说一下这个工

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

http://bbs.anzhuo.cn/thread-928131-1-1.html EditTextPreference点击后输入框显示隐藏内容,类似密码输入... [复制链接]     askilledhand ADD.幼儿园 UID 2186431 帖子 46 精华 0 积分 34 最后登录 2014-3-5 串个门 加好友 打招呼 发消息 电梯直达 1楼  发表于 2013-11-18 11:59:03 |只看该作者 |倒序浏览  一键分享 [新人报到]现在去发帖报道即可领取论坛金币哦

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

手机自带的显示基站命令(安卓手机定位,苹果手机基站定位) 分类: 通信和网络2012-02-07 17:48 1734人阅读 评论(0) 收藏 举报 手机htciphone中兴三星网络 安卓手机自带快捷指令显示当前的网络信息,不过手机厂商不同,命令也不一样.每次要用时总想不起来命令,记下备用.(1) HTC 安卓手机在拨号键盘输入 *#*#4636#*#* , 选择 “手机信息” (2)三星安卓手机 *#*#4636#*#* , 选择 “手机信息” (3)摩托罗拉安卓手机 *#*#4636#*#