react 原生实现头像滚动播放的示例


Posted in Javascript onApril 21, 2020

本文介绍了react 原生实现头像滚动播放的示例,分享给大家,具体如下:

react 原生实现头像滚动播放的示例

之前需要的是下面这个效果

react 原生实现头像滚动播放的示例

现在。。。

憋说话,先看看效果。

react 原生实现头像滚动播放的示例

感觉很简单呀,直接渲染,transform就可以了,嗯嗯,是的没错。

渲染出来,获取元素,然后添加css,美中不足衔接不是很顺畅,不过还是做出来了。

<div className="avatar-transform" ref={this.tmall}>
          {!!personAvatar.length && personAvatar.map((item, index) => {
            return <div className="avatar-wrap" key={index}>
              <div><img src={item.avatar} alt="" /></div>
              <div className="avatar-name">{item.nickname.substring(0, 2)}***已参与活动</div>
            </div>
          })}
        </div>
changeCss(){
    if(this.index === 31){
      this.tmall.current.style = `transform: translateY(${this.index * 4}rem);`
      this.getAvatar()//获取数据
      this.index = 0
      return
    }
    this.tmall.current.style = `transform: translateY(-${this.index * 4}rem);transition: all 1s ease;`
    ++this.index
    setTimeout(()=>{
      this.changeCss()
    },3000)
  }

但是问题还是来了

一次性返回几百条数据,什么鬼,难道还直接渲染吗,我的天,100多个,渲染出来,那酸爽,得了吧,全部渲染出来是不可能的了,这辈子都不可能全部渲染出来的了,看一下有没什么方法没有。

网上搜了一下,搜出来的是什么鬼,算了算了,还是得自己写

思路:想了一下,可不可以,在后面添加一个节点,然后删除最前面的节点

嗯?好像可以

还是原来的配方原来的味道

<div className="avatar-transform" ref={this.tmall}>
          {!!personAvatar.length && personAvatar.map((item, index) => {
            return <div className="avatar-wrap" key={index}>
              <div><img src={item.avatar} alt="" /></div>
              <div className="avatar-name">{item.nickname.substring(0, 2)}***已参与活动</div>
            </div>
          })}
        </div>
getAvatar(target = false) { //获取数据
    http.get('********').json(r => {
      if (r.error) {
        return Alert(r.msg);
      }
      //判断一下,不是第一次请求
      if (target) {
        this.listData = r.users
        this.changeCss()
        return
      }
      //装起来
      this.listData = r.users
      this.setState({
        personAvatar: this.listData.splice(0, 5) //先来5个
      })
      //最开始是在下面的transform: translateY(7rem),所以得上来
      this.tmall.current.style = `transform: translateY(0);transition: all 1s ease;`
      setTimeout(() => {
        this.changeCss()
      }, 3000)

    });
  }
.avatar-transform {

 transform: translateY(7rem);

}
changeCss() {    
   let data = this.listData.shift()
    if (!data) {
      this.getAvatar(1)
      return
    }
    let div = document.createElement('div')
    div.className = "avatar-wrap"
    div.innerHTML = `<div><img src='${data.avatar}' alt="" /></div> 
    <div class="avatar-name">${data.nickname.substring(0, 2)}***已参与活动</div>`
    this.tmall.current.style = `transform: translateY(-${4}rem);transition: all 1s ease;`
    this.tmall.current.appendChild(div) //添加节点
    setTimeout(() => {
      this.tmall.current.style = `transform: translateY(0);`
      this.tmall.current.removeChild(this.tmall.current.childNodes[0]) //删除第一个节点
    }, 1000)
    setTimeout(() => {
      this.changeCss()
    }, 3000)

  }

到此这篇关于react 原生实现头像滚动播放的示例的文章就介绍到这了,更多相关react 头像滚动播放内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
hover的用法及live的用法介绍(鼠标悬停效果)
Mar 29 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
Jun 16 Javascript
JavaScript数组对象赋值用法实例
Aug 04 Javascript
简单谈谈JavaScript的同步与异步
Dec 31 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
May 25 Javascript
vue中component组件的props使用详解
Sep 04 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
Sep 14 Javascript
Angularjs Promise实例详解
Mar 15 Javascript
JavaScript中var、let、const区别浅析
Jun 24 Javascript
RequireJS用法简单示例
Aug 20 Javascript
微信小程序云开发如何实现数据库自动备份实现
Aug 16 Javascript
js实现贪吃蛇小游戏
Oct 29 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 21 #Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
Apr 21 #Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
Apr 21 #Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 #Javascript
Vue的全局过滤器和私有过滤器的实现
Apr 20 #Javascript
深入浅析JavaScript中的in关键字和for-in循环
Apr 20 #Javascript
vue实现购物车功能(商品分类)
Apr 20 #Javascript
You might like
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
php在线代理转向代码
2012/05/05 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
Python单链表简单实现代码
2016/04/27 Python
Python中创建二维数组
2018/10/17 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
药店主任岗位责任制
2014/02/10 职场文书
国培远程培训感言
2014/03/08 职场文书
关于青春的演讲稿
2014/05/05 职场文书
门店业绩提升方案
2014/06/08 职场文书
职业规划实施方案
2014/06/10 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
解析Java异步之call future
2021/06/14 Java/Android
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS