前言

最近在搞弹幕的问题,小程序上的和vue上的,不想使用插件,于是自己摸索了一下,其实包括 2中弹幕形式 有序和无序的

直接上代码吧

<!-- 弹幕 -->
<template v-if=" barrageData.newsRocket.length > 0 ">
<!-- 'animation-duration':6+'s','animation-delay': item.delay+'s' -->
<div class="rocket barrage-wrapper" v-show=" barrageData.isBarrage ">
<div
class="barrage-context barrageTop"
:style="{top:0.8+'rem', 'animation-duration': barrageData.barrageTop.length > 1 ? barrageData.barrageTop.length * 4 +'s':'4s',
width:barrageData.barrageTop.length > 1?'':'120%'}"
>
<div class="display-list" v-for="(item,index) in barrageData.barrageTop" :key="'br'+index">
<div>
<img class="reImg" :src="item.avatar">
</div>
<div class="barrage-text" v-html="item.desc"></div>
</div>
</div>
</div>
<div class="rocket barrage-wrapper" v-show="barrageData.isBarrage">
<div
class="barrage-context barrageBottom"
:style="{top:1.8+'rem', 'animation-duration': barrageData.barrageBottom.length > 1? barrageData.barrageTop.length*5+'s':'4s',
width:barrageData.barrageBottom.length > 1?'':'120%'}"
>
<div class="display-list" v-for="(item,index) in barrageData.barrageBottom" :key="'br'+index">
<div>
<img class="reImg" :src="item.avatar">
</div>
<div class="barrage-text" v-html="item.desc"></div>
</div>
</div>
</div>
</template> <template v-else>
<div class="no-barrage" v-show=" activityData.register ">{{ barrageData.friendsDesc }}</div>
</template>

css

 // 弹幕
.barrage-wrapper {
position: fixed;
height: 0.7rem;
width: 7.5rem;
white-space: nowrap;
text-overflow: clip;
.barrage-context {
display: flex;
justify-content: space-around;
// width: 100%;
height: 0.7rem;
left: 100%;
visibility: hidden;
// overflow: hidden;
position: absolute;
}
.display-list {
display: flex;
justify-content: space-around;
align-items: center;
height: 0.7rem;
// position: absolute;
// left: 0%;
// visibility: hidden;
color: #fff;
margin-right: 1.1rem;
}
img {
width: 0.7rem;
height: 0.7rem;
border-radius: 50%;
background: #141540;
border: 0.04rem solid rgba(255, 255, 255, 0.7);
position: relative;
}
.barrage-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
background: rgba(0, 0, 0, 0.6);
white-space: nowrap;
margin: 0 -0.5rem;
height: 0.64rem;
line-height: 0.64rem;
padding: 0 0.7rem;
font-size: 0.24rem;
border-top-right-radius: 0.45rem;
border-bottom-right-radius: 0.45rem;
}
}

动画化的css

js 来判断他是 一条代码还是多条  代码来判断他的宽度是

再根据 css 来根据

@keyframes barrage {
from {
//left: 100%;
visibility: visible;
transform: translateX(0);
}
100% {
//left: 0%;
visibility: hidden;
transform: translateX(-180%);
}
} @keyframes barrageBottom {
from {
visibility: visible;
transform: translateX(0);
}
100% {
visibility: hidden;
transform: translateX(-180%);
}
}
visibility: hidden; 这个字段来判读弹幕在滚动到另一端的地方,消失,不至于弹幕卡主住那边
用 left 的话就是判断她是无序的代码, 下一条会比上一条快
用 transform: translateX(0); 就是有序代码 ,不会跑到前面
 
 
这样弹幕就完成了
 

