rowspan无效_关于在 table 中给 td 设定 position:absolute 引起的 rowspan 失效的问题
在这个表格中,表头一1 和 表头二2 这两列是固定的,目前想到的解决方案是,使用 position:absolute; 但是,这个绝对定位不能相对于 table 来定位,因为这样无法实现冻结这两列的效果。
我们只能通过它相对于屏幕的最左来固定第一列,同时通过 JS 来计算出第二列相对于屏幕的最左的距离,并给这列加上一个属性 offsetLeft;
随后给第三列(这是不需要固定的列)一个 paddingLeft 值来防止它被因为设置 position:absolute 而脱离文档流的固定列所覆盖。
下面是具体的代码:
.table{width: 1000px;overflow-x: scroll;margin:auto;}
table{border:1px solid black;}
table div{width: 200px;}
td{width: 200px;text-align: center; border:1px solid blue; background-color:yellow;}
AAABBBCCCDDDEEEFFFGGGHHH
var trs = document.getElementById('fixedTable').getElementsByTagName('tr')
for(var i = 0; i < trs.length; i++){
//第 i 列
var tr = trs[i]
//计算所有固定列的总宽度
var totalWidthOfFixedColumn = 0
//计算列需要相对于屏幕左边的 offset
var offsetLeft = document.getElementById('fixedTable').getElementsByTagName('td')[0].offsetLeft
//第 i 列的所有单元格
var tds = tr.getElementsByTagName('td')
for(var j = 0; j <= 2 && j < tds.length; j++){
//第 i 列的第 j 个单元格
var td = tds[j]
//当前单元格宽度
var currentTdWidth = parseInt(td.style.width.slice(0, -2))
if(j === 2){
//当 j == 2 时,说明已经处理完所有固定的列,需要给这一列一个 paddingLeft 防止因为 position:absolute 脱离文档流
//导致的该列被其他固定列锁覆盖
td.style.paddingLeft = totalWidthOfFixedColumn + 'px';
continue
}
totalWidthOfFixedColumn += currentTdWidth
td.style.left = offsetLeft + 'px'
try{
offsetLeft += currentTdWidth
}catch(e){
console.error(e)
}
}
}
具体效果如下:
随后,我将表头更改为如下:
但是效果却成了如下形式:
觉得应该还是因为前两列设置了 position:absolute 导致的元素脱离文档流引起的,但是不知道怎么解决,希望各位大神能不吝赐教。
rowspan无效_关于在 table 中给 td 设定 position:absolute 引起的 rowspan 失效的问题相关推荐
- [html] table中给td设置宽度无效怎么解决?
[html] table中给td设置宽度无效怎么解决? 默认是列宽度由单元格内容设定 table 添加css tableLayout :fixed; 个人简介 我是歌谣,欢迎和大家一起交流前后端知识. ...
- html表格td的内容修改,点击table中的td,修改td中的内容功能实现
点击table中的td,修改td中的内容 前段时间,需要搭建演示页面,有个功能是实现点击表格中的某一格,能够修改对应格子中的内容,一开始不知道怎么写,在网上找了一下,自己再整合了一下,功能实现的代码如 ...
- table中的td表示table data(表格数据),tr表示table row(表格行),th表示table head(表格头)
<table>中的 <td>表示table data(表格数据) <tr>表示table row(表格行) <th>表示table head(表格头)
- 表格table中的td标签中的内容太多,影响整体外观,不美观。将一部分内容隐藏起来,用省略号代替
表格table中的td标签中的内容太多,影响整体外观,不美观.将一部分内容隐藏起来,用省略号代替. 招式:1.在table标签中加上style="table-layout: fixed;&q ...
- 设置table中的td宽度不同
类似站内短信的形式的一个table,想要的实现结果如下格式: 刚开始觉得"这里是名字"的td设置宽度为20%就可以了,代码如下: <table><tr class ...
- table中的td内容过长显示为固定长度,多余部分用省略号代替
如何使td标签中过长的内容只显示为这个td的width的长度,之后的便以省略号代替. 给table中必须设置属性: table-layout: fixed; 然后给 td 设置: white-spac ...
- html表格td点击事件,监听layui中的table中的td点击事件
上图 就是用layui生成的一个table表格; 在这里我们给td绑定class,再通过jq的方式去监听是不可行的; 会监听不到事件; 不过在layui中,给了监听方法,并且还可以获取到该行所有的数据 ...
- javascript做的一个根据table中某个td的值为日期时的倒计时
JavaScript代码: <script>window.onload = window.onload = function () { getTdValue(); }//根据传过来的天数( ...
- 循环遍历获取table中的td,tr
贴上页面div <div align="center"><table id="tab" border="1" align= ...
最新文章
- C#中的Partial
- MATLAB xls数据读写
- golang 中string和int类型相互转换
- 使用正确的主机名访问https,提示连接不安全
- Java SortedSet接口
- 【Linux系统编程应用】Linux音频编程实战(一)
- cocos2d-x游戏实例(11)-触屏主角移动轨迹
- 30个Python常用极简代码,拿走就用,赶紧收藏!
- [转]UE/UI/UCE/UED的区别 附UED团队网站链接
- Idea创建包以及导入jar包等操作
- Some Important Data Structures
- python怎么设置为中文-python如何设置中文界面
- Linux代码比对工具meld
- 6、淘宝双11数据分析与预测
- 5G通信光模块是什么?5G通信光模块的发展方向如何?
- ESP8266-12F WIFI转串口模块底板设计
- 彩铃多多 v2.4.5.0
- 线性代数笔记-3Blue1Brown:(一)
- 遥感基础知识——电磁波
- java查询elasticsearch_elasticsearch查询所有数据restful api以及java代码实现
热门文章
- We~ˇsay~~ˇ
- matlab axes控件,PushButton控件,Axes控件,Text控件以及imshow和image函数
- GIS开发中的区域定位功能实现
- 台式电脑没鼠标怎么移动光标_电脑没有鼠标怎么操作?没有鼠标操控win10电脑的方法...
- awstats安装和配置
- schedule任务调度及其用法(多线程并发)
- 2012年12月第五个周末
- 爬虫的高阶使用——scrapy框架crawl shell,crawlSpider imagepipeline
- error: RC2135 : file not found:
- linux alsa asoc总结