添加的内容 删除的内容
SolidBlock(留言 | 贡献) 无编辑摘要 |
无编辑摘要 |
||
(未显示1个用户的6个中间版本) | |||
第1行: | 第1行: | ||
{{NoteTA|G1=IT|G2=MediaWiki}} |
{{NoteTA|G1=IT|G2=MediaWiki}} |
||
'''表格'''({{lang-en|'''table'''}})是在页面中非常常见的 |
'''表格'''({{lang-en|'''table'''}})是一种在页面中非常常见的内容形式,用于呈现以二维形式组织的数据。表格有专门的HTML语法,在MediaWiki中,wikitext也可以用来产生表格。在编辑源代码时,编辑工具栏中的[[File:OOjs UI icon table.svg|alt=]]表格按钮可以很方便地创建表格,你也可以手动输入wikitext语法来创建表格。可视化编辑器也可以创建表格,并且能够很方便地合并单元格、插入或删除行列。本页主要介绍表格的wikitext语法,不多介绍在可视化编辑器中的用法。 |
||
需要注意的是,不要滥用表格。表格一般不应当用来排版,更不应该添加花里胡哨的样式。在求闻百科中使用表格时,须遵守[[Qiuwen:无障碍访问]]方针。 |
需要注意的是,不要滥用表格。表格一般不应当用来排版,更不应该添加花里胡哨的样式。在求闻百科中使用表格时,须遵守[[Qiuwen:无障碍访问]]方针。 |
||
第186行: | 第186行: | ||
=== 简单的宽度和高度 === |
=== 简单的宽度和高度 === |
||
下面这个表格的宽度为80%,这是一个相对值,意味着表格将占用容器宽度的80%。其中,第一列的宽度为2em,这是一个绝对值,无论容器的大小是多少,第1列的宽度都是 |
下面这个表格的宽度为80%,这是一个相对值,意味着表格将占用容器宽度的80%。其中,第一列的宽度为2em,这是一个绝对值,无论容器的大小是多少,第1列的宽度都是3em。不难推断出,第2列将占用表格的剩余的空间。 |
||
-{}-{| class="wikitable" <mark>style="width: 80%"</mark> |
-{}-{| class="wikitable" <mark>style="width: 80%"</mark> |
||
第192行: | 第192行: | ||
! 标题2 |
! 标题2 |
||
|- |
|- |
||
| <mark>style="width: |
| <mark>style="width:3em" |</mark> 1行1列 |
||
| 1行2列 |
| 1行2列 |
||
|- |
|- |
||
第203行: | 第203行: | ||
! 标题2 |
! 标题2 |
||
|- |
|- |
||
| style="width: |
| style="width:3em" | 1行1列 |
||
| 1行2列 |
| 1行2列 |
||
|- |
|- |
||
第266行: | 第266行: | ||
下面这个表格的宽度为<code>calc(100% - 2em)</code>。这个很好理解,这个宽度是相对宽度和绝对宽度的混合,其宽度是容器宽度减去2em。 |
下面这个表格的宽度为<code>calc(100% - 2em)</code>。这个很好理解,这个宽度是相对宽度和绝对宽度的混合,其宽度是容器宽度减去2em。 |
||
-{}-{| class="wikitable" <mark>style="calc(100% |
-{}-{| class="wikitable" <mark>style="width: calc(100% - 2em)"</mark> |
||
|+ 标题文本 |
|+ 标题文本 |
||
|- |
|- |
||
第276行: | 第276行: | ||
|} |
|} |
||
{| class="wikitable" style="calc(100% |
{| class="wikitable" style="width: calc(100% - 2em)" |
||
|+ 标题文本 |
|+ 标题文本 |
||
|- |
|- |
||
第520行: | 第520行: | ||
<code>border-left</code>表示左侧的边框,它包括了<code>border-left-color</code>、<code>border-left-width</code>、<code>border-left-style</code>等属性。同样地,还有<code>border-top</code>、<code>border-right</code>和<code>border-bottom</code>,分别表示上侧、右侧和下侧的边框。 |
<code>border-left</code>表示左侧的边框,它包括了<code>border-left-color</code>、<code>border-left-width</code>、<code>border-left-style</code>等属性。同样地,还有<code>border-top</code>、<code>border-right</code>和<code>border-bottom</code>,分别表示上侧、右侧和下侧的边框。 |
||
此外,也可以使用<code>border-block</code>(包含<code>border-block-start</code>和<code>border-block-end</code>)和<code>border-inline</code>(包含<code>border-inline-start</code>、<code>border-inline-end</code>),表示当前书写方向的块状或者行内元素 |
此外,也可以使用<code>border-block</code>(包含<code>border-block-start</code>和<code>border-block-end</code>)和<code>border-inline</code>(包含<code>border-inline-start</code>、<code>border-inline-end</code>),表示当前书写方向的块状或者行内元素的开始或者结束方向的边框。在默认的书写模式下,块状元素是从上到下,行内元素是从左到右,因此<code>border-block-start</code>相当于<code>border-top</code>,<code>border-block-end</code>相当于<code>border-bottom</code>,<code>border-inline-start</code>相当于<code>border-left</code>,<code>border-inline-end</code>相当于<code>border-right</code>。 |
||
这个例子分别为表格定义了四个方向上的边框,上、右、下、左方向的边框分别为红色、绿色、蓝色和黑色,粗细和边框类似各不相同。 |
这个例子分别为表格定义了四个方向上的边框,上、右、下、左方向的边框分别为红色、绿色、蓝色和黑色,粗细和边框类似各不相同。 |
||
第616行: | 第616行: | ||
# 不要使用<code>bgcolor</code>等HTML属性来为表格设置背景颜色。 |
# 不要使用<code>bgcolor</code>等HTML属性来为表格设置背景颜色。 |
||
}} |
}} |
||
== 无障碍考虑 == |
|||
{{参见|Qiuwen:无障碍访问}} |
|||
在使用表格时,须考虑表格的无障碍({{lang-en|accessibility}}),确保表格在不同的显示设备上也能够正常地显示,同时在辅助技术(例如盲文)中也可以正常地呈现。 |
|||
=== 良好的表格标题语义 === |
|||
表示表格标题时,应该使用专门的表格标题(以<code>!</code>开头的内容),而不是使用手动加粗的方式来使它看上去像个标题。这是因为,表格标题除了具有显示样式之外,还能够表示这是一个表格标题,从样式上能够做到形式统一,同时也有助于辅助技术对表格的解析。 |
|||
'''错误使用表格标题的例子:''' |
|||
-{}-{| class="wikitable" |
|||
|- <mark>style="text-align: center"</mark> |
|||
<mark>| <nowiki>'''</nowiki>标题文本<nowiki>''' || '''</nowiki>标题文本<nowiki>''' || '''</nowiki>标题文本<nowiki>'''</nowiki></mark> |
|||
|- |
|||
| 示例 || 示例 || 示例 |
|||
|- |
|||
| 示例 || 示例 || 示例 |
|||
|} |
|||
'''正确使用表格标题的例子:''' |
|||
-{}-{| class="wikitable" |
|||
|- |
|||
<mark>! 标题文本 !! 标题文本 !! 标题文本</mark> |
|||
|- |
|||
| 示例 || 示例 || 示例 |
|||
|- |
|||
| 示例 || 示例 || 示例 |
|||
|} |
|||
此外,还可以添加<code>scope="col"</code>或<code>scope="row"</code>属性来表示这是一个列标题或者行标题,这样辅助技术在使用表格时,能够更好的理解。 |
|||
-{}-{| class="wikitable" |
|||
|- |
|||
! |
|||
! <mark>scope=col</mark> | 列标题1 |
|||
! <mark>scope=col</mark> | 列标题2 |
|||
|- |
|||
! <mark>scope=row</mark> | 行标题1 |
|||
| 示例 |
|||
| 示例 |
|||
|- |
|||
! <mark>scope=row</mark> | 行标题2 |
|||
| 示例 |
|||
| 示例 |
|||
|} |
|||
{| class="wikitable" |
|||
|- |
|||
! |
|||
! scope=col | 列标题1 |
|||
! scope=col | 列标题2 |
|||
|- |
|||
! scope=row | 行标题1 |
|||
| 示例 |
|||
| 示例 |
|||
|- |
|||
! scope=row | 行标题2 |
|||
| 示例 |
|||
| 示例 |
|||
|} |
|||
=== 合适的内容 === |
|||
{{参见|Qiuwen:格式手册/表格}} |
|||
表格通常是用来呈现数据的,并不适合用来去呈现大量的内容。如果需要呈现大量内容的,最好的办法是直接使用文字来表述。而且,如果表格的列数比较多,而单元格的内容也比较多的话,那么每个单元格需要显示大量的内容但又分配了很少的空间,这对于内容的显示也是不利的。 |
|||
=== 表格并非用来排版的 === |
|||
很多人可能会喜欢使用表格来对内容进行排版。例如,如果要显示左右两侧的内容,那么他可能会这么写: |
|||
{{编辑演示|result= |
|||
-{}-{{(!}} |
|||
{{!}} {{#invoke:string|rep|左边的内容。|4}} |
|||
{{!}} {{#invoke:string|rep|右边的内容。|7}} |
|||
{{!)}} |
|||
}} |
|||
这样做的缺点就是:表格自身已经预设有边距、衬距等属性,这会对内容的排版造成不利的影响。此外,表格会对辅助工具呈现为表格,对于使用辅助工具的用户来说,这就有可能造成困惑。对内容进行排版的最好的方式,是使用CSS的flex和grid布局,这两种布局都非常强大且非常灵活。使用CSS来模拟表格也是一种选择,但是这样子也存在一些限制。 |
|||
{{编辑演示|result=-{}- |
|||
<div style="display: flex"> |
|||
<div style="flex: 1">{{#invoke:string|rep|左边的内容。|4}}</div> |
|||
<div style="flex: 1">{{#invoke:string|rep|右边的内容。|7}}</div> |
|||
</div>}} |
|||
{{编辑演示|result=-{}- |
|||
<div style="display: grid; grid-auto-flow: column"> |
|||
<div>{{#invoke:string|rep|左边的内容。|4}}</div> |
|||
<div>{{#invoke:string|rep|右边的内容。|7}}</div> |
|||
</div>}} |
|||
{{编辑演示|result=-{}- |
|||
<div style="display: table-row"> |
|||
<div style="display: table-cell">{{#invoke:string|rep|左边的内容。|4}}</div> |
|||
<div style="display: table-cell">{{#invoke:string|rep|右边的内容。|7}}</div> |
|||
</div>}} |
|||
如果确实需要用来排版,请给表格元素添加<code>role="presentation"</code>,使得辅助工具将其识别为普通的内容,而非将其作为表格看待。从外观上,这个和前面的例子没有区别,但是如果启用辅助工具,例如屏幕阅读器,那么这些内容就会被直接阅读,而非作为表格阅读。 |
|||
{{编辑演示|result= |
|||
-{}-{{(!}} role="presentation" |
|||
{{!}} {{#invoke:string|rep|左边的内容。|4}} |
|||
{{!}} {{#invoke:string|rep|右边的内容。|7}} |
|||
{{!)}} |
|||
}} |
|||
=== 不使用过时的属性 === |
|||
在旧版本的HTML中,表格支持一些HTML属性,以支持控制内容的格式。在当前版本的HTML规范中,这种方式虽然仍支持,但是已经是过时了。因此,请不要再使用任何过时的语法。所有的样式都应该使用<code>style</code>属性来控制。请看这个示例: |
|||
<div style="display: flex; gap: 1em"> |
|||
<div style="flex: 1">'''错误的写法:''' |
|||
-{}-{| class="wikitable" |
|||
! 标题文本 !! <mark>width="250"</mark> 标题文本 |
|||
|- <mark>bgcolor="red"</mark> |
|||
| <mark>align="center" valign="top"</mark> | 示例 || 示例 |
|||
|- |
|||
| 示例 || <mark>border="2" bordercolor="navy" bgcolor="cyan"</mark> | 示例 |
|||
|} |
|||
</div> |
|||
<div style="flex: 1">'''正确的写法:''' |
|||
-{}-{| class="wikitable" |
|||
! 标题文本 !! <mark>style="width:250px"</mark> 标题文本 |
|||
|- <mark>style="background-color: red"</mark> |
|||
| <mark>style="text-align: center; vertical-align: top"</mark> | 示例 || 示例 |
|||
|- |
|||
| 示例 || <mark>border: 2px navy solid; background-color: cyan</mark> | 示例 |
|||
|} |
|||
</div> |
|||
</div> |
|||
以下表格列举了各过时HTML属性与CSS属性之间的关系,请在编辑时,将表格中的过时属性替换为符合HTML规范的CSS属性(有点属性虽然有效,但事实上是没有必要使用的,可以直接移除)。 |
|||
{| class="wikitable" |
|||
|+ 对照表 |
|||
! 过时的HTML属性 !! 规范的CSS属性 !! 过时HTML属性示例 !! 规范CSS属性示例 !! 说明 |
|||
|- |
|||
| <code>width</code><br><code>height</code> |
|||
| <code>width</code><br><code>height</code> |
|||
| <code>width="200" height="80"</code> |
|||
| <code>style="width: 200px; height: 80px</code> |
|||
| {{NoteTag|name=length|HTML属性中的单位默认为像素(px),而在CSS属性中,长度值除了零值外必须指定单位,否则为无效值。}} |
|||
|- |
|||
| <code>align</code><br><code>valign</code> |
|||
| <code>text-align</code><br><code>vertical-align</code> |
|||
| <code>align="left" valign="top"</code> |
|||
| <code>style="text-align: left; vertical-align: top"</code> |
|||
| |
|||
|- |
|||
| <code>bgcolor</code> |
|||
| <code>background-color</code> |
|||
| <code>bgcolor="red"</code><br><code>bgcolor="FF0000"</code> |
|||
| <code>style="background-color: red"</code><br><code>style="background-color: #FF0000"</code> |
|||
| {{NoteTag|name=color|CSS属性中的十六进制颜色值必须带有井号,否则无效。}} |
|||
|- |
|||
| <code>border</code><br><code>bordercolor</code> |
|||
| <code>border-width</code><br><code>border-color</code> |
|||
| <code>border="1" bordercolor="red"</code> |
|||
| <code>style="border: 1px red solid"</code> |
|||
| {{NoteTag|name=length}}{{NoteTag|name=color}}{{NoteTag|name=cell|需要将属性添加在各个单元格上才能实现完整效果,而非应用在表格本身或者应用在行上。}} |
|||
|- |
|||
| <code>cellspacing</code> |
|||
| <code>border-spacing</code> |
|||
| <code>cellspacing="3"</code> |
|||
| <code>style="border-spacing: 3px</code> |
|||
| {{NoteTag|name=length}} |
|||
|- |
|||
| <code>cellpadding</code> |
|||
| <code>padding</code> |
|||
| <code>cellpadding="3"</code> |
|||
| <code>style="padding: 3px"</code> |
|||
| {{NoteTag|name=length}}{{NoteTag|name=cell}} |
|||
|- |
|||
| <code>frame</code> |
|||
| <code>border-style</code>和<code>border-width</code> |
|||
| |
|||
| |
|||
| |
|||
|- |
|||
| <code>rules</code> |
|||
| <code>border-style</code>和<code>border-width</code> |
|||
| |
|||
| |
|||
| |
|||
|} |
|||
==== 注释 ==== |
|||
{{NoteFoot}} |
|||
{{帮助页面}} |
{{帮助页面}} |