`
abruzzi
  • 浏览: 449352 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

一个实用的JS对表格的特效

阅读更多

正如上一篇文章所说,table是日常编辑中比较常用的一种结构。而单调的表格效果已经无法满足日益强烈的视觉需求。周末对表格的各行变色,鼠标跟踪进行了一些学习和研究,并学习了html的自定义标签,实现了按行进行mark的一个简单功能。

现在把效果和代码贴出来分享,希望给需要的人以帮助。

先看看效果:


图中第3条记录所在的行的背景色与别的行不一样,标志着鼠标目前在此行悬停。当鼠标移开之后,改行会恢复原先的背景色,此为鼠标跟踪功能。

图中的奇数行表现为一种颜色,偶数行表现为另外一种颜色,这个实现上比较简单,先统计行数n,然后用n模2,如果余数为0,则改行为偶数行,设置其背景色,如果余数为1,则为奇数行,设置其背景为另一种颜色。

 

再看看标记(mark)功能的示例:



 深蓝色的行,02和04为标记了(marked)的行,相当于vim或者UE中的书签功能,选中之后,可以对这些行进行统一的某些操作,如删除,隐藏等操作,再次点击改行为取消标记。

 

代码比较简单,先看看样式表:

*{
	font-family:"Courier New";
	font-size:18px;
}
.trOdd{
	background-color:#FFFFFF;
}
.trEven{
	background-color:#EDF0F7;
}

 然后是只包含一个函数的javascript文件

/*
	@param tableid the id of your table
	@param colors is a array contains 4 colors
	colors[0] -- color when mouse move over
	colors[1] -- color when mouse move out, if odd line
	colors[2] -- color when mouse move out, if even line
	colors[3] -- color when mouse clicked, make a new mark
*/
function chromeTable(tableid, colors){
	//if user didn't special the colors, use default.
	if(colors.length != 4){
		colors[0] = '#D6E9F8';
		colors[1] = '#FFFFFF';
		colors[2] = '#EDF0F7';
		colors[3] = '#67A7E3';	
	}
	//else use the user-defined colors
	var overColor = colors[0];
	var trColorOdd = colors[1];
	var trColorEven = colors[2];
	var selectedColor = colors[3];
	
	
	var trs = document.getElementById(tableid).getElementsByTagName("tr");
	for(var i=0; i<trs.length; i++){
		//initialize the TRs, add a new attribute : marked
		trs[i].setAttribute('marked','false');
		
		//set up the onMouseOver event handler
		trs[i].onmouseover = function(){
			var marked = this.getAttribute('marked');
			if(marked == 'false'){
				this.style.backgroundColor = overColor;
			}else{
				this.style.backgroundColor = selectedColor;
			}
		}
		
		//set up the onMouseOut event handler
		trs[i].onmouseout = function(){
			var marked = this.getAttribute('marked');
			if(marked == 'false'){
				if(this.rowIndex %2 == 0){
					this.style.backgroundColor = trColorEven;
				}else{
					this.style.backgroundColor = trColorOdd;
				}
			}else{
				this.style.backgroundColor = selectedColor;
			}
		}
		
		//set up the onClick event handler
		trs[i].onclick = function(){
			var marked = this.getAttribute('marked');
			if(marked == 'false'){
				this.setAttribute('marked','true');
				this.style.backgroundColor = selectedColor;
			}else{
				this.setAttribute('marked','false');
				if(this.rowIndex %2 == 0){
					this.style.backgroundColor = trColorEven;
				}else{
					this.style.backgroundColor = trColorOdd;
				}
			}			
		}
		
		//set the class of the TRs
		if(i%2 == 0){
			trs[i].className = 'trEven';	
		}else{
			trs[i].className = 'trOdd';	
		}
	}
}
 

最后,是使用方式,需求很简单,当页面加载完成后,调用js脚本对数据表进行渲染(onload事件)

<body onLoad="chromeTable('chrome',['#D6E9F8','#FFFFFF','#EDF0F7','#67A7E3']);">

 这里,函数chromeTable(tableId, colors)中的第二个参数可以忽略,如果忽略,则按照默认的配色方案进行渲染。

 

下面对这个函数简单解释一下:

  1. 根据id获取table,并得到该table有多少行(tr)
  2. 根据colors数组初始化颜色表,如果用户没有指定,则使用默认的配色方案
  3. 遍历行(tr)数组,进行如下操作
    1. 新建一个自定义属性marked,并初始化为false。
    2. 注册鼠标移过事件
    3. 注册鼠标移出事件
    4. 注册点击事件
    5. 对改行使用样式表中定义的样式
  4. 结束

流程比较简单,你可以在调用chromeTable时,自定义配色方案,注意一下colors数组中的顺序所代表的意义

  1. 鼠标移到改行时,改行需要呈现出来的颜色
  2. 鼠标移出时,改行需要呈现的颜色(奇数行)
  3. 鼠标移出时,改行需要呈现的颜色(偶数行)
  4. 单击改行(标记)时,改行需要呈现的颜色(应该是比较醒目的颜色)

 

 

okay, 关于table的这几种效果就先写到这里,后续的可能会写一些关于表格的可编辑(editable),对指定行进行某些处理等操作的demo.

 

  • 大小: 16.9 KB
  • 大小: 16.2 KB
分享到:
评论

相关推荐

    js-表格显示特效

    4. **表格插件**:虽然可以纯用JavaScript和CSS实现复杂的表格特效,但通常我们会使用一些成熟的JavaScript表格库,如jQuery DataTables、Handsontable、ag-Grid等。这些插件提供了丰富的功能和自定义选项,如排序、...

    JavaScript特效(表格类)

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责处理客户端的交互和动态...同时,随着前端技术的发展,如Vue.js、React等框架也提供了更多表格组件和解决方案,进一步丰富了表格特效的实现方式。

    js 特效 html 特效 会动的表格

    js 特效 html 特效 会动的表格! js 特效 html 特效 会动的表格!

    表格特效、js、css、图片

    另外,`鼠标经过显示产品图片js特效代码.rar`是一个压缩包,可能包含实现该特效的JavaScript代码和图片资源。要查看和学习这些特效的具体实现,可以解压这个文件,并在浏览器中打开`.htm`文件来查看运行效果。 总的...

    JS+CSS的table表格特效

    "JS+CSS的table表格特效"是一个利用JavaScript(JS)和层叠样式表(CSS)来增强HTML表格功能的例子,旨在提高用户体验并增加交互性。在这个项目中,我们可以看到几个关键的技术点: 1. **复选框全选**:这是表格中...

    js 特效 html 特效 改变表格的内容

    js 特效 html 特效 改变表格的内容 js 特效 html 特效 改变表格的内容

    js 特效 html 特效 闪烁的表格

    js 特效 html 特效 闪烁的表格 js 特效 html 特效 闪烁的表格

    javascript经典特效---改变表格的内容.rar

    "javascript经典特效---改变表格的内容.rar"这个资源显然是一个关于如何使用JavaScript动态修改HTML表格内容的教程或示例集合。在JavaScript中,我们可以利用DOM(Document Object Model)接口来实现对HTML元素的增...

    js 特效 html 特效 随意移动的表格

    js 特效 html 特效 随意移动的表格 js 特效 html 特效 随意移动的表格

    js 特效 html 特效 流动边框效果的表格

    js 特效 html 特效 流动边框效果的表格 js 特效 html 特效 流动边框效果的表格

    js 特效 html 特效 鼠标移动表格框

    js 特效 html 特效 鼠标移动表格框 js 特效 html 特效 鼠标移动表格框

    js 特效 html 特效 可隐藏的导航表格

    js 特效 html 特效 可隐藏的导航表格 js 特效 html 特效 可隐藏的导航表格

    JavaScript_js特效

    1. **表格特效**:JavaScript可以用来增强HTML表格的功能,如排序、筛选、动态加载数据等。例如,使用`addEventListener`监听事件,通过`innerHTML`或DOM操作改变表格内容,实现动态更新。 2. **点击特效**:当用户...

    js 特效 html 特效 检查表格的行数

    js 特效 html 特效 检查表格的行数 js 特效 html 特效 检查表格的行数

    表格-js特效-菜单样式

    在IT行业中,网页开发是至关...总结来说,"表格-js特效-菜单样式"这个主题涵盖了一系列使用JavaScript优化网页表格和菜单交互体验的技术。通过学习和实践这些技巧,开发者能够创建更具吸引力和用户友好性的网页应用。

    js 特效 html 特效 类似Excle的表格

    js 特效 html 特效 类似Excle的表格 js 特效 html 特效 类似Excle的表格

    vue.js韩语字母变色表格特效.zip

    在这个“vue.js韩语字母变色表格特效.zip”项目中,我们可以看到一个实现的特效,它能够使韩语字母在表格中动态变色,为网页增添视觉吸引力。这个效果可能适用于教学、展示或者任何需要突出韩语字符的场景。 首先,...

    js表格变色制作表格隔行变色,滑过选中变色特效

    为了提高用户的阅读体验,有时候我们需要对表格进行美化,例如实现隔行变色、鼠标滑过时选中变色等特效。本教程将详细介绍如何使用JavaScript来实现这些效果。 首先,让我们了解一下JavaScript在网页中的作用。...

    JavaScript实现表格动画渐变特效.rar

    在本示例中,"JavaScript实现表格动画渐变特效"是通过JavaScript代码为HTML表格添加了动态效果,使得用户在点击表格表头时,表格内容能够以线条方框动画的形式呈现,提供了一种吸引用户的视觉体验。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics