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调用后台servlet方法实例
Jun 09 Javascript
jquery win 7透明弹出层效果的简单代码
Aug 06 Javascript
JS滚轮事件onmousewheel使用介绍
Nov 01 Javascript
jQuery判断元素是否存在的可靠方法
May 06 Javascript
每天一篇javascript学习小结(String对象)
Nov 18 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
Jun 07 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
Aug 05 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
Javascript动画效果(1)
Oct 11 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
Dec 27 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 Javascript
实例讲解JavaScript 计时事件
Jul 04 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
桌面中心(四)数据显示
2006/10/09 PHP
Smarty Foreach 使用说明
2010/03/23 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
详解【python】str与json类型转换
2019/04/29 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
小学教师岗位职责
2013/11/25 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
学校班班通实施方案
2014/06/11 职场文书
教师工作表现评语
2014/12/31 职场文书