固定标题和左侧栏的表格初试

记得曾经做过一个公交查询系统的二期开发,其中一个模块要求固定标题和左侧栏,当时不知道是哪根筋抽了,一门心思想着position:fixed;在margin:0;padding0;还是可以用的,但是当margin和padding改变值以后就不能用了,以至于弄了一天都没弄出个啥,好在当时要求不高,还是勉强通过了技术总监的要求;现在想起来,从新做个测试,呀哈!居然很轻易的弄出来了。具体思路如下:

布局用三个div块实现,标题块,侧边栏块,内容块,块的内容用table表格实现

1.外部采用相对定位,内部标题和侧边栏采用绝对定位,内容部分用margin

2.当外部模块滚动条滚动时,

标题

oTop.style.left=oMain.offsetLeft+‘px‘;
oTop.style.top=scrolltop+‘px‘;

侧边栏

oLeft.style.left=scrollleft+‘px‘;
oLeft.style.top=oMain.offsetTop-32+‘px‘;

css代码如下

<style>
*{margin: 0;padding: 0;}
div.container_table{position: relative;width: 800px; height: 250px;overflow: scroll;z-index: 999;margin: 100px auto;}
div.topTitle{position: absolute;left: 103px; top: 0;width: 1020px;height: 30px;background: red;}
div.topTitle table tr{width: 1200px;height: 30px;}
div.topTitle table tr th{width: 100px;height: 30px;text-align: center;font-size: 20px;border: 1px solid #ccc;float: left;}
div.leftTitle{position: absolute;left: 0; top: 0px;width: 104px; height: 385px;background: blue;}
div.leftTitle table{width: 100px;}
div.leftTitle table tr{width:100px;height: 300px;border: 1px solid #ccc;}
div.leftTitle table tr td{width: 100px;height: 30px;border:1px solid #ccc;float: left;border-collapse: collapse;text-align: center;}
div.mainContent{width: 1020px; height: 352px;background: yellow;margin: 31px 0 0 103px;}
div.mainContent table tr{width: 1200px;height: 30px;}
div.mainContent table tr td{width: 100px;height: 30px;text-align: center;font-size: 20px;border: 1px solid #ccc;float: left;}
div.mainContent table,div.topTitle table,div.leftTitle table{border-collapse: collapse;}
</style>

html代码如下:

<body>
<div class="container_table" id="container_table">
<div class="topTitle" id="topTitle">
<table>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
<th>10</th>
</tr>
</table>
</div>
<div class="leftTitle" id="leftTitle">
<table>
<tr>
<td>表格</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
<td>11</td>
</tr>
</table>
</div>
<div class="mainContent" id="mainContent">
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>21</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>31</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>41</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>51</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>61</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>71</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>81</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>91</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>101</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>111</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
</table>
</div>
</div>
</body>

js代码如下:

<script>
window.onload=function(){
var oTable=document.getElementById(‘container_table‘);
var oMain=document.getElementById(‘mainContent‘);
var oTop=document.getElementById(‘topTitle‘);
var oLeft=document.getElementById(‘leftTitle‘);
oTable.onscroll=function(){
var scrolltop=oTable.scrollTop;
var scrollleft=oTable.scrollLeft;

// console.log(scrollleft,scrolltop);
oTop.style.left=oMain.offsetLeft+‘px‘;
oTop.style.top=scrolltop+‘px‘;
console.log(oMain.offsetTop-scrolltop)
oLeft.style.left=scrollleft+‘px‘;
oLeft.style.top=oMain.offsetTop-32+‘px‘;
};
};
</script>

今天只是做个测试,后续会测试响应式表格。to be continued...

时间: 2024-08-10 00:01:12

固定标题和左侧栏的表格初试的相关文章

Ubuntu 添加左侧栏 快捷启动

首先,创建一个后缀名为.desktop 的文件.格式如下: [Desktop Entry] Type=Application Name=应用名称,自已命名 Comment=注释,自己写 Icon=图标的绝对目录 Exec=要执行文件的绝对目录,文件要有执行的权限 Terminal=是否打开终端界面,true 或者是 false Categories=分类 举个例子,我添加 cknife 的快捷方式到左侧栏. cknife的所有文件都在 /opt/Cknife 目录下. 创建一个start.sh

winform用ribbonControl后如何设置窗体标题在左侧显示?

用dotnetbar的ribbonControl后,窗体标题显示在正中间,一直习惯显示标题在左侧,感觉很别扭.怎么办呢? 操作方法,拖一个label到窗体,设置其Location:x=35,y=10.好了,再试下效果.

Word中设置三栏式表格

一般期刊要求三栏式表格,我原来是选中表格,用橡皮差擦去不必要的线,但是今天发现只能查去横线,竖线一插曲格式就乱了,我想起了上图,不选“内部竖框线”就好了.

25.当屏幕缩小的时候,固定顶部的导航栏的左右滚动

当屏幕缩小的时候,固定顶部的导航栏可以左右滚动 html: <div class="search"> <a href="/index.php" ><img class="search-logo" id="search-logo" src="{$yf_theme_path}public/images/logo.png" ></a>    <div clas

visio绘制流程图-去掉默认的左侧栏(小例)

近日在使用Visio绘制流程图时,想要把左侧的默认栏去掉,找了半天,后来同事的一句话就给解决了,原来那是作为一个分隔符存在的,只要去掉就可以. 设置方法,如下图: = 只需要去掉"跨职能流程图"选项下面"显示分隔符"的勾选,即可实现,如下: 非常简单,简而记之.

中间固定两侧自适应三栏布局

上一种布局“中间自适应两侧固定” 用了三种方法去解决,这一种是不常见的布局格式,来看下解决方法,先看简单的解决 第一种:绝对定位 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> html,body{ height: 100%; padding:

固定布局(为栏设定内边距和边框)

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>title</title> <link rel="stylesheet" type="text/css" href="./normalize.css"> <script> (function() { if (!

React实现顶部固定滑动式导航栏(导航条下拉一定像素时显示原导航栏样式)

摘要 基于react的框架开发一个顶部固定滑动式的酷炫导航栏,当导航栏置顶时,导航栏沉浸在背景图片里:当鼠标滑动滚轮时,导航栏固定滑动并展示下拉样式. HTML部分 相关技术栈:react.antd.react-router.详细的技术栈应用请参考官方文档的使用说明. * 展示主页App.jsx组件代码 import React from 'react'; import './App.css'; import { Link, Route } from 'react-router-dom'; im

Ubuntu 将应用程序固定到快速启动栏

Ubuntu上没有快捷方式的说法,而通过软件中心安装的软件就有图标,并能加入到启动器上,这是因为它们有一个desktop配置文件的缘故.这些配置文件在/usr/share/applications这个文件夹下面,既然这样,随便打开一个配置文件,然后依葫芦画瓢,写了个Sublime Text的desktop文件: 1 2 3 4 5 6 7 8 9 10 #!/usr/bin/env xdg-open     [Desktop Entry]     Name=Sublime Text 2