前言

最近在搞弹幕的问题,小程序上的和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. netcore程序部署 docker 异常 --生成图片二维码缺少libdl

    最近因业务需求需要在程序中实现二维码图片生成,于是就用到QRCoder开发库.最终在windows环境下部署运行没问题,但切换到docker(centos7.0)后发现是有问题的. 错误信息提示:Th ...

  2. SpringBoot自动化配置之四:@Conditional注解详解

    前言 之前在分析spring boot 源码时导出可见@ConditionalOnBean 之类的注解,那么它到底是如何使用的以及其工作流程如何,我们这里就围绕以下几点来分析: @Conditiona ...

  3. 为什么 ConcurrentHashMap 的读操作不需要加锁?

    现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了.最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默.所以忍不住分享一下给大家 ConcurrentH ...

  4. Roadmap-学习目标

    自学过一些HTML标签,学的不多也没经常用,但还是比较喜欢前端,希望可以深入学习有用的东西,最后弄一个自己看的过去的博客练练.手.

  5. 尝试自己搭一个简单的typescript运行环境

    开发typescript项目有一些现成的脚手架,比如:typescript-library-starter,它的配置齐全,更适合用在实际项目开发上.其实在学习阶段可以自己搭建一个简单的typescri ...

  6. 线性基求交(线段树)--牛客第四场(xor)

    题意: 给你n个基,q个询问,每个询问问你能不能 l~r 的所有基都能表示 x . 思路: 建一颗线性基的线段树,up就是求交的过程,按照线段树区间查询的方法进行check就可以了. #define ...

  7. Kinect开发-开发环境搭建

    0.安装Visual Studio.版本无所谓,但Kinect SDK for Windows只支持C/C#.接下来的开发语言将使用C#,用户界面框架使用WPF. 安装Kinect SDK for W ...

  8. Yii2.0中使用Union查询,并使用join,支持分页

    $query1 = Class1::find()->where($where); $query2 = Class1::find()->alias('a')->join('left j ...

  9. PHP 时间转几分几秒

    public static function timetodate($c){ if($c < 86400){ $time = explode(' ',gmstrftime('%H %M %S', ...

  10. MySQL中文正常而mybatis查询出现乱码的解决方案

    解决方案是在spring-mvc.xml文件中,加入 <mvc:annotation-driven> <mvc:message-converters> <bean cla ...