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解决图片路径不存在执行替换路径
Feb 06 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
Sep 24 Javascript
js切换光标示例代码
Oct 10 Javascript
eclipse导入jquery包后报错的解决方法
Feb 17 Javascript
将json对象转换为字符串的方法
Feb 20 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
Apr 02 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
Oct 21 Javascript
详解Angular 4.x NgIf 的用法
May 22 Javascript
详解在Vue中如何使用axios跨域访问数据
Jul 07 Javascript
vuejs 制作背景淡入淡出切换动画的实例
Sep 01 Javascript
微信小程序云开发使用方法新手初体验
May 16 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和ACCESS写聊天室(十)
2006/10/09 PHP
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
php 判断数组是几维数组
2013/03/20 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
JavaScript事件列表解说
2006/12/22 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
python实现键盘控制鼠标移动
2020/11/27 Python
python中dict()的高级用法实现
2019/11/13 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
python设置表格边框的具体方法
2020/07/17 Python
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
校领导推荐信
2013/11/01 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
班级活动策划书
2014/02/06 职场文书
合作经营协议书范本
2014/04/17 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
怎样写离婚协议书
2015/01/26 职场文书
个人委托书范文
2015/01/28 职场文书
关于学习的决心书
2015/02/05 职场文书
用电申请报告范文
2015/05/18 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
Java使用JMeter进行高并发测试
2021/11/23 Java/Android