vue 中 弹幕的播放的更多相关文章

  1. vue中解决chrome浏览器自动播放音频 和MP3语音打包到线上

    一.vue中解决chrome浏览器自动播放音频 需求 有新订单的时候,页面自动语音提示和弹出提示框: 问题 chrome浏览器在18年4月起,就在桌面浏览器全面禁止了音视频的自动播放功能.严格地来说, ...

  2. vue中通过hls.js播放m3u8格式的视频

    近期做了一个功能,是接入一个海康的摄像头的监控视频,怎么获取m3u8的视频这里就不在叙述了,只说一下怎么将m3u8格式的视频成功播放 一.m3u8和HLS介绍 1.M3U8文件是指UTF-8编码格式的 ...

  3. Vue实现mp3音乐播放及动态进度条

    今天碰到一个Vue点击mp3播放及进度条动态走动的小功能,记录一下: 首先是通过HTML5 audio标签引入音频: <template> <div class="x-fo ...

  4. vue中使用的一些问题(IE不兼容,打包样式不生效)

    通过脚手架快速创建的项目,使用了swiper组件,项目中使用了es6语法,使用了babel-polyfill转化依旧不行,仔细排查项目中的使用组件,最后找到问题所在 swiper4.5.0版本太高,不 ...

  5. VUE中常用的十大过滤器

    在vue的学习过程中,我发现过滤器是一个很好用的工具,过滤器(Filters)来渲染数据是一种很有趣的方式.过滤器不能替代Vue中的methods.computed或者watch,不改变真正的data ...

  6. Vue中如何插入m3u8格式视频,3分钟学会!

    ​        大家都知道video只支持ogg.webm.MP4格式,但是要是m3u8格式的视频怎么办?最近遇到这个问题在网上找了好多办法都不行,最后找到video.js后才完美解决,所以决定写一 ...

  7. 纯css3配合vue实现微信语音播放效果

    前言 每次写点东西都扯两句-0-,这几天一半精力放在移动端,一半维护之前的项目.书也少看了,不过还好依旧保持一颗学习的心.对于css3我是之前有专门整理过的,因此对于原理之前也算了解.今天是项目中遇到 ...

  8. vue中的ref属性

    1.什么是ref? ref是用于快速定位到dom结构,vue中一般不去操作dom结构,他是数据驱动的.jQuery会疯狂操作DOM {{msg}} mounted(){ let h = this.$r ...

  9. vue中如何不通过路由直接获取url中的参数

    前言:为什么要不通过路由直接获取url中的参数? vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的. 相对来说,在某些情况下直接 ...

随机推荐

  1. idea修改java编译版本

    file--Settings project strustructure project strustructure

  2. 英特尔® 图形性能分析器 2019 R1 版本

    了解并下载全新英特尔® 图形性能分析器 2019 R1 版本.新版本新增了 DX11 和 Vulkan 多帧流捕获模式,可以在“帧和图形跟踪分析器”中分析 Vulkan 应用.此外,帧分析器还添加了 ...

  3. MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列

    查看表的字段信息:desc 表名; 查看表的所有信息:show create table 表名; 添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) ...

  4. 小菜鸟之JAVA输入输出

    Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观 ...

  5. mapreduce运行的bug收录

    在8088端口可以看到日志文件(主要看error),操作如下: 1.window jdk版本最好和linux jdk 版本一致,不然容易出现莫名奇妙的bug 之前出现一个bug: Unsupporte ...

  6. Spring(十一)-- Spring代理生成器

    Spring代理生成器 1.创建需要的dao接口 2.创建需要的daoImpl实现类 3.创建前置增强类 4.创建spring.xml文件 <!-- 这个案例 需要解决的问题: 一个代理工厂 配 ...

  7. 2-SAT问题介绍求解 + 模板题P4782

    (点击此处查看原题) 什么是2-SAT问题 sat 即 Satisfiability,意思为可满足,那么2-SAT表示一些布尔变量只能取true或者false,而某两个变量之间的值存在一定的关系(如: ...

  8. 使用history.js解决浏览器对history使用的兼容问题

    history.js即可以解决禁止浏览器回退的浏览器兼容问题,也能解决直接修改浏览器当前标签页url的浏览器兼容问题. 解决禁止浏览器回退: <script src="../../js ...

  9. 小白基础Python重要的字符串详解String的内置方法

    String的内置方法: st='hello world  {name} is {age}'  {}  特殊内容需要识别format print(st.count('1')) 统计元素个数 print ...

  10. JAVA基础:Java中equals和==的区别

    java中的数据类型,可分为两类:  1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean    他们之间的比较,应用双等号( ...