前言

最近在搞弹幕的问题,小程序上的和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. 【HANA系列】SAP HANA SQL获取字符串长度

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取字符 ...

  2. 配置传统vlan间路由

    S1#SH RUN spanning-tree mode pvst ! interface FastEthernet0/1 switchport access vlan 10 switchport m ...

  3. Eclipse新建新的工作空间,将原有的配置全部或部分复制

    1.部分复制 File->Switch workspace->Other...,按下图选择 只复制简单的配置,如cvs之类的信息是不会复制的. 2.全部复制(build path) 在1. ...

  4. linux中su和sudo区别

    su切换用户,切换成root用户,要输入root用户的密码 su - 用户名 sudo  涉及到 /etc/sudoers文件 ,内容如下: # User privilege specificatio ...

  5. Tableau常用函数、功能

    Tableau常用函数 创建计算字段: Tableau常用功能

  6. [Python3] 034 函数式编程 匿名函数

    目录 函数式编程 Functional Programming 1. 简介 2. 函数 3. 匿名函数 3.1 lambda 表达式也称"匿名函数" 3.2 lambda 表达式的 ...

  7. Java基础(八)

    IO流 概述与分类 Java中的IO流技术主要用于传输数据.典型的应用场景有:读写本地文件,上传下载文件等.按照数据传输的方向可以分为两种: l  输入流(Input):既让数据进入应用程序中. l  ...

  8. 【模板】SPFA(不完全详解)

    一种最短路求法(个人觉得比DIJKSTRA好用) 用于有向图. 大概思路:从根节点开始,枚举每一个点,同时更新他们所联通的点的最短路径,如果路径被更新,则把这个点入队,一直重复这个操作直到队伍为空为止 ...

  9. jmeter 获取图形验证码接口测试

    今天开发提测了一个图形验证码的接口,以前没有测过这个,上来有点懵..... 记录一下. 使用jmeter配置好接口和参数,运行后查看结果树,显示都是乱码 解决方法: 添加一个后置处理器--beansh ...

  10. python网络爬虫(6)爬取数据静态

    爬取静态数据并存储json import requests import chardet from bs4 import BeautifulSoup import json user_agent='M ...