用CSS实现柱状图(Bar Graph)的方法(四)—table实现复杂柱状图(3)
作者:dudo 来源:dudo博客 发布时间:2008-05-28 12:55:00
三、接下来,我们要按照季度分类
根据XHTML中的设计,我们使用<tr>来代表季度,<td>代表南北区域,<th>代表<td>中内容属于哪个<tr>。同时我们还注意到,我们不能直接为<tr>设定边框样式,因为它没有边框(只有<table>、<td>、<th>等有)。不过我们可以为<th>设置一个边框:
table#q-graph tbody tr,table#q-graph tbody th {
position:absolute;
width:150px;
height:296px;
vertical-align: top;
bottom:0;
border-right:1px dotted #41a3e2;
}
这段代码没有什么特别要说明的地方,如果你对选择符(逗号“,”空格等)的应该还不是很了解,请查看相关文章。
现在四个<tr>元素都重合在了一起,我们使用绝对定位把它们在同一行上分布:
tr#q1 {left:0;}
tr#q2 {left:149px;}
tr#q3 {left:298px;}
tr#q4 {left:447px;border-right:none;}
查看演示页面:Bar-Graph-2.htm
四、进一步设定<td>样式
前行让所有的单元格底部对齐:
td.bar{
position:absolute;
text-align:center;
width:34px;
bottom:0;
z-index:2;
}
然后设置背景和位置:
td.north {
left:36px;
background:#ddd url(bars_v.gif) no-repeat 0 0;
}
td.south {
left:80px;
background:#ddd url(bars_v.gif) no-repeat -34px 0;
}
查看演示页面:Bar-Graph-3.htm
五、对于<thead>的处理
<thead>是用来看作图例的,我们只需要把它放在表格一侧即可。为了让它们也有相应的背景,我们可以在上面这段css代码的td.north和td.south前面分别加上 th.north和th.south,有半角逗号(,)隔开即可。下面使用CSS来改变<thead>的位置:
table#q-graph thead tr {
bottom:auto;
left:100%;
margin:-2.5em 0pt 0pt 5em;
top:50%;
position:absolute;
}
table#q-graph thead th {
width:34px;
position:absolute;
left:0;
height:auto;
color:#fff;
}
table#q-graph thead th.north {top:30px;}
把<thead>移到一侧,我们使用也是绝对定位,设置left:100%,如果不想使它紧挨表格,可以再通过margin来设置。当然也可以直接使用left:105%等来设置;bottom:auto;是取消从父元素继承来的bottom:0的属性。
top:50%是用来设置垂直居中的。一般来说,绝对定位中使用top:50%是使上边缘正好处于垂直居中的位置,我们还要使用负的margin值来上移一半的高度使整个元素垂直居中。这也是我们在页面布局经常用到的一种元素居中方法;
至此我们柱状图效果基本完成了。但是在Internet Explrore中,我们发现柱状图的底部并没有和表格实际对齐,这是因为在IE中默认表格样式中边框和内容之间留有一定的空白,我们可以通过设定<table>的CSS属性border-spacing:0来实现,不过可惜的是Internet Explorer中并不起作用,所以我们还要直接为<table>元素增加一个cellspacing的属性,即<table id="q-graph" cellspacing="0">...</table>
查看演示页面:Bar-Graph-4.htm


猜你喜欢
- 在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息。妙用1request
- 一些小技巧1. 如何查出效率低的语句?在MySQL下,在启动参数中设置 --log-slow-queries=[文件名],就可以在指定的日志
- <script>function getJsFile(url, callBack){
- 多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用
- 大家好,之前分享过很多关于 Pandas 的文章,今天我给大家分享5个小而美的 Pandas 实战案例。内容主要分为:如何自行模拟数据多种数
- SQL Server中的集合运算包括UNION(合并),EXCEPT(差集)和INTERSECT(相交)三种。集合运算的基本使用1.UNIO
- M2广义货币供应量:流通于银行体系之外的现金加上企业存款、居民储蓄存款以及其他存款,它包括了一切可能成为现实购买力的货币形式,通常反映的是社
- 本文实例为大家分享了python实现ANN的具体代码,供大家参考,具体内容如下1.简要介绍神经网络神经网络是具有适应性的简单单元组成的广泛并
- 在go语言的源码中,会发现很多,代码只有函数签名,却看不到函数体,如:// src/os/proc.go 68行func runtime_b
- 很多时候,我们执行页面上某个URL请求的时候,需要有等待的时间。如果是直接的页面跳转,浏览器会有缓冲进度展示,但是如果是AJAX,我觉得应该
- 如何用ASP输出HTML文件?<!--#include file="top.inc"--><
- 对于一个多维数组(以二维数组为例),经常需要获取到其中的一列,比如有几条用户数据,是一个二维数组,现在需要获取到这几个用户的名字,可以有多种
- 适配竖屏横向尺度,禁止出现横向滚屏常规QVGA机型竖屏状态下,14号字体,单行仅显示13.5个字。资讯频道的新闻短标题要控制在13字以内才能
- 最近老师布置了个作业,爬取豆瓣top250的电影信息。按照套路,自然是先去看看源代码了,一看,基本的信息竟然都有,心想这可省事多了。简单分析
- 前言keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。在组件切换过程中将状态保留在内
- 变量什么是变量?变量是在程序运行时,能存储计算结果或能表示值得抽象概念。简单地说,变量就是在程序运行时,记录数据用的变量定义格式:变量名称=
- SQL Server TEXT、NTEXT字段拆分的问题引用的内容:SET NOCOUNT ON CREATE 
- 前言做数据分析的时候通常我们并不是对真个excel文件进行操作,换言之,每一列都是一个特征,我们需要针对分析。遇到这类问题的时候,我们通常想
- 本文实例讲述了Python装饰器。分享给大家供大家参考。具体分析如下:这是在Python学习小组上介绍的内容,现学现卖、多练习是好的学习方式
- delattr 函数用于删除属性。delattr(x, 'foobar') 相等于 del x.foobar。语法setat