微信小程序实现弹幕墙(祝福墙)


Posted in Javascript onNovember 18, 2020

本文实例为大家分享了微信小程序实现弹幕墙的具体代码,供大家参考,具体内容如下

为了解决左右弹幕重叠问题,也是找了网上挺多案例,最后都不行,最后利用四个数组和css3动画animation来解决
这是个祝福墙,用户发送弹幕到后台审核,审核通过显示在前端

微信小程序实现弹幕墙(祝福墙)

<!-- 弹幕墙 -->
<view class="barrage" wx:if="{{IsPush}}">
 <view class="barrage-a">
 <view class="barrage-b"><image src="../../images/img/a-13.png"></image></view>
 <view class="barrage-c">
 <view class="video_container">
 <view class='danmu'>
 <view class="danmu_wrapper">
 <view class="li0" wx:if="{{danmuFake0.cnt}}" style="width:{{danmuFake0.max}}rpx; animation: dmAnimation {{danmuFake0.max / 150}}s linear 1s infinite backwards;">
 <view wx:for="{{danmuFake0.cnt}}" wx:key="danmuFake0cntindex" data-idx="{{item.idx}}" data-width="{{item.width}}" class='danmu-li rowAndColCenter' style="left:{{item.left}}rpx">
 <text>{{item.title}}</text>
 </view>
 </view>
 <view class="li1" wx:if="{{danmuFake1.cnt}}" style="width:{{danmuFake1.max}}rpx; animation: dmAnimation {{danmuFake1.max / 150}}s linear 3s infinite backwards;">
 <view wx:for="{{danmuFake1.cnt}}" wx:key="danmuFake1cnt" data-idx="{{item.idx}}" data-width="{{item.width}}" class='danmu-li rowAndColCenter' style="left:{{item.left}}rpx">
 <text>{{item.title}}</text>
 </view>
 </view>
 <view class="li2" wx:if="{{danmuFake2.cnt}}" style="width:{{danmuFake2.max}}rpx; animation: dmAnimation {{danmuFake2.max / 150}}s linear 5s infinite backwards;">
 <view wx:for="{{danmuFake2.cnt}}" wx:key="danmuFake2cnt" data-idx="{{item.idx}}" data-width="{{item.width}}" class='danmu-li rowAndColCenter' style="left:{{item.left}}rpx">
 <text>{{item.title}}</text>
 </view>
 </view>
 <view class="li3" wx:if="{{danmuFake3.cnt}}" style="width:{{danmuFake3.max}}rpx; animation: dmAnimation {{danmuFake3.max / 150}}s linear 7s infinite backwards;">
 <view wx:for="{{danmuFake3.cnt}}" wx:key="danmuFake3cnt" data-idx="{{item.idx}}" data-width="{{item.width}}" class='danmu-li rowAndColCenter' style="left:{{item.left}}rpx">
 <text>{{item.title}}</text>
 </view>
 </view>

 </view>
 </view>
 </view>
 <form>
 <view class="danmuGrop">
 <input type="text" name="Name" bindinput="getInput" class="danmuinput" placeholder='请输入你的祝福语' placeholder-style="color:#b6b2a6;opacity:.55;"></input>
 <button style="width:108rpx;" class="sendDanmu" bindtap='sendDanmu' form-type='reset'>
 <image src="/images/img/a-3.png"></image>
 <text>发送</text>
 </button>
 </view>
 </form>
 </view>
 </view>
</view>

js:

var danmu0=[];
var danmu1=[];
var danmu2=[];
var danmu3=[];
 for (var i = 0; i < res.data.Entity.length; i++) {
 const num = Math.floor(Math.random() * 4);
 if(num == 0){
 var left = 0;
 if(danmu0.length){left = danmu0[danmu0.length-1].left + danmu0[danmu0.length-1].width + 80;}
 left = left < 0 ? 0 : left;
 danmu0.push({
 title: res.data.Entity[i].NewsContent,
 left: left,
 width:res.data.Entity[i].NewsContent.length*24,
 idx: num
 });
 }
 if(num == 1){
 var left = 0;
 if(danmu1.length){left = danmu1[danmu1.length-1].left + danmu1[danmu1.length-1].width + 80;}
 left = left < 0 ? 0 : left;
 danmu1.push({
 title: res.data.Entity[i].NewsContent,
 width:res.data.Entity[i].NewsContent.length*24,
 left: left,
 idx: num
 });
 }
 if(num == 2){
 var left = 0;
 if(danmu2.length){left = danmu2[danmu2.length-1].left + danmu2[danmu2.length-1].width + 80;}
 left = left < 0 ? 0 : left;
 danmu2.push({
 title: res.data.Entity[i].NewsContent,
 width:res.data.Entity[i].NewsContent.length*24,
 left: left,
 idx: num
 });
 }
 if(num == 3){
 var left = 0;
 if(danmu3.length){left = danmu3[danmu3.length-1].left + danmu3[danmu3.length-1].width + 80;}
 left = left < 0 ? 0 : left;
 danmu3.push({
 title: res.data.Entity[i].NewsContent,
 width:res.data.Entity[i].NewsContent.length*24,
 left: left,
 idx: num
 });
 }
 }
 that.setData({
 danmuFake0: {
 max : danmu0[danmu0.length-1].left + danmu0[danmu0.length-1].width + 80,
 cnt:danmu0
 },
 danmuFake1: {
 max : danmu1[danmu1.length-1].left + danmu1[danmu1.length-1].width + 80,
 cnt:danmu1
 },
 danmuFake2: {
 max : danmu2[danmu2.length-1].left + danmu2[danmu2.length-1].width + 80,
 cnt:danmu2
 },
 danmuFake3: {
 max : danmu3[danmu3.length-1].left + danmu3[danmu3.length-1].width + 80,
 cnt:danmu3
 }
 })

 var danmuMaxWid = Math.max(that.data.danmuFake0.max,that.data.danmuFake1.max,that.data.danmuFake2.max,that.data.danmuFake3.max);
 that.setData({
 danmuMaxWid:danmuMaxWid
})

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 页面传参数时 参数值含特殊字符的问题
Dec 13 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
Oct 29 Javascript
javascript将url中的参数加密解密代码
Nov 17 Javascript
使用window.prompt()实现弹出用户输入的对话框
Apr 13 Javascript
jQuery实现定时读取分析xml文件的方法
Jul 16 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
JS 实现计算器详解及实例代码(一)
Jan 08 Javascript
js实现百度搜索提示框
Feb 05 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
Vue中this.$router.push参数获取方法
Feb 27 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
Apr 25 Javascript
vue中监听返回键问题
Aug 28 Javascript
一篇超完整的Vue新手入门指导教程
Nov 18 #Vue.js
基于Cesium绘制抛物弧线
Nov 18 #Javascript
vue3.0实现点击切换验证码(组件)及校验
Nov 18 #Vue.js
js实现简易计算器小功能
Nov 18 #Javascript
微信小程序实现购物车功能
Nov 18 #Javascript
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 #Vue.js
微信小程序实现日历小功能
Nov 18 #Javascript
You might like
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
prototype1.4中文手册
2006/09/22 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
javascript的内存管理详解
2013/08/07 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
python 网络编程常用代码段
2016/08/28 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Django工程的分层结构详解
2019/07/18 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
Python连接mysql方法及常用参数
2020/09/01 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
护士试用期自我鉴定
2014/02/08 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
家庭经济困难证明
2015/06/23 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
公司食堂管理制度
2015/08/05 职场文书
浅谈Web Storage API的使用
2021/06/23 Javascript