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 可拖动列表实现代码
Dec 13 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
May 25 Javascript
javascript模拟C#格式化字符串
Aug 26 Javascript
实用jquery操作表单元素的简单代码
Jul 04 Javascript
Vue异步组件使用详解
Apr 08 Javascript
js移动端图片压缩上传功能
Aug 18 Javascript
详解如何用模块化的方式写vuejs
Dec 16 Javascript
json数据传到前台并解析展示成列表的方法
Aug 06 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
微信小程序实现轮播图指示器
Jun 25 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
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
解析php中获取url与物理路径的总结
2013/06/21 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
Python 开发Activex组件方法
2009/11/08 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
python如何读写csv数据
2018/03/21 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
两年的个人工作自我评价
2014/01/10 职场文书
年度考核自我评价
2014/01/25 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
公司庆典欢迎词
2015/01/26 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
Python 实现定积分与二重定积分的操作
2021/05/26 Python
Pytest中skip skipif跳过用例详解
2021/06/30 Python
Apache POI的基本使用详解
2021/11/07 Servers
PYTHON 使用 Pandas 删除某列指定值所在的行
2022/04/28 Python