本文和大家重点讨论一下如何使用DIV+CSS模拟表格对角线,用边框线来摸拟斜线,我们知道,如果将一个DIV的边框线设置得足够宽并定义了不同的颜色时,其相邻的两条边框线交界处就是斜线。
用DIV+CSS模拟表格对角线
有时在插入文档时,要用到表格对角线,常见的作法是用图片的方式来处理,还有就是用vml来画对角线,能不能用html+css方式来实现呢?答案是肯定的,下面我们来摸拟一个表格对角线。
原理:
用边框线来摸拟斜线,我们知道,如果将一个DIV的边框线设置得足够宽并定义了不同的颜色时,其相邻的两条边框线交界处就是斜线。知道了这个原理,我们就可以用border-left和border-top来模拟出斜线的效果。
我们先创建一个结构:
- <divclassdivclass="out">
- <b>类别</b>
- <em>姓名</em>
- </div>
我们用<divclass="out">作为对角线的容器,我们来设置斜线样式,关键代码如下:
- .out{
- border-top:40px#D6D3D6solid;/*上边框宽度等于表格***行行高*/
- width:0px;/*让容器宽度为0*/
- height:0px;/*让容器高度为0*/
- border-left:80px#BDBABDsolid;/*左边框宽度等于表格***行***格宽度*/
- position:relative;/*让里面的两个子容器绝对定位*/
- }
<b>和<em>两个标签来设置两个分类,分别将它们设置为块状结构display:block;清除其默认的字体样式font-style:normal;因其父容器设置了相对定位,所以设置其为绝对定位,这样可以将它偏移到你想指定的位置了。
- b{font-style:normal;display:block;
- position:absolute;top:-40px;left:-40px;width:35px;}
- em{font-style:normal;display:block;
- position:absolute;top:-25px;left:-70px;width:55x;}
这样一个斜线对角线就模拟出来了。知道了原理,你可以变成很多有趣的东西出来,祝你好运!
这种对角线模拟法也有缺点:
◆宽高度必须是已知的
◆宽高的长度不能差得太大,你可以试试将宽度拉得比高度长好几倍,看看效果。
◆还有就是斜线条不能设置颜色。
另:以上代码只测试了IE6和ff3,其它浏览器未做测试,请朋友们测试一下。#p#
完整的代码:
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml">
- <head>
- <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
- <title>用div+css模拟表格对角线</title>
- <styletypestyletype="text/css">
- *{padding:0;margin:0;}
- caption{font-size:14px;font-weight:bold;}
- table{border-collapse:collapse;border:1px#525152solid;
- width:50%;margin:0auto;margin-top:100px;}
- th,td{border:1px#525152solid;text-align:center;
- font-size:12px;line-height:30px;background:#C6C7C6;}
- th{background:#D6D3D6;}
- /*模拟对角线*/
- .out{
- border-top:40px#D6D3D6solid;/*上边框宽度等于表格***行行高*/
- width:0px;/*让容器宽度为0*/
- height:0px;/*让容器高度为0*/
- border-left:80px#BDBABDsolid;/*左边框宽度等于表格***行***格宽度*/
- position:relative;/*让里面的两个子容器绝对定位*/
- }
- b{font-style:normal;display:block;position:absolute;
- top:-40px;left:-40px;width:35px;}
- em{font-style:normal;display:block;position:absolute;
- top:-25px;left:-70px;width:55x;}
- .t1{background:#BDBABD;}
- </style>
- </head>
- <body>
- <table>
- <caption>用div+css模拟表格对角线</caption>
- <tr>
- <thstylethstyle="width:80px;">
- <divclassdivclass="out">
- <b>类别</b>
- <em>姓名</em>
- </div>
- </th>
- <th>年级</th>
- <th>班级</th>
- <th>成绩</th>
- <th>班级均分</th>
- </tr>
- <tr>
- <tdclasstdclass="t1">张三</td>
- <td>三</td>
- <td>2</td>
- <td>62</td>
- <td>61</td>
- </tr>
- <tr>
- <tdclasstdclass="t1">李四</td>
- <td>三</td>
- <td>1</td>
- <td>48</td>
- <td>67</td>
- </tr>
- <tr>
- <tdclasstdclass="t1">王五</td>
- <td>三</td>
- <td>5</td>
- <td>79</td>
- <td>63</td>
- </tr>
- <tr>
- <tdclasstdclass="t1">赵六</td>
- <td>三</td>
- <td>4</td>
- <td>89</td>
- <td>66</td>
- </tr>
- </table>
- </body>
- </html>
【编辑推荐】
- DIV滚动条属性及样式设置方式
- JavaScript动态创建div属性和样式
- SPAN元素和DIV元素的区别
- CSS2.0中page-break-after属性用法
- 探究CSS中border:none;与border:0;的区别