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


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 相关文章推荐
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 Javascript
js实现收缩菜单效果实例代码
Oct 30 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
Aug 15 Javascript
JavaScript分析、压缩工具JavaScript Analyser
Dec 31 Javascript
简介JavaScript中的italics()方法的使用
Jun 08 Javascript
JS制作适用于手机和电脑的通知信息效果
Oct 28 Javascript
微信小程序 动态绑定数据及动态事件处理
Mar 14 Javascript
js实现添加删除表格(两种方法)
Apr 27 Javascript
基于React Native 0.52实现轮播图效果
Aug 25 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
node express使用HTML模板的方法示例
Aug 22 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
Jun 17 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
利用PHP实现短域名互转
2013/07/05 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
php封装的验证码类分享
2017/02/26 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
php实现session共享的实例方法
2019/09/19 PHP
用 JSON 处理缓存
2007/04/27 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
vue中使用echarts的示例
2021/01/03 Vue.js
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
幼儿园教师工作制度
2014/01/22 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle