可编辑表格的实现

news/2024/7/7 20:36:02

表格是网站中最常见的数据表现形式之一,不过大部分表格里数据都是从后台获取后直接展示的。本文将介绍可编辑表格的实现。

自适应宽高的多行输入

多行输入最常用的标签就是textarea,textarea正常使用的话是固定宽高的,内容超出的情况下默认是使用滚动条来处理的,不能实现自适应宽高的多行输入。

下面提供了两种方法来实现自适应宽高的多行输入:

contenteditable属性

使用HTML5 contenteditable属性可以快速实现自适应宽高的多行输入,虽然它是HTML5的内容,但是兼容性较好,ie也能支持

<div class="editable" contenteditable="true"></div>
复制代码
.editable {display: inline-block;min-width: 200px;max-width: 400px;min-height: 100px;
}
复制代码

textarea + div

HTML就是外层一个容器元素,里面有div和textarea两个子元素。

实现原理是当我们在textarea中输入文本的同时一起顺带填充div子元素里的文本内容,让子div元素的宽高自适应,同时父容器div也会随之撑开,因为子textarea元素是绝对定位、宽高100%的,所以父容器高度增减后,textarea的宽度高度也会随之一同增减。

<div class="textarea-wrapper"><div class="content-editable"></div><textarea class="field-textarea"></textarea>
</div>
复制代码
.textarea-wrapper {position: relative;.content-editable {position: relative;z-index: -1;opacity: 0;display: block;}.field-textarea {position: absolute;top: 0;left: 0;width: 100%;height: 100%;resize: none;}
}
复制代码
var $content = $('.content-editable')
$('.field-textarea').on('input', function(){$content.text(this.value)
})
复制代码

在线例子

表格

table标签

从语义化来说, table 就是表格,所有表格类型的数据,都可以table结构来完成

<table><tr><td>1,1</td><td>1,2</td><td>1,3</td></tr><tr><td>2,1</td><td>2,2</td><td>2,3</td></tr>
</table>
复制代码

div + css

div + css特点是布局灵活、改动方便,用它也可以快速完成表格的布局。

<div class="table"><ul class="row"><li class="cell">1,1</li><li class="cell">1,2</li><li class="cell">1,3</li></ul><ul class="row"><li class="cell">2,1</li><li class="cell">2,2</li><li class="cell">2,3</li></ul>
</div>
复制代码

在线例子

可编辑的表格

利用上述制作的表格和自适应宽高的多行输入方式即可做出可编辑的表格。

table + contenteditable

用table结构做出的可编辑表格具备了table布局的自适应能力,当你在某一个单元格输入的时候行列会自动对齐。

不足之处是table的自适应能力可能不符合我们需求,而它的自适应能力又难以修改。

div + css + contenteditable

用div + css结构做出的可编辑表格布局需要js的配合,这样就需要花时间处理表格布局交互,但是相对的表格的布局交互是可控的。

在线例子

总结

上面可编辑的表格实现是最基础的,要想实现一个完整的可编辑表格功能,比如在线excel,还是要考虑到很多问题的,不过可以参考一些已有的在线excel例子。


http://lihuaxi.xjx100.cn/news/272442.html

相关文章

推荐:一款Java开源的Springboot 即时通讯 IM 聊天系统

点击上方“方志朋”&#xff0c;选择“设为星标”回复”666“获取新整理的面试文章# 开篇电商平台最不能缺的就是即时通讯&#xff0c;例如通知类下发&#xff0c;客服聊天等。今天&#xff0c;就来给大家分享一个开源的即时通讯系统。如对文章不感兴趣可直接跳至文章末尾&…

win7x64注册表显卡渲染速度_Geek3D GpuTest GUI(显卡测试软件)下载-Geek3D GpuTest GUI(显卡测试软件)免费版下载v0.7.0...

Geek3D GpuTest GUI 能够对显卡的GPU、OpenGL进行基准压力的测试&#xff0c;而且测试完成也相当的快捷&#xff0c;功能强大&#xff0c;体积小巧&#xff0c;目前支持在windows 64位系统上进行测试&#xff0c;帮助用户检测显卡的型号&#xff0c;让用户更好的使用显卡并发挥…

从零开始一起学习SLAM | 三维空间刚体的旋转

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达刚体&#xff0c;顾名思义&#xff0c;是指本身不会在运动过程中产生形变的物体&#xff0c;如相机的运动就是刚体运动&#xff0c;运动过程中同一个向量的长度和夹角都不…

Android线程之主线程向子线程发送消息

和大家一起探讨Android线程已经有些日子了&#xff0c;谈的最多的就是如何把子线程中的数据发送给主线程进行处理&#xff0c;进行UI界面的更新&#xff0c;为什么要这样&#xff0c;请查阅之前的随笔。本篇我们就来讨论一下关于主线程向子线程如何发送数据&#xff0c;这个用的…

破解Win2008口令-ERD6.0

我们在日常使用计算机的过程中&#xff0c;大多都经历过由于忘记口令从而无法进入系统的遭遇。遇到这种问题该如何处理呢&#xff1f;很多朋友一定想到了形形的口令破解工具&#xff0c;这些工具中名气最大的就是ERD Commander Boot CD。 ERD Commander Boot CD是一张可以启动操…

Python基础实战之函数的参数讲解(三)

●参数可以是任意类型。 ●比如可以是列表。 library[‘python精通’,‘MySQL’,‘数据分析’,‘人工智能’] #形参 def add_book(bookname): library.append(bookname) print(‘图书添加成功&#xff01;’) pass def show_book(books): for book in books: print(bo…

训练数据也外包?这家公司“承包”了不少注释训练数据,原来是这样做的……...

作者 | Lionbridge AI译者 | 天道酬勤 责编 | 徐威龙封图| CSDN│下载于视觉中国出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;在机器学习领域&#xff0c;训练数据准备是最重要且最耗时的任务之一。实际上&#xff0c;许多数据科学家声称数据科学的很…

junit配合catubuter统计单元测试的代码覆盖率

1、视频参考孔浩老师ant视频笔记 对应的build-junit.xml脚步如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project default"coverage-report"><property name"src.dir" location"src">…