CSS表格对角线的实现

CSS表格对角线的实现
 管理员  2010-09-07 08:23  3457  0条评论  收藏

表格对角线就是我们平常看到的表格单元格中的斜线对角线,如何用CSS来实现?以下是实现方法。

当网页中DIV的边框线设置得足够宽,并定义了不同的颜色时,其相邻的两条边框线交界处就是斜线,所以我们就可以利用border-left和border-top来实现对角线的效果。

先看下面结构:

<div class="out">
  <b>类别</b>
  <em>姓名</em>
</div>
用<div class="out">作为对角线的容器,再来设置斜线样式,CSS代码如下: 

.out

   border-top:40px #D6D3D6 solid;/*上边框宽度等于表格第一行行高*/ 
   width:0px;/*让容器宽度为0*/ 
   height:0px;/*让容器高度为0*/ 
   border-left:80px #BDBABD solid;/*左边框宽度等于表格第一行第一格宽度*/        
   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;}

这样一个斜线对角线就模拟出来了。

这种对角线模拟法也有缺点: 
1.宽高度必须是已知的  
2.宽高的长度不能差得太大,你可以试试将宽度拉得比高度长好几倍,看看效果。
3.还有就是斜线条不能设置颜色。

通过上面的介绍相信实现表格对角线已经不成问题了。看以下例子:

<style type="text/css">
*{padding:0;margin:0;}
caption{font-size:14px;font-weight:bold;}
table{ border-collapse:collapse;border:1px #525152 solid;width:50%;margin:0 auto;margin-top:100px;}
th,td{border:1px #525152 solid;text-align:center;font-size:12px;line-height:30px;background:#C6C7C6;}
th{background:#D6D3D6;}
/*模拟对角线*/
.out{
   border-top:40px #D6D3D6 solid;/*上边框宽度等于表格第一行行高*/
   width:0px;/*让容器宽度为0*/
   height:0px;/*让容器高度为0*/
   border-left:80px #BDBABD solid;/*左边框宽度等于表格第一行第一格宽度*/ 
   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>
<table>
  <caption>用div+css模拟表格对角线</caption>
 <tr>
  <th style="width:80px;">
   <div class="out">
    <b>类别</b>
    <em>姓名</em>
   </div>
  </th>
  <th>年级</th>
  <th>班级</th>
  <th>成绩</th>
  <th>班级均分</th>
 </tr>
 <tr><td class="t1">张三</td><td>三</td><td>2</td><td>62</td><td>61</td></tr>
 <tr><td class="t1">李四</td><td>三</td><td>1</td><td>48</td><td>67</td></tr>
 <tr><td class="t1">王五</td><td>三</td><td>5</td><td>79</td><td>63</td></tr>
 <tr><td class="t1">赵六</td><td>三</td><td>4</td><td>89</td><td>66</td></tr>
</table>