实例详解CSS3 实现弹幕

项目需要实现弹幕,网上参考了各种方法,最后觉得transform+transition实现的效果在移动设备上性能最好,在iphone6和红米4上测试,看不到卡顿的感觉。用jquery的animate动画在移动设备上有明显的卡顿。本文主要介绍了css3 实现弹幕的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。

1.首先创建弹幕区域

 >

登录后复制

2.css

.webPage .barrage{width:100%;height:22%;position: absolute; bottom: 50px; background-color: transparent;pointer-events: none;}.webPage .barrage .mask{width:100%;height:100%;background:transparent;z-index:100;}

登录后复制

注:以上html,css根据自己需求来即可

3.js

立即学习“前端免费学习笔记(深入)”;

$scope.data = {comment:''};$scope.danmuCount = 5; //最大弹幕行数$scope.danmus = ['1545466666还是','9777777','哈哈哈哈哈','对企业读完后环球网好齐齐哈','42115我我我5','556噢噢噢噢45','54哦','54545646','666但近段时间66','56565','454465465565', '1545466666还是','9777777','哈哈哈哈哈','对企业读完后环球网好齐齐哈','42115我我我5','556噢噢噢噢45','54哦','54545646','666但近段时间66','56565','454465465565']; //弹幕数据源//创建弹幕区域$scope.createDanmuContent = function () {var height = 1 / $scope.danmuCount * 100 + '%';for (var i = 0; i ';$('.mask').append(item);} $scope.createDanmu ();};//开始弹幕绘制$scope.createDanmu = function () {var maxCount = 0;if ($scope.danmus.length > $scope.danmuCount) { maxCount = $scope.danmuCount; } else {maxCount = $scope.danmus.length;}var _left = window.screen.width;for (var i = 0; i "+$scope.danmus[i]+"");$(".mask p").each(function () {//检测该区域是否绘制了弹幕if ($scope.checkDanmu($(this))) {$(this).append(_lable);$scope.moveArray(i); i--;return false;}});}$scope.init_barrage();};//将数组第一位放到最后一位,(因弹幕池内容太少,所以没删除已显示的弹幕)$scope.moveArray = function (i) { var temp = $scope.danmus[i];$scope.danmus.splice(i,1);$scope.danmus.push(temp);}//判断content区域有没有弹幕$scope.checkDanmu = function (el) {return el.find('p').length == 0 ? true : false;};//获取随机颜色$scope.getRandomColor = function () {return '#' + (function(h){return new Array(7 - h.length).join("0") + h})((Math.random() * 0x1000000  0) {el.css({'transform':'translateX(0px)','transition':'all 0ms linear','-webkit-transform':'translateX(0px)','-webkit-transition':'all 0ms linear','-moz-transform':'translateX(0px)','-moz-transition':'all 0ms linear','-ms-transform':'translateX(0px)','-ms-transition':'all 0ms linear'});$scope.resetAnimate(el);} else {el.remove();}},time);};//更换弹幕内容,重新开始弹幕动画$scope.resetAnimate = function (el) {el.html($scope.danmus[0]);$scope.moveArray(0);var _moveLeft = el.width() + screen.width;var time = 100000 / el.width() + 5000;$scope.addCssAnimate(el,_moveLeft,time);};//评论,添加弹幕$scope.addDanmu = function () {var text = $scope.data.comment;if(text == ""){return;}$scope.danmus.unshift(text);};$scope.createDanmuContent();

登录后复制

至此,功能基本实现了。要关闭弹幕只需移除弹幕的区域,文中就没有写了。

逻辑:首先根据$scope.danmuCount来创建弹幕的行数,然后在每行里面添加弹幕,并添加相应的动画。当一个动画执行完毕后,将弹幕移回原处,更换弹幕内容,重新执行动画,这样避免了弹幕重叠。每条弹幕动画执行时间是根据弹幕长度决定的。

个人经验,希望大家指出不足。上述代码使用的angularjs,但逻辑都是一样

相关推荐:

HTML5文字弹幕效果

HTML5文字弹幕效果

HTML5文字弹幕效果

以上就是实例详解CSS3 实现弹幕的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2901239.html

(0)
上一篇 2025年3月11日 00:08:21
下一篇 2025年2月25日 22:10:55

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • CSS3代替JS实现交互的方法

    本文主要介绍了使用css3来代替js实现交互,从css3的动画和js动画对比角度来看两者,会更清晰;而且随着前端框架的使用,页面动画会越来越多的应用css3。具体示例代码大家参考下本文吧,希望能帮助到大家。 【CSS3和JS】 对于CSS了…

    2025年3月11日
    000
  • 详解CSS优先级计算的规则

    最近在学习css优先级计算的规则这个地方知识点挺多的,而且很重要,本文主要介绍了css优先级计算的规则,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 CSS的权重 一、CSS的引入方式   …

    编程技术 2025年3月11日
    200
  • css3实现圆形进度条的方法

    在开发微信小程序的时候,遇到圆形进度条的需求。本文主要介绍了使用 css3 实现圆形进度条的示例,这里整理了详细的代码,非常具有实用价值,需要的朋友可以参考下,希望能帮助到大家。 使用canvas绘图比较麻烦: 1、为了实现在不同屏幕上面的…

    2025年3月11日
    200
  • 详解CSS3实现无限循环的无缝滚动

    有时候在页面的某个模块中,需要无限循环的滚动一些消息。那么如果我们用js实现无缝衔接滚动的思路是什么呢(比如我们这个模块是向上滚动的)?本文主要介绍了用css3实现无限循环的无缝滚动的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一…

    2025年3月11日
    200
  • CSS如何将网站网页变灰色

    本文主要给大家介绍了关于利用CSS将网站网页变灰色的相关资料,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧,希望能帮助到大家。 想要实现上图灰色效果,方法如下: 这段CSS代码可以变网页…

    2025年3月11日
    200
  • css3设置没有上下边的列表间隔线方法实例

    本文主要给大家介绍了利用css3如何设置没有上下边的列表间隔线,文中分享了两种解决方法,分别是利用通用兄弟选择器( ~ )和伪类选择器( :first-of-type / :last-of-type )来实现的,给出了详细的示例代码供大家参…

    2025年3月11日
    200
  • css3画同心圆示例代码

    本文主要给大家介绍了利用css3如何画个同心圆的相关资料,文中给出了详细的css3示例代码,并对代码进行了详细的解析方法大家理解和学习css3画同心圆,对大家具有一定的参考学习价值,希望能帮助到大家。 基本思路 首先你得画三个圆吧,那三个圆…

    2025年3月11日
    200
  • 详解CSS和HTML自定义checkbox效果

    checkbox应该是一个比较常用的html功能了,不过浏览器自带的checkbox往往样式不怎么好看,而且不同浏览器效果也不一样。出于美化和统一视觉效果的需求,checkbox的自定义就被提出来了。本文主要给大家分享css+html自定义…

    编程技术 2025年3月11日
    200
  • 详解CSS3的filter滤镜属性

    最近发现了一个非常强大的css3属性,就是filter(滤镜)属性,喜欢p图的朋友看名字都应该知道这是什么神器了吧。当然,这个属性的效果肯定不能跟ps相比,但是利用的好的话可以在节约很多空间下,把一张图做成两张图的效果。本文主要介绍了详解c…

    2025年3月11日 编程技术
    200
  • CSS中margin的用法和常见问题的分析

    关于margin我们是在熟悉不过的了,本文主要给大家介绍了css中margin的用法和常见问题的分析,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。 一、简介 margin我们一般习惯的叫它外边距,分别可以…

    2025年3月11日
    200

发表回复

登录后才能评论