本来感觉这个固定列很容易实现的,一般都是几个table组合实现,真正自己从头做的时候,发现有很多坑,本文只是固定列原理,真正实现datatable的话,代码量比较大的,后续再进行完善。

使用左中右三个datatable实现显示

|left|center|right|

left和right是固定列,效果如下

实现原理:

(1)左右div使用posion:absolute固定
(2)center区域div使用overflow:scroll显示
(3)设置line-height,这个属性很重要,不然的话三个datatable最小td高度不一样会导致总高度错开。
(4)后续需要完善:根据left,right宽度js计算center区域的left,right.

<style>
#mydatatable {
width: 400px;
height: 600px;
position: relative;
line-height: 30px;
}
.jgui-datatable .tableleft {
position: absolute;
left: 0px;
top: 0px;
bottom: 0px;
background: #eee;
z-index: 1000;
}
.jgui-datatable .tableright {
position: absolute;
right: 0px;
top: 0px;
bottom: 0px;
background: #eee;
z-index: 1000;
}
.jgui-datatable .tablebody {
position: absolute;
right: 50px;
left: 100px;
top: 0px;
z-index: 50;
overflow: scroll;
}
.jgui-datatable th {
min-width: 50px;
text-align: center; }
.jgui-datatable td {
text-align: center;
}
</style>
</head>
<body>
<div>这是DataTable固定左右列显示</div>
<div class="jgui-datatable" id="mydatatable">
<div> <div class="tableleft">
<table>
<thead>
<tr>
<th>
<input type="checkbox" />
</th>
<th>
ID
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" />
</td>
<td>
001
</td>
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>
001
</td>
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>
001
</td>
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>
001
</td>
</tr>
</tbody>
</table>
</div>
<div class="tablebody">
<table>
<thead>
<tr>
<th>
姓名
</th>
<th>
年龄
</th>
<th>
性别
</th>
<th>
班级
</th>
<th>
语文
</th>
<th>
数学
</th>
<th>
外语
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
张三
</td>
<td>
31
</td>
<td>

</td>
<td>
1班
</td>
<td>
91
</td>
<td>
90
</td>
<td>
80
</td>
</tr>
<tr>
<td>
张三
</td>
<td>
31
</td>
<td>

</td>
<td>
1班
</td>
<td>
91
</td>
<td>
90
</td>
<td>
80
</td>
</tr>
<tr>
<td>
张三
</td>
<td>
31
</td>
<td>

</td>
<td>
1班
</td>
<td>
91
</td>
<td>
90
</td>
<td>
80
</td>
</tr>
<tr>
<td>
张三
</td>
<td>
31
</td>
<td>

</td>
<td>
1班
</td>
<td>
91
</td>
<td>
90
</td>
<td>
80
</td>
</tr>
</tbody>
</table>
</div>
<div class="tableright">
<table>
<thead>
<tr>
<th>
总分
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
261
</td>
</tr>
<tr>
<td>
261
</td>
</tr>
<tr>
<td>
261
</td>
</tr>
<tr>
<td>
261
</td>
</tr>
</tbody>
</table>
</div>
</div>
</body>

