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的监控数据是否发生改变
Apr 11 Javascript
文本域中换行符的替换示例
Mar 04 Javascript
jquery html5 视频播放控制代码
Nov 06 Javascript
BootStrap TreeView使用实例详解
Nov 01 Javascript
解决LayUI表单获取不到data的问题
Aug 20 Javascript
详解vantUI框架在vue项目中的应用踩坑
Dec 06 Javascript
详解在create-react-app使用less与antd按需加载
Dec 06 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
Sep 11 Javascript
vue element自定义表单验证请求后端接口验证
Dec 11 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
Dec 08 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
解决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
substr()函数中文版
2006/10/09 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
js实现日期级联效果
2014/01/23 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
python中sys.argv参数用法实例分析
2015/05/20 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
Python函数中不定长参数的写法
2019/02/13 Python
Python 处理文件的几种方式
2019/08/23 Python
python SocketServer源码深入解读
2019/09/17 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
公司门卫管理制度
2014/02/01 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
网络技术专业求职信
2014/05/02 职场文书
工程承诺书怎么写
2014/05/24 职场文书
解除租房协议书
2014/12/03 职场文书
大雁塔导游词
2015/02/04 职场文书