使用JavaScript和CSS实现文本隔行换色的方法


Posted in Javascript onNovember 04, 2015

先来看一个简单的方法。
在 css 中定义两种样式 .odd{...} 和 .even{...} 分别用于奇数行和偶数行的不同背景颜色。在网页加载后通过 javascript 获取要变色的标签列表,执行如下代码:

// 当文件加载时,执行代码。
window.onload = function() {
 // 获取<ul id="list" />对象
 var list = document.getElementById('list');
 // 获取list下面的所有li
 var items = list.getElementsByTagName('li');
 // 遍历items
 for (var i = 0; i < items.length; i++) {
  var className = (i % 2 == 0) ? ' odd' : ' even';
  items[i].className += className; 
 }
}

实现不同行的不同颜色,这样变完全在前端处理,不会与后端的逻辑混淆,是一种比较好的解决方案。
那么这种代码实现起来效果基本上是这样的:

使用JavaScript和CSS实现文本隔行换色的方法

不过,这种方法存在一些问题:

  • 只能对指定的一个列表进行渲染,不能重用
  • 不能指定变色的起始位置,在处理表格的变色时,得专门写处理
  • 代码全在 onload 事件中,对页面的依赖太高

将其代码进行改进并移入到一个单独的函数中去:

/**
 * 此方法用于列表的隔行变色效果,可以灵活得为指定ID的列表指定隔行的颜色。
 *
 * @param id 列表的id
 * @param item 要变色的行的标签
 * @param odd 奇数行的样式类名,如果不指定,则默认为odd
 * @param even 偶数行的样式类名,如果不指定,则默认为even
 * @param start 开始变色的行的索引,如果不指定,则默认为0
 * @param end 结束变色的行的索引,如果不指定,则默认为列表长度
 */
function rowRender(id, item, odd, even, start, end) {
 // 获取列表容器
 var list = document.getElementById(id);
 // 获取列表
 var items = list.getElementsByTagName(item);
 
 // 修正初始位置,如果不是一个数字或者越界,则从0开始
 if (isNaN(start) || (start < 0 || start >= items.length)) {
  start = 0;
 }
 
 // 修正结束位置,如果不是一个数字或者越界,则为列表末尾
 if (isNaN(end) || (end < start || end >= items.length)) {
  end = items.length;
 }
 
 // 如果没有指定odd,则默认为'odd'
 odd = odd || 'odd';
 // 如果没有指定even, 则默认为'even'
 even = even || 'even'; 
 
 // 遍历列表并渲染效果
 for (var i = start; i < end; i++) {
  var className = ' ' + ((i % 2 == 0) ? odd : even);
  items[i].className += className;
 }
}

用法:

window.onload = function() {
 // 渲梁list1下所有的li标签,使用默认的样式和起始位置
 rowRender('list1', 'li');

 // 渲梁list2下所有的li标签,使用指定的odd和默认的even,使用指定的起始位置
 rowRender('list2', 'li', 'odd1', null, 2, 6);

 // 渲梁table1下所有的tr标签,使用指定的odd和even,使用默认的起始位置
 rowRender('table1', 'tr', 'tr-odd', 'tr-even');
 // 渲梁table2下所有的tr标签,使用指定的odd和even,使用指定的起始位置
 rowRender('table2', 'tr', 'tr-odd', 'tr-even', 1);
}

示例:
Table 1

rowRender('table1', 'tr', 'tr-odd', 'tr-even');

使用JavaScript和CSS实现文本隔行换色的方法

Table 2

rowRender('table1', 'tr', 'tr-odd', 'tr-even', 1);

使用JavaScript和CSS实现文本隔行换色的方法

Javascript 相关文章推荐
javascript jQuery $.post $.ajax用法
Jul 09 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
JS数组array元素的添加和删除方法代码实例
Jun 01 Javascript
对JavaScript客户端应用编程的一些建议
Jun 24 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
Jun 10 Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 Javascript
JavaScript循环_动力节点Java学院整理
Jun 28 Javascript
详解如何构建Angular项目目录结构
Jul 13 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
Apr 22 Javascript
vue+Element实现搜索关键字高亮功能
May 28 Javascript
javascript实现超好看的3D烟花特效
Jan 01 Javascript
javascript常用函数(1)
Nov 04 #Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
Nov 04 #Javascript
jQuery多条件筛选如何实现
Nov 04 #Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
Nov 04 #Javascript
js数组去重的5种算法实现
Nov 04 #Javascript
解决js图片加载时出现404的问题
Nov 30 #Javascript
jquery实现的点击翻书效果代码
Nov 04 #Javascript
You might like
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
Python 文件和输入输出小结
2013/10/09 Python
python多线程http下载实现示例
2013/12/30 Python
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
django-allauth入门学习和使用详解
2019/07/03 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
医护人员英文求职信范文
2013/11/26 职场文书
出生公证书样本
2014/04/04 职场文书
南京青奥会口号
2014/06/12 职场文书
大学课外活动总结
2014/07/09 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
庆七一晚会主持词
2015/06/30 职场文书
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android