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 相关文章推荐
js 自定义的联动下拉框
Feb 07 Javascript
节点的插入之append()和appendTo()的用法介绍
Jan 13 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
Aug 12 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
May 04 Javascript
javascript表格的渲染组件
Jul 03 Javascript
IE下JS保存图片的简单实例
Jul 15 Javascript
自制微信公众号一键排版工具
Sep 22 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
Jun 07 Javascript
JS伪继承prototype实现方法示例
Jun 20 Javascript
浅谈一种让小程序支持JSX语法的新思路
Jun 16 Javascript
微信小程序3D轮播实现代码
Sep 19 Javascript
JS继承定义与使用方法简单示例
Feb 19 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
用PHP实现WEB动态网页静态
2006/10/09 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
学习ExtJS border布局
2009/10/08 Javascript
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
python实现图片插入文字
2019/11/26 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
体育教育专业自荐信范文
2013/12/20 职场文书
小学音乐教学反思
2014/02/05 职场文书
党校学习心得体会范文
2014/09/09 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
大学生军训感言
2015/08/01 职场文书
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python