经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » HTML5 » 查看文章
HTML5实现移动端弹幕动画效果
来源:jb51  时间:2019/8/2 8:32:13  对本文有异议

思路

1.把单个内容编辑好,计算自身宽度,确定初始位置
 

2.移动的距离是屏幕宽度

3.js动态的添加css动画函数,将高度、动画移动时间、动画延迟时间都用随机数控制

代码:

html骨架结构

(以三个为例,如果觉得界面太长不友好,也可以js动态的生成)

  1. <div class="cute-barrage">
  2. <div class="barrage-div">
  3. <img src="http://kw1-1253445850.file.myqcloud.com/static/image/stimg_7656dc02eb1cd13adbacbdd2695dc3a8.jpg"/>
  4. <span>一月一度的花呗还款期到啦<i>哈哈哈</i></span>
  5. </div>
  6. <div class="barrage-div">
  7. <img src="http://kw1-1253445850.file.myqcloud.com/static/image/stimg_632fecdcb52417cb8ab89fa283e07281.jpg"/>
  8. <span>坐等发工资<i>呵呵呵</i></span>
  9. </div>
  10. <div class="barrage-div">
  11. <img src="../../static/cutePresent/resource/avatar.png"/>
  12. <span>变有钱变有钱<i>耶耶耶</i></span>
  13. </div>
  14. </div>
  15.  

css样式

.cute-barrage是确定展示范围和位置,宽度为100%,高度自定,横向超出部分隐藏
.barrage-div 内容部分,长度由内容决定,确定相对父级的位置

  1. html,body{
  2. width:100%;
  3. }
  4. .cute-barrage{
  5. width: 100%;
  6. height: 4rem; /*确定弹幕长度*/
  7. position: absolute;
  8. top: 1.5rem; /*确定弹幕高度*/
  9. left: 0;
  10. overflow-x: hidden; /*横向超出部分隐藏*/
  11. .barrage-div{
  12. position: absolute;
  13. top: 0;
  14. right: -100%; /*保证一开始在界面外侧,从右向左就是right,从左向右就是left*/
  15. height: 0.6rem;
  16. background-color: rgba(255, 255, 255, 0.9);
  17. border-radius: 2rem;
  18. white-space: nowrap; /*确保内容在一行显示,不然移动到最后会折行*/
  19. img{
  20. width: 0.5rem;
  21. height: 0.5rem;
  22. vertical-align: middle; //内联块元素,居中对齐
  23. padding-left: 0.05rem;
  24. border-radius: 50%;
  25. }
  26. span{
  27. font-size: 14px;
  28. padding: 0 0.1rem;
  29. line-height: 0.6rem; //内联块元素,居中对齐四个缺一不可
  30. height: 0.6rem; //内联块元素,居中对齐四个缺一不可
  31. display: inline-block; //内联块元素,居中对齐四个缺一不可
  32. vertical-align: middle; //内联块元素,居中对齐四个缺一不可
  33. i{
  34. color: #fe5453;
  35. font-weight: 700;
  36. }
  37. }
  38. }
  39. }

js动态动画实现(zepto.js)

  1. //弹幕
  2. var winWidth = $(window).width(); //获取屏幕宽度
  3. $(".barrage-div").each(function(index,value){ //遍历每条弹幕
  4. var width = $(value).width(); //获取当前弹幕的宽度
  5. var topRandom = Math.floor(Math.random() * 3) + 'rem'; //获取0,1,2的随机数 可根据情况改变
  6. $(value).css({"right":-width,"top":topRandom}); //将弹幕移动到屏幕外面,正好超出的位置
  7. //拼写动画帧函数,记得每个ani要进行区分,宽度从自己的负宽度移动一整个屏幕的距离
  8. var keyframes = `\
  9. @keyframes ani${index}{
  10. form{
  11. right:${-width}px;
  12. }
  13. to{
  14. right:${winWidth}px;
  15. }
  16. }\
  17. @-webkit-keyframes ani${index}{
  18. form{
  19. right:${-width}px;
  20. }
  21. to{
  22. right:${winWidth}px;
  23. }
  24. }`;
  25. //添加到页面的head标签里面
  26. $("<style>").attr("type","text/css").html(keyframes).appendTo($("head"));
  27. //定义动画速度列表
  28. var aniList = [3,5,7,9,11];
  29. //取数组的随机数,0,1,2,3,4
  30. var aniTime =Math.floor(Math.random() * 5);
  31. //给当全前弹幕添加animation的css
  32. //延迟的时间用每个的*1.5倍,这个可变
  33. $(value).css({"animation":`ani${index} ${aniList[aniTime]}s linear ${index * 1.5}s`,"-webkit-animation":`ani${index} ${aniList[aniTime]}s linear ${index * 1.5}s`});
  34. })

总结

以上所述是小编给大家介绍的HTML5实现移动端弹幕动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号