纯CSS实现弹幕效果
纯CSS实现弹幕效果
动画相关的属性和方法已经本部分的开头简单提过了,我们来看一下本次要实现的效果——弹幕~
当你在阅读、看视频的时候经常会遇见一段文件或者一张表情从页面划过,要实现一个完整的功能很复杂,但是我们仅仅是看上去和它一样即可~
先放一下实现出来的效果图
有轨弹幕
看标题就可以知道,我们要实现的的在固定行
上移动的弹幕(再自己的轨道上移动)。
一、简单画一个背景板,三个轨道
CSS:
.box{width: 600px;height: 240px;background: rgba(0,0,0,0.1);margin: 100px auto 0;display: flex;flex-direction: column;justify-content: space-around;overflow: hidden;
}
.track{height: 30px;border: 4px solid rgba(0,0,0,0.3);
}
Html
<div class="box"><div class="track"></div><div class="track"></div><div class="track"></div>
</div>
效果图:
二、在每条轨道上添加一条文字
<div class="box"><div class="track"><div class="child child-1">我是弹幕</div></div><div class="track"><div class="child child-2">我是弹幕</div></div><div class="track"><div class="child child-3">我是弹幕</div></div>
</div>
三、添加动画,让文字动起来
这里为了让大家有一个直观的感受,我用代码来将一个div盒子移动的全过程显示出来(弹幕),我们来看看它的背后都经历了什么~
移动的思想
- 注意实际情况是,可视区域外的元素是不会被看见的(设置
overflow:hidden
) - 用户可通过
transform:translateX()
的方式进行移动,也可以通过left、right
的方式进行移动.
附上CSS代码(Html代码同上一步骤):
Css:
.box{width: 600px;height: 240px;background: rgba(0,0,0,0.1);margin: 100px auto 0;display: flex;flex-direction: column;justify-content: space-around;overflow: hidden;
}
.track{height: 40px;border: 4px solid rgba(0,0,0,0.3);color: rgb(127, 197, 35);
}
.child{width: 80px;height: 20px;border: 2px solid red;margin-bottom: 20px;transform: translateX(1000px);animation: scrollTo linear 4s infinite
}// 弹幕盒子的样式
@keyframes scrollTo {to{transform: translateX(-100px);}
}
效果图:
注意:
- 此时三条弹幕的运动速度相同,起始点和结束点的位置也相同,效果如图上
四、优化弹幕(注意,这里的代码为修改部分,最后会贴出完整代码)
先上一个真实的弹幕截图
我们总结一下他有什么特点?
- 弹幕通常在屏幕的上部分
- 为了区别每一条弹幕,颜色会有不同
- 每条弹幕的移动速度都不会相同
- 弹幕的数量可以适当的增加
- (题外话,弹幕比电视剧有意思的多~)
我们一一去实现它
- 弹幕通常在屏幕的上部分
- 调整一下可视区域的宽高比。
.box{width: 800px;height: 400px;background: rgba(0,0,0,0.1);margin: 100px auto 0;overflow: hidden;
}
.track{height: 40px;line-height: 40px;border: 2px solid rgba(0,0,0,0.3);margin-bottom: 5px;
}
- 为了区别每一条弹幕,颜色会有不同
- 删除弹幕的边框。
- 修改弹幕的文案。
- 调整弹幕颜色、适当添加光效。
.child{width: 80px;line-height: 20px;margin-bottom: 10px;text-shadow: 2px 2px 2px rgba(0,0,0,0.1)
}
//第一个弹幕
.child-1{color: brown; //文字颜色text-shadow: 2px 2px 3px rgb(248, 81, 20); // 文字阴影transform: translateX(1000px); //文字起始位置animation: scrollTo linear 4s infinite; //动画
}
//第二个弹幕
.child-2{color: rgb(127, 197, 35);//文字颜色text-shadow: 2px 2px 3px rgb(173, 255, 80);// 文字阴影transform: translateX(1050px); //文字起始位置animation: scrollTo linear 7s infinite; //动画
}
//第三个弹幕
.child-3{color: coral;//文字颜色text-shadow: 2px 2px 3px coral; // 文字阴影transform: translateX(800px); //文字起始位置animation: scrollTo linear 5s infinite; //动画
}
@keyframes scrollTo {to{transform: translateX(-100px);}
}
效果如图
这里我们不考虑数量的增加,大家可以考虑用Js动态生成弹幕的方式,本篇文章仅考虑用纯CSS模拟一个弹幕,并尽可能真实。
PS:(如果你想增加弹幕的数量,可以在代码中在复制child-X
出来)
最后优化
- 最后我们要做的事
- 给它添加一张背景图(假装我们在看剧)
- 删除凸显轨道的边框
- 微调整体样式
最后的结果就是这样
本篇博客会收录到有趣的CSS仓库中
有趣的CSS传送门
如果您觉得感兴趣,或者还有帮助到您,不妨给我的github点个star吧~
github传送门
纯CSS实现弹幕效果相关推荐
- 纯 CSS 实现波浪效果!
一直以来,使用纯 CSS 实现波浪效果都是十分困难的. 因为实现波浪的曲线需要借助贝塞尔曲线. 而使用纯 CSS 的方式,实现贝塞尔曲线,额,暂时是没有很好的方法. 当然,借助其他力量(SVG.CAN ...
- 制作css开关,纯css实现开关效果
大家好,我又来了,这次给大家表演使用纯css实现开关效果 首先是构思 我们使用标签来实现这个效果. checkbox的选中.未选中的特性,刚好对应开关的打开.关闭 on:打开 off:关闭 未选中,则 ...
- html实现开关,使用纯css实现开关效果
首先是构思 我们使用标签来实现这个效果. checkbox的选中.未选中的特性,刚好对应开关的打开.关闭 on:打开 off:关闭 未选中,则关闭开关 选中,则打开开关 开始画出off.on状态的草图 ...
- 如何用纯 CSS 实现优惠券效果
背景 本文来自CODE.FUN ,讲述如何用纯 CSS 实现优惠券效果的实践案例,分享给大家. 优惠券视觉效果 上面是优惠券的视觉效果,本文分享如何使用纯 CSS 实现它的主要框架,希望对大家有 ...
- Php开源h5相册系统,HTML5 CSS3专题 纯CSS打造相册效果的示例代码详解
HTML5 CSS3专题 纯CSS打造相册效果的示例代码详解: 今天偶然发现电脑里面还有这样的一个例子,感觉效果还不错,不记得啥时候下载的了,也好久没上w3cfuns了,怀念学习前台的日子,给大家分享 ...
- css中间镂空,怎么用纯CSS实现镂空效果
怎么用纯CSS实现镂空效果 发布时间:2021-03-19 09:49:16 来源:亿速云 阅读:99 作者:小新 小编给大家分享一下怎么用纯CSS实现镂空效果,希望大家阅读完这篇文章之后都有所收获, ...
- 纯css实现信封效果
纯css实现信封效果 <body><div id="dialog"><div id="envelope"><div i ...
- HTML中 css红绿黄灯,纯CSS实现红绿灯效果(面试常见)
先看题,别看答案试下吧 ~_~ 1.下面的代码输出的内容是什么? function O(name){ this.name=name||'world'; } O.prototype.hello=func ...
- css3波浪纹路_纯 CSS 实现波浪效果!
一直以来,使用纯 CSS 实现波浪效果都是十分困难的. 因为实现波浪的曲线需要借助贝塞尔曲线. 而使用纯 CSS 的方式,实现贝塞尔曲线,额,暂时是没有很好的方法. 当然,借助其他力量(SVG.CAN ...
最新文章
- 4.3 vsftpd文件共享
- leetcode算法题--Bulls and Cows
- T-SQL查询进阶--基于列的逻辑表达式
- pandas 数据分析使用
- 用多媒体库 Bass.dll 播放 mp3 [8] - 实时显示左右声道的峰值
- Java-网络编程总结(转载)
- 用openbabel将pdbqt文件转成pdb
- jQuery开发之windows边栏小工具开发(Gadget development)- wi...
- 《干货集锦》——前端大牛 Addy Osmani 的15个精彩PPT
- 基于springboot的高校(学生)评教系统
- cocos2d-x 2.2 CocoStudio动画和界面编辑器按钮控制以及场景编辑器使用
- ruhe调整计算机色温,显示器色温怎么调节
- 2019 数学建模 省一·国赛(高教杯-C题 “互联网+”时代的出租车资源配置
- Matlab 实时录音(声卡)及频谱显示
- vue.js微信公众号登录,获取当前用户openid等基本信息
- HHS整合(Struts2+Spring+Hibernate)
- matlab画爱心的代码
- 仿qq聊天程序设计之借鉴
- python自然语言处理与方言聊天机器人_聊天机器人Python实现案例 | 老炮儿聊机器语音...
- 又来了!针对VMware ESXi的新型勒索软件出现
热门文章
- jvarkit包问题反馈:构建成功,部分方法测试失败第1类错误分析
- 浅谈TEDS智能传感器
- 上海腾享-演播室LED平板灯-演播室恒力铰链吊杆
- DirectX 在MFC框架下的应用
- Django静态文件的管理
- [转]在今天这个金钱的社会,如果肆意的由这样的人横行霸道; 何来的“百善孝为先”??!...
- python刷弹幕_每个大主播都是满屏弹幕,怎么做到的?Python实战无限刷弹幕!
- 2018年全国多校算法寒假训练营练习比赛(第五场)The Biggest Water Problem
- 乐嘉版 人物性格,红黄蓝绿
- css之overflow