Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1335|回复: 0

[默认分类] 变化多端 – 多种纯CSS的HTML表格设计

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-8 16:49:54 | 显示全部楼层 |阅读模式

    介绍

    HTML中,Table节点由于其层层嵌套的节点结构,一度名声很臭,且一度被呼吁用DIV+CSS取而代之。但在实际项目开发中,一碰到规整的数据显示,不知不觉又会用起它。可见其生命力之顽强。
    这儿就探讨下几种不同的通过CSS实现的Table设计 。通过javaScript渲染的效果不在此文讨论范围。表格最终渲染效果在Firefox 36.0或者Safari 8.0.7下实现。很可惜不是所有效果都能同时在两个浏览器中出现。
    要说明的是,本文大部分内容可以说是对于 Dudley Storey的博文”CSS Design Patterns For HTML5 Tables”中表格实现的一些整理,偷懒的原因,使用的样例表格也是来自其中。 有兴趣的童鞋可以逛逛他的博客,或者看看他出的书”Pro CSS3 Animation”(不知道有没有中译本?)。当然根据思路后面也增加了一些本人的实现。
      
    表格的HTML代码
    没有特别研究过下面使用的HTML元素及属性是否符合HTML5规范,但设置doctype为支持HTML5的形式。

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. </head>
    6. <body>
    7.         <table>
    8.                 <caption>American Film Institute’s Top Five Films</caption>
    9.                 <thead>
    10.                         <tr>
    11.                                 <th>Position
    12.                                 <th>Movie
    13.                                 <th>Year of Release
    14.                 </thead>
    15.                 <tbody>
    16.                         <tr>
    17.                                 <td>1
    18.                                 <td>Citizen Kane
    19.                                 <td>1941
    20.                         <tr>
    21.                                 <td>2
    22.                                 <td>The Godfather
    23.                                 <td>1972
    24.                         <tr>
    25.                                 <td>3
    26.                                 <td>Casablanca
    27.                                 <td>1942
    28.                         <tr>
    29.                                 <td>4
    30.                                 <td>Raging Bull
    31.                                 <td>1980
    32.                         <tr>
    33.                                 <td>5
    34.                                 <td>Singin’ In The Rain
    35.                                 <td>1952
    36.                 </tbody>
    37.         </table>
    38. </body>
    39. </html>
    复制代码




    1.    传统网格状表格
    效果

    CSS代码
    1. table {
    2.      border-collapse: collapse;
    3.      font-family: Futura, Arial, sans-serif;
    4. }
    5. caption {
    6.      font-size: larger;
    7.      margin: 1em auto;
    8. }
    9. th,td {
    10.      padding: .65em;
    11. }
    12. th {
    13.      background: #555 nonerepeat scroll 0 0;
    14.    border: 1px solid #777;
    15.    color: #fff;
    16. }
    17. td {
    18.      border: 1px solid#777;
    19. }
    复制代码




    说明
    几个要注意的地方:
    - 当渲染网格状表格时,往往说明对每个格子要加上边框。因此对于<th>, <td>,都要加上border属性。可想而知,如果这样的话,每个格子之间会出现两条边框。而我们又希望它们之间的边框只有一条,因此需要设置<table>的border-collapse属性为collapse。
    - 表头和表格内容不一样,需要单独渲染。这儿通过设置<th>的background、color属性改变了表头的背景色和文字颜色。
      
    2.    斑马条纹表格
    效果
      
    CSS代码
    在上面CSS基础上增加以下代码:
    1. tbody tr:nth-child(odd) {
    2.      background: #ccc;
    3. }
    复制代码


    说明
    带有条纹的表格也非常经典。当表格行数较多时,这样的表格比传统网格状表格更能看得清楚。这个效果就是通过在<tr>上调用CSS选择器nth-child(odd)完成的。这儿的传入参数可以是一个表达式(an+b),或者build-in的函数,比如odd表示奇数(2n+1),而even是偶数(2n)。
      
    3.    圆角表格
    效果

    CSS代码
    1. table {
    2.      border-collapse: collapse;
    3.      font-family: Futura, Arial, sans-serif;
    4. }
    5. caption {
    6.      font-size: larger;
    7.      margin: 1em auto;
    8. }
    9. th,td {
    10.      padding: .65em;
    11. }
    12. th {
    13.      background: #555 nonerepeat scroll 0 0;
    14.    /* border: 1px solid #777; */
    15.    color: #fff;
    16. }
    17. td {
    18.      /* border: 1px solid #777; */
    19. }
    20. tbody tr:nth-child(odd) {
    21.      background: #ccc;
    22. }
    23. th:first-child {
    24.      border-radius: 9px 0 0 0;
    25. }
    26. th:last-child {
    27.      border-radius: 0 9px 0 0;
    28. }
    29. tr:last-child td:first-child {
    30.      border-radius: 0 0 0 9px;
    31. }
    32. tr:last-child td:last-child {
    33.      border-radius: 0 0 9px 0;
    34. }
    复制代码




    说明
    从最后面几个CSS 来看,圆角主要通过border-radius属性实现。选择的正是表格四个角上的四个<th>/<td>元素。不幸的是,在Firefox中只出现了上面两个圆角效果。Safari中则都渲染出来了。
    而border-radius属性和border属性并不捆绑,因此要做圆角时,需要将原来的网格线取消。
      
    4.    线型表格
    效果
      
    CSS代码
    1. table {
    2.      border-collapse: collapse;
    3.      font-family: Futura, Arial, sans-serif;
    4. }
    5. caption {
    6.      font-size: larger;
    7.      margin: 1em auto;
    8. }
    9. th,td {
    10.      padding: .65em;
    11. }
    12. th,td {
    13.      border-bottom: 1px solid #ddd;
    14.    border-top: 1px solid #ddd;
    15.    text-align: center;
    16. }
    复制代码




    说明
    这也是非常常用的一种表格设计,多用在展示科学结果上。很多科学论文中往往会用这样的设计方式:简洁、明了。实现的原理也很简单,将原来<th>/<td>上的border属性拆分开来,通过border-top和border-bottom只渲染上下的网格线。当然为了格子之间不出现两条线,每个格子的线还要连到一起,务必设置<table>的border-collapse属性为collapse。
    5.    表格行上的立体悬停效果
    效果
      
    CSS代码
    在上面CSS基础上增加以下代码:
    1. tbody tr:hover {
    2.      background: linear-gradient(#fff,#aaa);
    3.      font-size: 17px;
    4. }
    复制代码




    说明
    总的来说,表格是一种二维呈现,HTML中产生的表格看起来就像和纸上画的一样。但其实它也能实现一些立体的效果,就像这儿展示的,当鼠标悬停在某一行上时,该行突出在渐变的灰色背景上,字体微微变大,有一种被放大的效果。这是通过在<tr>上加上hover选择器,并设置了background属性值为inear-gradient(#fff, #aaa),并增加了font-size。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-23 21:01 , Processed in 0.417085 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表