如何制作一个响应式的HTML5表格

如何制作一个响应式的HTML5表格,第1张

前段时间在网上看到了一个老外写的一个HTML5响应式表格效果,它的CSS代码用SASS写的,有许多重复的data属性。我们这里改进一下他的代码,解决一下他写的不好的地方。要看到本例的响应式表格效果,浏览器要缩放到小于600像素的大小。HTML结构如下:

<tableid="miyazaki">

<caption>The Films of Miyazaki</caption>

<thead>

<tr><th>Film<th>Year<th>Honor

<tbody>

<tr>

<tddata-th="Film">My Neighbor Totoro

<tddata-th="Year">1988

<tddata-th="Honor">Blue Ribbon Award (Special)

<tr>

<tddata-th="Film">Princess Mononoke

<tddata-th="Year">1997

<tddata-th="Honor">Nebula Award (Best Script)

<tr>

<tddata-th="Film">Spirited Away

<tddata-th="Year">2001

<tddata-th="Honor">Academy Award (Best Animated Feature)

<tr>

<tddata-th="Film">Howl’s Moving Castle

<tddata-th="Year">2004

<tddata-th="Honor">Hollywood Film Festival (Animation OTY)

</table>

注意代码中的data属性,每一个单元格的data属性都与表格的header相对应。

CSS样式

表格基本的CSS样式如下:

table#miyazakicaption{

font-size:2remcolor:#444

margin:1rem

background-image:url(miyazaki.png),url(miyazaki2.png)

background-size: contain

background-repeat:no-repeat

background-position:centerleft,centerright

}

table#miyazaki {

border-collapse:collapse

font-family: Agenda-Lightfont-weight:100

background:#333color:#fff

text-rendering:optimizeLegibility

border-radius:5px

}

table#miyazaki thead th {font-weight:600}

table#miyazaki thead th, table#miyazaki tbody td {

padding: .8remfont-size:1.4rem

}

table#miyazaki tbody td {

padding: .8remfont-size:1.4rem

color:#444background:#eee

}

table#miyazaki tbody tr:not(:last-child) {

border-top:1pxsolid#ddd

border-bottom:1pxsolid#ddd

}

下面是响应式表格的CSS代码:

@mediascreenand (max-width:600px) {

table#miyazakicaption{background-image:none}

table#miyazaki thead {display:none}

table#miyazaki tbody td {display:blockpadding: .6rem}

table#miyazaki tbody tr td:first-child {background:#333color:#fff}

table#miyazaki tbody td:before {

content:attr(data-th)font-weight:bold

display:inline-blockwidth:6rem

}

}

media query代码中隐藏表格的头部单元,并且将每一个单元格的data-th作为标签显示在单元格内容的前面。每一行的第一个单元格都设置了特别的背景色和前景色,使之更为清晰。

HTML <ul> 元素 ( 或 HTML 无序列表元素) 代表多项的无序列表,即无数值排序项的集合,且它们在列表中的顺序是没有意义的。通常情况下,无序列表项的头部可以是几种形式,如一个点,一个圆形或方形。头部的风格并不是在页面的 HTML 描述定义, 但在其相关的 CSS 可以用 list-style-type 属性。 ul 标签需要和 li 标签结合使用。

属性说明:

HTML <ol> 元素 表示多个有序列表项,通常渲染为有带编号的列表。

属性说明:

HTML 元素 (或 HTML 描述列表元素)是一个包含术语定义以及描述的列表,通常用于展示词汇表或者元数据 ( 键-值对列表 )。

HTML 的 table 元素表示表格数据 — 即通过二维数据表表示的信息。

?>属性:(写在开头标签的里面的单词就叫做该元素的属性)

浏览器运行效果如下:

把上面表格中数字为 1 和 2 的单元格进行合并,数字为 3 和 6 的单元格进行合并。

数字为 1 和 2 的单元格分别在不同的列中所以是进行了列合并,因为只需要合并两个单元格所以 colspan 的值为 2, 列合并只需要在数字为 1 的单元格中添加属性 colspan,然后把数字为 2 的单元格删除,列合并就完成了。

数字为 1 和 2 的单元格分别在不同的行中所以是进行了行合并,因为只需要合并两个单元格所以 rowspan 的值为 2, 行合并只需要在数字为 3 的单元格中添加属性 rowspan,然后把数字为 6 的单元格删除,行合并就完成了。

浏览器运行效果如下:

图表的背景一般是精心设计的它有一定的梯度、网格线、号码标签和月份名称等等,如果直接通过JavaScript进行绘制可能需数十行或上百行的代码。但是如果我们直接通过Canvas直接创建一个背景图。我们只需要在其他的软件如PS上绘制好一个背景图,然后加载到Canvas上就可以了。

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>绘制图表</title>

</head>

<body>

<div id="result-stub" class="well hidden">

<canvas id="canvas" width="345" height="345">

<p>你的浏览器不支持canvas元素</p>

</canvas>

</div>

<script>

//   1、要绘制图表首先我们要获取到canvas对象以及具有图表背景的图片对象。

var

canvas = document.getElementById('canvas'),

context = null

context = canvas.getContext('2d')

var img = new Image()

img.src ='chart-background.png'//这里是一张具有图表背景的图片

//    2、绘制一个具有图表背景的图片后再根据要绘制的曲线图各个点在canvas是中的坐标绘制直线。

img.onload = function() {

//绘制图片

context.drawImage(img, 0, 0)

//绘制直线

context.beginPath()

context.moveTo(70, 105)

context.lineTo(105, 132)

context.lineTo(142, 250)

context.lineTo(176, 175)

context.lineTo(212, 145)

context.lineTo(245, 197)

context.lineTo(280, 90)

context.stroke()

}

</script>

<script src="jquery.js"></script>

</body>

</html>

3、本示例的最终绘制效果如下:这样一个曲线图表就绘制出来的,其他的图表也可以用类似的方法进行绘制。

这些都是有关于HTML5新特性的一些应用。给你推荐一个教程网站秒秒学,该网站上有关于HTML5新特性的讲解。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7006795.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-31
下一篇2023-03-31

发表评论

登录后才能评论

评论列表(0条)

    保存