前言

最近在搞弹幕的问题,小程序上的和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. react中递归生成列表

    import React, {Component} from 'react'; import { Menu, Icon } from 'antd'; import {Link} from 'react ...

  2. [转帖]Java 8新特性探究(八)精简的JRE详解

    Java 8新特性探究(八)精简的JRE详解 https://my.oschina.net/benhaile/blog/211804 精简版的api   撸了今年阿里.网易和美团的面试,我有一个重要发 ...

  3. PHP中的接口

    对象接口 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容. 接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方 ...

  4. 【GDOI】2018题目及题解(未写完)

    我的游记:https://www.cnblogs.com/huangzihaoal/p/11154228.html DAY1 题目 T1 农场 [题目描述] [输入] 第一行,一个整数n. 第二行,n ...

  5. AppCan模拟器调试

    来源: 1, 页面CSS调试 2, JS调试 3, 插件请打包后手机调试 4, 打开另一个页面示例: appcan.button("#myBtn", "ani-uct&q ...

  6. 通过设置访问密码查看Tomcat服务器运行状态

    安装tomcat 设置访问manager用户名,密码 vim /usr/local/tomcat9/conf/tomcat-users.xml # 设置访问manager用户名,密码 # 在倒数第二行 ...

  7. CALL apoc.cypher.doIt创建动态节点的时候怎么指定多个标签?

    下面的创建节点实例,请教一下CALL apoc.cypher.doIt如何创建多个标签?现在的方式是只能指定一个标签! UNWIND [{name:"sdasdsad234fdgsasdfa ...

  8. 【Java】Java程序报错:EXCEPTION_ACCESS_VIOLATION (0xc0000005)

    运行Java程序的时候,报错:EXCEPTION_ACCESS_VIOLATION (0xc0000005): 根据原网页的说明: EXCEPTION_ACCESS_VIOLATION In rare ...

  9. EBS描述性弹性域及键弹性域总结

    一.描述性弹性域 前言介绍: 描述性弹性域的实质就是系统预留自定字段,系统可以使用说明性弹性域来获取业务所特有的重要附加信息.系统可能自定义说明性弹性域,以显示存储更多信息的字段,提供一套完整的“自定 ...

  10. 关于NGINX在wnidows下面和linux下面的多站点的反向代理的配置

    原创文章,转载注明出处 nginx作为一款优秀的反向代理软件,以其好用,易于搭建负载均衡的网站集群而著称,这里分别记录一下工作中用到nginx作为负载以及多站点发布的时候一些配置和注意事项 一  ng ...