`
dunhuangmi
  • 浏览: 26994 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

timeline时间线的实现方法

阅读更多

facebook,人人网都推出了“时间线”或叫“时间轴”,用于以时间段来查看用户的行为。

时间线呈现类似这样的效果:




 

 

每个单元框是一个li,如何按时间顺序将他们排列在时间轴的两端呢?这里注意每个单元框的高度都不一样,因为用户每个时刻做的行为是不同的。所以不能都用float:left来写,否则会是这样的效果:





 

显然左右单元框都没有错落排列,不是我们想要的效果。

解决方法:单元框分成两列,奇偶相隔,左列框一律float:left,右列框一律float:right。这在框高度不一致的情况下也出了问题,这是因为浏览器会自动去补左右的高度差,用右边的单元框去补左边的空档。



 为了避免上述情况,我们在分配左右列的时候不能平均进行,而是应该根据每个单元框的高度来:即,如果当前左列高度大于右列,那么下一个单元框应该放到右列去。
js代码如下:

 

$(function(){
	var n=$('li').length;
	var h=new Array(n,2);
	for (var i=0;i<n ;i++ )
	{
		h[i]=[$($('li')[i]).outerHeight()+30,0];
	}
	h[1][1]=1;
	var suml=0,sumr=0;
	for (i=2;i<n ;i++ )
	{
		for (var j=0;j<i ;j++ )
		{
			if (!h[j][1])
			{
				suml+=h[j][0];
			}
			else
			{
				sumr+=h[j][0];
			}
		}
		if (suml>sumr)
		{
			h[i][1]=1;
		}
		suml=0;
		sumr=0;
	}
	for (var i=1;i<n ;i++ )
	{
		if (h[i][1])
		{
			$('li')[i].className='right';
		}
	}
});

  我定义了一个二维数组h[][],用于保存所有单元框的高度和单元框属于左列还是右列(左列的话h[i][1]=0,右列h[i][1]=1)。根据单元框之前的左列右列高度来定位单元框是属于左列还是右列。最后给属于右列的li单元框加上classname=right。

 时间线是ul的背景图实现的,位置居中。单元框的箭头和对应点也是图片实现的。

 

这只是一个非常粗浅简单的时间线,展现一下facebook时间线的大致原理,facebook本身时间线的算法要更复杂更精准,有精力大家可以去研究。

 

附代码下载

  • 大小: 19.9 KB
  • 大小: 23.2 KB
  • 大小: 21.3 KB
0
0
分享到:
评论
1 楼 oiiopro 2013-05-03  
感谢!!!!!!!!!!!!!!!!!!!!11

相关推荐

    Android时间轴(Timeline)效果的实现代码示例

    在自定义View中,可以重写`onDraw()`方法来绘制更复杂的时间轴效果,比如带有渐变色的时间线、自定义形状的时间点等。 总的来说,Android时间轴的实现需要结合自定义布局和编程逻辑,通过动态创建和设置组件,来...

    wpf时间轴Timeline

    时间轴(Timeline)是WPF动画系统的核心组成部分,用于定义和控制动画的时间行为。 首先,让我们理解`Timeline`类的基本概念。`Timeline`是所有动画和时间线的基础类,它定义了动画的时间属性,如开始时间、持续...

    Jquery timeline 时间轴.rar

    jQuery时间轴插件是实现这一功能的强大工具,它允许开发者轻松创建动态、交互式的时间轴,使得数据呈现更为直观。本篇文章将深入探讨jQuery时间轴的原理、使用方法以及常见应用场景。 首先,我们需要理解jQuery的...

    微信小程序timeLine时间线代码片段示例

    在这个“微信小程序timeLine时间线代码片段示例”中,我们将深入探讨如何在微信小程序中实现一个时间线(TimeLine)功能。 时间线是一种常见的UI设计元素,用于展示一系列按时间顺序排列的事件或步骤。在微信小程序...

    Android时间轴(Timeline)效果的实现(使用RecyclerView)

    Android时间轴(Timeline)效果的实现(使用RecyclerView)代码示例,详细内容请参考:http://blog.csdn.net/u012939909/article/details/53510203

    基于ccs3的timeline时间线实现方法

    在web项目中我们经常要使用时间轴(timeline)控件。本文提供一种基于CSS3的可逐项展开的timeline,在各展开项中可以嵌入文本、图片、视频等元素。运行效果如下: 实现 该控件的实现过程较为简单,主要由test.html...

    微信小程序时间轴实现方法示例

    在微信小程序中,实现时间轴的效果可以...这只是一个基础的时间轴实现,更复杂的设计可能需要添加更多交互功能和动态效果。熟悉这些基础技能后,开发者可以进一步优化和扩展这个时间轴组件,以满足更丰富的应用场景。

    winform简单实现时间轴

    在Web开发中,jQuery时间轴插件如Timeline或Timeline.js提供了丰富的交互性和动态效果。但在Winform应用中,我们需要手动构建这样的效果。 1. **设计界面**: - 使用`FlowLayoutPanel`或`TableLayoutPanel`控件...

    iOS时间轴实现(Timeline)

    以上就是iOS时间轴实现的主要技术点。通过学习和实践这些知识,开发者能够创建出功能丰富、视觉效果出色的时间轴界面。在实际项目中,你可能会遇到一些特定需求,如自定义排序逻辑、多语言支持或与服务器的实时同步...

    Bootstrap 竖时间轴

    **时间轴项(Timeline Item)**:每个`.timeline-item`代表一个事件或时间点,它们包含`.timeline-badge`(时间点标记)、`.timeline-panel`(事件内容)和可选的`.timeline-left`、`.timeline-right`类来调整时间线...

    jQuery刻度尺风格横向时间轴插件timeline

    timeline插件利用jQuery的强大功能,通过简单的API调用,就能创建出富有动态效果的时间线,极大地降低了开发者实现此类特效的门槛。 **二、刻度尺风格设计** 该插件的独特之处在于其刻度尺风格的设计。这种设计...

    一款精简实用的时间轴插件一timeline

    此外,为了实现自定义和扩展,插件可能还提供了各种配置选项,例如改变时间点的样式、设置时间轴的方向(横向或纵向)、调整时间间隔的显示方式等。开发者可以通过查阅插件的文档或者通过调试示例代码来了解和利用...

    jQuery可伸缩时间轴代码timeline插件

    timeline插件通过CSS样式和JavaScript逻辑,实现了在网页上以可伸缩的形式展示这些事件,用户可以根据需要放大或缩小时间轴,查看详细信息。 3. **响应式布局**:考虑到现代网站需要适应各种设备屏幕,timeline插件...

    jQuery刻度尺风格横向时间轴插件timeline.zip

    这些方法包括添加时间点、更新时间线、响应用户交互等。 时间轴的元素结构通常包括一个主容器、多个时间点标记和连接线。CSS文件(如`css/timeline.css`)中定义了这些元素的样式,包括宽度、高度、颜色、边框等。...

    Timeline 开源时间轴应用

    同时准备将"公元前"添加至时间轴,以及对秒和毫秒提供更好的支持。与Storify不同的是,用户可以通过JSON将代码嵌入任何页面,也可以将其保存为Google Docs。 Timeline基于JavaScript和HTML/HTML5开发,并且作为开源...

    C# 自定义控件实现时间轴

    最后,`TimeLine2_src`这个文件名可能是源代码或资源文件的压缩包,其中可能包含了实现时间轴控件的完整代码。解压后,开发者可以通过阅读和学习代码,了解具体的实现细节和技巧。 总之,创建C#自定义时间轴控件是...

    vue+elementUI实现时间线的自定义显示.zip

    在本项目中,我们主要探讨如何使用Vue.js框架与Element UI库来实现一个自定义显示的时间线组件。Vue.js是一个轻量级的前端框架,它以其简洁的API和高效的响应式设计深受开发者喜爱。而Element UI是基于Vue.js的一套...

    jquery网站Timeline时间轴.zip

    《jQuery实现的网站Timeline时间轴设计详解》 在网页设计中,时间轴(Timeline)是一种常见且有效的展示信息的方式,它能将事件按照时间顺序排列,帮助用户清晰地理解历史脉络或者项目进展。本篇文章将深入探讨如何...

    vue-timeLine.vue

    利用vue-element的步骤组件el-steps实现横向时间轴,实现点击时间轴的时间节点动态的加载订单数据列表进行展示

Global site tag (gtag.js) - Google Analytics