最近使用到了html和js的表格插件Handsontable,官网地址: https://handsontable.com/
例子代码如下
var hot=new Handsontable(table_div, {
data: null,//表格数据 一般是二维数组[[]]
colHeaders: true,//显示列头
rowHeaders: true,//显示行头
manualColumnResize: true,//控制列的大小
manualRowResize: true,//控制行的大小
colWidths: Handson_colWidths,//列宽度 可以指定一个数字、数组、函数
rowHeights: Handson_rowHeights,//行高度 同上
startCols: 5,//起始列数 数据data为null有效
startRows: 5,//起始行数
contextMenu: true,//显示右键菜单
width: 580, //表宽 多余自动显示滚动条
height: 320,//表高
mergeCells: [],//数组 格子合并对象{row,col,rowspan,colspan}
afterBeginEditing: afterBeginEditing,//开始编辑
language: 'zh-CN',//中文显示
renderer: Handson_renderer,//渲染
outsideClickDeselects: outsideClickDeselects, //点击其他地方触发
afterRender:afterRender,//完成渲染以后
});
以上是示例代码,说明如下
table_div一般是一个div对象 用 document.getElementById('div的ID')获取
选项特别说明:
data:一般使用二维数组,格子的样式可以使用另一个对象使用。
manualColumnResize:控制列的大小,要配合colHeaders显示以后才好调整,比如需要设计一个表格,设计的时候需要调整行列大小,设计完成使用的时候可以不需要,有点像制作各种报表。
colWidths: Handson_colWidths 这里写成函数比较好控制。
function Handson_colWidths(col) {
var tt = dataStyle.colWidths[col];//dataStyle 数据样式。
return tt || 100;//没有设置的时候默认一个
}
mergeCells :合并后的格子 {row,col,rowspan,colspan} rowspan合并的行数
afterBeginEditing:编辑格子触发以后调用
function afterBeginEditing(row, col) {
var editobj = hot.getActiveEditor();//当前编辑的对象
var nowcell = editobj.TD; //当前编辑的格子
editobj.textareaStyle.color = nowcell.style.color;//获取当前编辑格子的颜色
nowcell.innerHTML = ""; //这个主要是解决上面颜色透明的问题
//其他样式自由添加
}
outsideClickDeselects:点击格子以外的地方会触发 默认是自动取消选择的格子
function outsideClickDeselects(htmlEle) {
if(htmlEle) {
var i = 0;
var nowele = htmlEle;
while(i < 5 && nowele) {
i++;
if(nowele.id == "paintcolor") {
return false;//点击颜色选择的时候不需要取消
}
nowele = nowele.parentNode;
}
}
return true;//取消
}
renderer: 渲染
function Handson_renderer(instance, td, row, col, prop, value, cellProperties) {
Handsontable.renderers.TextRenderer.apply(this, arguments);
//以下只是设置格子的样式 color,backgroundColor,textAlign,fontSize等css样式都可以使用,大家自由发挥 背景还可以透明"transparent"
var allstyle = dataStyle["all"];//获取全局样式
var tconf = {}; //当前样式
for(var sty in allstyle ) {
tconf[sty] = allstyle [sty];//拷贝全局样式
}
var cellconf = dataStyle.cells[row + "_" + col];//获取指定格子的样式
if(cellconf) {
for(var sty in cellconf) {
if(cellconf[sty]) {
tconf[sty] = cellconf[sty];
}
}
}
for(var sty in tconf ) {
td.style[sty] = tconf[sty];
}
}
afterRender:渲染以后,这个一般不需要。这个方法会调用多次,比如第一次完成表格渲染后会导致重新排列或者是合并格子就又会渲染一次。
本人使用这个方法是需要表格生成图片,使用html2canvas
var isdraw=false;
afterRender: function() { //完成渲染以后 可能会多次
if(!isdraw) {//防止调用多次
isdraw = true;
setTimeout(function() {//间隔调用 渲染多次也会很快结束 延迟下即可
html2canvas(outdiv, {
backgroundColor: null, //透明
useCORS: true,
scale: 2
}).then(function(canvas) {
var Pic = canvas.toDataURL("image/png");
});
}, 200);
}
}
以上就是使用Handsontable一些心得。来源:https://blog.csdn.net/xianchanghuang/article/details/82425418
tbody加滚动条实现思路:1,把tbody设置成display:block,然后就对其高度设置一个固定值,overflow设置成auto。2,把thead的tr设置成display:block。3,因为都设置成block所以要给td手动添加宽度。4,考虑到 tbody 产生了滚动条,这设置::-webkit-scrollbar进行解决。
在html中给table加一个斜线的表头有时是很有必要的,但是到底该怎么实现这种效果呢?总结了以下几种方法:UI背景图实现、css3中transform属性、利用border-top和border-left、css3的canvas、js的实现
在html中一个table表单主要由tr、td、th元素组成,比较复杂一点的表单还会包含caption、 col、 colgroup、 thead、tfoot、 tbody等元素. 这篇文章主要介绍<table>标签的各种属性的使用
设置好看的单边框表格:分别给table标签和td标签设置不在同一方向的border属性、给表格设置居中(表格整体居中、table文本居中),及文本居中、table的width和height设置、table文本格式设置
合并相邻行内容相同的单元格。rowspan指定单元格纵向跨越的行数。如rowspan被设为3,这表示该单元格必须跨越三行(本身一行,加上另外两行),此html代码使用的是ng语法,请根据自已使用的js框架自行调整。
tbody加滚动条实现思路:把tbody设置成display:block,然后就对其高度设置一个固定值,overflow设置成auto。把thead的tr设置成display:block。因为都设置成block所以要给td手动添加宽度。
表格的常用属性:1、边距属性padding(td的mrgin无效)2、边框属性border3、尺寸属性 width height4、文本格式 font-* text-* line-height5、背景属性 颜色,图片,渐变
使用Bootstrap Table的时候,在含有按钮的情况,有时候表格的线垂直方向上不对齐,调整表格的高度小些或者大些(至于为什么,并不清楚,调整高度后就对齐了)
安装xlsx和filesaver、在表格组件中引入安装的2个文件、HTML结构、导出的方法、在页面点击导出按钮时可以正常导出,但是如果左边有固定的列,相同的数据会导出2遍
在Javascript中,cells可以获取表格中某一行所有单元格的集合,可以通过索引获取集合中的指定td单元格。下面本篇文章就来给大家介绍一下Javascript的cells,希望对大家有所帮助。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!