JGUI源码:DataTable固定列样式(20)的更多相关文章

  1. JGUI源码:鼠标中键滚动再次优化(5)

    //电脑端中键滚动事件 var mousewheel = getBrowserInfo() == "Firefox" ? "DOMMouseScroll" : ...

  2. JGUI源码:从头开始,建一个自己的UI框架(1)

    开篇 1.JGUI是为了逼迫自己研究底层点的前端技术而做的框架,之前对web底层实现一直没有深入研究,有了技术瓶颈,痛定思痛从头研究, 2.虽然现在vue技术比较火,但还在发展阶段,暂时先使用JQue ...

  3. JGUI源码:Accordion鼠标中键滚动和手机端滑动实现(2)

    本文是抽屉组件在PC端滚动鼠标中键.手机端滑动时,滚动数据列表实现方法,没有使用iscroll等第三方插件,支持火狐,谷歌,IE8+等浏览器. 演示在:www.jgui.com Github地址:ht ...

  4. jQuery 源码解析(二十七) 样式操作模块 坐标详解

    样式操作模块可用于管理DOM元素的样式.坐标和尺寸,本节讲解一下坐标这一块. 对于坐标来说,jQuery提供了一个offset方法用于获取第一个匹配元素的坐标或者设置所有匹配元素的坐标,还有offse ...

  5. 源码编译安装MySQL8.0.20

    1 概述 本文章主要讲述了如何从源码编译安装MySQL社区版8.0.20,首先会介绍一些编译安装的相关知识,然后开始编译安装 2 源码编译安装的相关知识 2.1 make与configure make ...

  6. netty源码解解析(4.0)-20 ChannelHandler: 自己实现一个自定义协议的服务器和客户端

    本章不会直接分析Netty源码,而是通过使用Netty的能力实现一个自定义协议的服务器和客户端.通过这样的实践,可以更深刻地理解Netty的相关代码,同时可以了解,在设计实现自定义协议的过程中需要解决 ...

  7. 记录一次源码扩展案列——FastJson自定义反序列化ValueMutator

    背景:曾经遇到一个很麻烦的事情,就是一个json串中有很多占位符,需要替换成特定文案.如果将json转换成对象后,在一个一个属性去转换的话就出出现很多冗余代码,不美观也不是很实用. 而且也不能提前在j ...

  8. JGUI源码:右键菜单实现(12)

    1.要想实现右键菜单,就要先能响应右键函数 $('#down').mousedown(function(e){ if(3 == e.which){ alert('这是右键单击事件'); }else i ...

  9. JGUI源码:实现日期控件显示(17)

    本文实现一个日期控件显示,日期控件看起来很复杂,其实原理很简单,大部分情况下我们直接使用别人做得好的日期控件就行,但有时候特殊需求,比如显示提醒之类的,恐怕第三方控件就不好实现了, 为了使程序逻辑看起 ...

随机推荐

  1. jQuery字母大小写转换函数

    toLowerCase() ------ 将字符串中的所有字符都转换成小写: toUpperCase() ------ 将字符串中的所有字符都转换成大写:

  2. 解决 WordPress“正在执行例行维护,请一分钟后回来”

    WordPress在升级程序.主题.插件时,都会先切换到维护模式,也就是显示 “正在执行例行维护,请一分钟后回来(Briefly unavailable for scheduled maintenan ...

  3. 所有eclipse版本,主题黑化,代码黑化的简单两步

    一.下载两个文件 二.打开eclipse,Import   .epf文件 三.把.jar 复制到 eclipse的plugins目录下,重启eclipse 效果如下: 注 以上方法:来自互联网

  4. Kafka Frequently Asked Questions

    This is intended to be an easy to understand FAQ on the topic of Kafka. One part is for beginners, o ...

  5. ES6的Map如何遍历

    projectMap.forEach(function (value, key, map) { //value和key就是map的key,value,map是map本身 });

  6. java8 list转map,list集合中的元素的属性转set,list集合中对象的属性转list

    一.使用java8对list操作 1.1list转map private Map<String, Member> getMemberMap() { List<Member> m ...

  7. ASP.NET Core 下的依赖注入(一)

    本文介绍利用 Microsoft.Extensions.Configuration.Binder.dll 来实现超级简单的注入. 1. appsettings.json 中定义配置 假设我们有如下配置 ...

  8. jackson把json转换成LIst

    把json数据转换成list ObjectMapper mapper = new ObjectMapper();  List<YeWuLuYou> readValue = mapper.r ...

  9. Photoshop给草坡上的人物加上大气的霞光

    <点小图查看大图> 最终效果 1.打开原图素材大图,创建可选颜色调整图层,对红色.黄色.黑色进行调整,参数设置如图1 - 3,效果如图4.这一步减少图片中的红色,并给暗部增加蓝色. < ...

  10. Oracle完全卸载详解

    Oracle数据库的安装这里就不说了,网上应该有很多,但是oracle数据库的卸载却找不到一个比较详细的完整卸载的说明.很多卸载不完全,会有遗留数据,影响后续的安装.所以自己整理一份以前上学的时候学习 ...