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 相关文章推荐
详解jQuery插件开发中的extend方法
Nov 19 Javascript
jQuery中dequeue()方法用法实例
Dec 29 Javascript
Javascript访问器属性实例分析
Dec 30 Javascript
js实现不重复导入的方法
Mar 02 Javascript
JavaScript数组操作函数汇总
Aug 05 Javascript
JS取模、取商及取整运算方法示例
Oct 13 Javascript
JS实现的随机排序功能算法示例
Jun 09 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
Sep 26 Javascript
vuex如何重置所有state(可定制)
Jan 17 Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 Javascript
微信小程序 select 下拉框组件功能
Sep 09 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安全编程之加密功能
2006/10/09 PHP
linux下 C语言对 php 扩展
2008/12/14 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
秘书行业自我鉴定范文
2013/12/30 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
室内趣味活动方案
2014/08/24 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
人才市场接收函
2015/01/30 职场文书
实验心得体会范文
2016/01/25 职场文书
Python 发送SMTP邮件的简单教程
2021/06/24 Python