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 相关文章推荐
javascript使用eval或者new Function进行语法检查
Oct 16 Javascript
HTML Dom与Css控制方法
Oct 25 Javascript
BOM与DOM的区别分析
Oct 26 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
Jan 19 Javascript
js实现仿QQ秀换装效果的方法
Mar 04 Javascript
javascript基本数据类型及类型检测常用方法小结
Dec 14 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 Javascript
vue-cli项目代理proxyTable配置exclude的方法
Sep 20 Javascript
基于Vue插入视频的2种方法小结
Apr 02 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
第十四节 命名空间 [14]
2006/10/09 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
javascript基本语法分析说明
2008/06/15 Javascript
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
实时获取Python的print输出流方法
2019/01/07 Python
python实现名片管理器的示例代码
2019/12/17 Python
南威尔士家居商店:Leekes
2016/10/25 全球购物
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
德国综合购物网站:OTTO
2018/11/13 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
求职简历自荐信
2013/10/20 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
工地食品安全责任书
2015/05/09 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python