利用CSS实现带相同间隔地无缝滚动动画
说明:因为在移动上主要利用CSS来做动画,所以没有考虑其他浏览器的兼容性,只有-webkit这个前缀,如果需要其他浏览器,请自行补齐。
首先解释一下什么是无缝滚动动画,
例如下面的例子
See the Pen css实现上下循环滚动效果 by lilyH (@lilyH) on CodePen.
-------------------------------------------------------------------------------
实现原理:
- 首先需要滚动的是每一条数据,而不是数据外面包裹的父元素
- 保证每一条数据循环滚动的时间相同,只是他们之间滚动到可视区域的时间段不同
- 平分滚动的整个时间段,保证每条数据滚动的时间间隔相同
以上三条,看起来就头疼,也太绕了,下面直接说明例子中的实现方法。
1、html
通过class是wrap的div把可视区域固定在30PX高度内,在此区域中的为可见区域,在此之外的为不可见区域
2、CSS
(1).content p:nth-child(n) // 这里是为了获得每一个p数据,例子中具体写明了1,2。可以用n代替,比如2n表示偶数位置上的子元素 .content p:nth-child(2n)就是表示p元素位于0,2,4位置上的元素
(2)-webkit-animation: anim1 3s linear infinite; //这里注意的是,每一个p元素只有动画名称不同,其他的都是相同的,包括动画的时间,效果,方式等
(3)关键的就在于每一个动画如何在做,如下图所示

假设图中0的位置是可视区域,那么滚动的时候,数据需要从2滚动到0再滚动到1位置,只要保证每条数据进入可视区域到离开可视区域的时间相同,那么就能计算出每个数据动画位置。
另外还需要说明的是,为什么题目中说的是有间隔地,因为实际上数据从位置0移动到位置1以后,下一条数据才从位置2开始移动进入0. 所以如果滚动的是2条,那么第一条从2到1的动画时间就是0%到50%,第2条数据的动画时间就是50%到100%,为了保证在动画能循环出现,所以还需要设置动画在其他的时间段时是不可见的,并且回到初始的位置。
@-webkit-keyframes anim1{
0% {top: 30px;opacity:}
50% {top: -30px;opacity:}
75% {top: -30px ;opacity:}/*为了做隐藏**/
100%{top:30px;opacity:}/*让数据回到原始的位置**/
}
@-webkit-keyframes anim2{
0% {top: -30px;opacity:}/**为了做隐藏*/
25% {top: 30px;opacity:}/**让数据回到原始的位置**/
50% {top: 30px;opacity:}
100%{top: -30px;opacity:}
}
.content p:nth-child(1){background-color: red;}
.content p:nth-child(2){background-color: yellow;}
OK,有N条数据,就用100%/N,得到每一条数据的区间,用这种计算方法得到的每条数据的运动区间与间隔区间是同样的时间。。
当然用这种方法有一个不太好控制的地方在于,当数据条数是除以100不为整数的时候,时间间隔可能不是很准备;比如如果数据是3条,那么得到的每个数据的运动间隔就是100/3 ≈ 33%
利用CSS实现带相同间隔地无缝滚动动画的更多相关文章
- CSS和jQuery分别实现图片无缝滚动效果
一.效果图 二.使用CSS实现 <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...
- JS 实现无缝滚动动画原理(初学者入)
这段时间在教培训班的学生使用原生javascript实现无缝滚动的动画案例,做了这个原理演示的动画,分享给自学JS的朋友!博主希望对你们有帮助! 在讲解之前先看一下demo: demo:https:/ ...
- 利用css制作带边框的小三角
标签(空格分隔):css 在项目中会使用到的小实例,目前知道的有两种方法来实现 设置元素的宽和高,利用rotate实现,比较简单的一种 div{ width: 10px; height: 10px; ...
- banner无缝滚动动画,支持左右按钮和小点
HTML: <div class="box"> <ul> <li class="img_cur" > <a href= ...
- 利用jQuery无缝滚动插件liMarquee实现图片(链接)和文字(链接)向右无缝滚动(兼容ie7+)
像新闻类的版块经常要求一条条的新闻滚动出现,要实现这种效果,可以使用jQuery无缝滚动插件liMarquee. 注意: 1. 它的兼容性是IE7+,及现代浏览器. 2. 引用的jquery的版本最好 ...
- css挤带边框的三角
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 使用纯CSS实现带箭头的提示框
爱编程爱分享,原创文章,转载请注明出处,谢谢!http://www.cnblogs.com/fozero/p/6187323.html 1.全部代码 <!DOCTYPE html> < ...
- css 图片的无缝滚动
转载:http://blog.sina.com.cn/s/blog_6387e82401013kx8.html js的图片的横向或者竖向的无缝滚动图片. ttp://zx.bjmylike.com/ ...
- 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行
利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
随机推荐
- javaBean和Servlet有什么区别
1.javabean无非就是里面有些set和get方法 2.servlet用来处理一些逻辑层 3.javabean.servlet.jsp分别对应M(odel).C(ontroller).V(iew) ...
- DataTable是否存在某个列的判断
使用 DataTable.Columns.Contains方法可以判断某个列名是否存在于某个DataTable中 //添加模拟数据 DataTable t = new DataTable(); Dat ...
- Linux C/C++ Memory Leak Detection Tool
目录 . 内存使用情况分析 . 内存泄漏(memory leak) . Valgrind使用 1. 内存使用情况分析 0x1: 系统总内存的分析 可以从proc目录下的meminfo文件了解到当前系统 ...
- ubuntu14.04 gedit显示GB2312中文编码
在中文支持配置还不完整的Ubuntu 14.04中,使用gedit打开带有中文字符的文件有时会出现乱码的情况,这是由于gedit对字符编码匹配不正确导致的,解决方法如下: 在终端中输入如下命令,然后重 ...
- Linux安装pdo_mysql模块
网站不能访问 查看apache日志 PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find dr ...
- [U3D 画起重机,绑脚本和控制它运动的基本操作]
之前在学习Unity3D,不知为何网上的教学资源真是少啊...我某段时间还卡在不知如何让物体绑个脚本自动运动.. 之所以要学习U3D是因为导师让我做的IOS项目里有个需要模拟起重机,从而控制真实起重机 ...
- 使用uWSGI部署django项目
先说说什么是uWSGI吧,他是实现了WSGI协议.uwsgi.http等协议的一个web服务器,那什么是WSGI呢? WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx)与应用服务 ...
- 关于markdown的学习
标题 标题(一个等号) 小标题 深层标题 深层标题2 深层标题6 深层标题 左边一个空格 深层标题 左边两个空格 此处省略很多字 左边有回车 一个空格 两个空格 三个空格 十个空格 字体属性:斜体.加 ...
- python运维开发坎坷之路-01
前言 2014年9月,新疆乌鲁木齐,在51CTO学院看着alex老师的python教学视频,不得不说这是我第一次接触python这门高级语言,从最开始的一无所知到现在能够用python写脚本,再到未来 ...
- 【原】javascript最佳实践
摘要:这篇文章主要内容的来源是<javascript高级程序设计第三版>,因为第二遍读完,按照书里面的规范,发觉自己在工作中没有好好遵守.所以此文也是对自己书写js的一种矫正. 1.可维护 ...