使用表格

MediaWiki提供了专门的语法来创建表格。当然您也可以用HTML来创建表格,不过维基语法通常情况下比HTML要写的代码更少。

Wiki表格标示摘要

{| 表格起始,必要。
|+ 表格大标题,可选。每张表格只能出现一次,位于表格起始第一行之间。
|- 表格行,用于将行与行之间分隔开来。表格起始与第一行之间不必添加表格行。
! 表格标题单元格,可选。在行首单独使用(!)可以加一格标题,在同一行加入连续的表格标题可以使用(!!)。
| 表格内容单元格,可选。在行首单独使用(|)可以加一格内容,在同一行内加入连续的表格内容可以使用(||)。
|} 表格结束,必要。
  • 上述符号必须出现在新行的开头(除||!!)。行开头的空格会被忽略。
  • 除表格结束符号以外,每个符号都可以添加HTML属性,属性必须与该符号在同一行。请使用一个空格隔开每一项属性。
    • 在表格起始行添加 class="wikitable"可以引用使用维基表格样式,每个符号后添加 style="*"可以定义符号定义范围的CSS样式,例如在表格起始符号后添加style="width: ?%; height: ?px"定义表格长宽。
    • 单元格与大标题(|||!!!|+)要用单线(|)来分隔属性与内容。单元格的内容可以有一行或多行。
    • 表格起始与表格行({||-)后面可以直接写HTML属性。
  • 任何内容都:
    1. 可以直接写在单元格符号后,前面可以添加HTML属性,也可以不添加。
    2. 也可以另起一行。
  • 如果单元格的内容用了必须另起一行的维基文本,如列表(*#),标题(== 标题 ==),或者嵌套表格,则必须写在新行。
  • 如果要在表格内使用管道符(|),可以使用<nowiki>|</nowiki>,或者使用{{!}},避免该符号被维基引擎解析。

基础

下面这个表格没有边框,也没有单元格间距,但是用了最简单的方式展示维基表格是怎样的结构。

输入 输出
{|
|橘子
|苹果
|-
|面包
|饼
|-
|奶油
|冰淇凌
|}
橘子 苹果
面包
奶油 冰淇凌

竖排看起来不够清晰。如果想要看起来更像表格,可以用||将在同一行的单元格分开。

如果单元格中的文本包含了换行符,可使用<br/>替代。

输入 输出
{|
|橘子||苹果||更多
|-
|面包||饼||更多
|-
|奶油||冰<br />淇淋||和<br />更多
|}
橘子 苹果 更多
面包 更多
奶油
淇淋

更多

单元格内,首尾的空格不影响实际的表现形式。

输入 输出
{|
|橘子 ||苹果 ||更多
|-
|面包 ||饼 ||更多
|-
|奶油 ||冰淇凌 ||以及更多
|}
橘子 苹果 更多
面包 更多
奶油 冰淇凌 以及更多

当然,单元格内也可以输入更长的文本,或者更复杂的维基语法。

输入 输出
{|
|Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt
ut labore et dolore magna aliquyam erat,
sed diam voluptua.

At vero eos et accusam et justo duo dolores
et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum
dolor sit amet.
|
* Lorem ipsum dolor sit amet
* consetetur sadipscing elitr
* sed diam nonumy eirmod tempor invidunt
|}
Lorem ipsum dolor sit amet,

consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

  • Lorem ipsum dolor sit amet
  • consetetur sadipscing elitr
  • sed diam nonumy eirmod tempor invidunt

标题单元格

标题单元格可以用!(感叹号)替代|(管道符号)表示。

标题单元格通常显示为粗体,并默认居中。

输入 输出
{|
! 物品
! 数量
! 价格
|-
|橘子
|10
|7.00
|-
|面包
|4
|3.00
|-
|奶油
|1
|5.00
|-
! style="color:red" |总计
|
|15.00
|}
物品 数量 价格
橘子 10 7.00
面包 4 3.00
奶油 1 5.00
总计 15.00

请注意,标题单元格前如果要添加HTML属性,属性与后面的单元格内容用竖线|分隔。(请注意上述例子中“总计”是如何添加属性的。)

标题

表格标题可以添加到任何表格顶部,如下所示。

输入 输出
{|
|+食品和配餐
|-
|橘子
|苹果
|-
|面包
|饼
|-
|奶油
|冰淇凌
|}
食品和配餐
橘子 苹果
面包
奶油 冰淇凌

class="wikitable"

添加class="wikitable"可以为表格添加:浅灰色背景、可见边框、内边距、左对齐的基本样式,让其更像维基表格。

这是一个HTML属性,作用于整个表格,因此应当写在表格起始符号{|用于放置属性的地方。

输入 输出
{|class="wikitable"
|+食品和配餐
|-
|橘子
|苹果
|-
|面包
|饼
|-
|奶油
|冰淇凌
|}
食品和配餐
橘子 苹果
面包
奶油 冰淇凌

跨行和跨列

您可以在单元格属性中加入colspanrowspan属性进行高级布局。

输入 输出
{|class="wikitable"
!colspan="6"|购物清单
|-
|rowspan="2"|面包和奶油
|饼
|小圆面包
|丹麦甜糕饼
|colspan="2"|羊角面包
|-
|奶酪
|colspan="2"|冰淇凌
|奶油
|酸奶酪
|}
购物清单
面包和奶油 小圆面包 丹麦甜糕饼 羊角面包
奶酪 冰淇凌 奶油 酸奶酪

上述例子中:

  • 整个表格是一个3行6列的表格。
  • 第一行:“购物清单”横跨6列,因此colspan="6"
  • 第二行:“面包和奶油”横跨2行,因此rowspan="2"。同时“面包和奶油”还占据了1格。剩下5格分别是“饼”、“小圆面包”、和“丹麦甜糕饼”(2格)。
  • 第三行:由于“面包和奶油”已经横跨两行,因此本行只需要5格即可。5格分别是“奶酪”、“冰淇凌”(2格)、“奶油”、“酸奶酪”。

HTML 属性

表格可以添加HTML属性。更多属性请参考W3C的HTML表格规格页面

表格属性

表格属性添加到{|后,应用于整个表格。

输入 输出
{|class="wikitable" style="text-align: center; color: green;"
|橘子
|苹果
|12,333.00
|-
|面包
|饼
|500.00
|-
|奶油
|冰淇凌
|1.00
|}
橘子 苹果 12,333.00
面包 500.00
奶油 冰淇凌 1.00

添加的属性分别为:

  • 使用维基表格样式
  • 文字居中
  • 文字颜色为绿色

单元格属性

单元格可以添加属性,作用于单个单元格。

输入 输出
{|class="wikitable"
|橘子
|苹果
|style="text-align:right;" |12,333.00
|-
|面包
|饼
|style="text-align:right;" |500.00
|-
|奶油
|冰淇凌
|style="text-align:right;" |1.00
|}
橘子 苹果 12,333.00
面包 500.00
奶油 冰淇凌 1.00

每行最后一个单元格添加的属性

  • 文字向右对齐

一行内有多个单元格时,也可以添加单元格属性。 注意单元格是被||分隔的,且每个单元格的属性和内容是被|分隔的。

输入 输出
{|class="wikitable"
|橘子 ||苹果     ||style="text-align:right;" |12,333.00
|-
|面包 ||饼       ||style="text-align:right;" |500.00
|-
|奶油 ||冰淇凌 ||style="text-align:right;" |1.00
|}
橘子 苹果 12,333.00
面包 500.00
奶油 冰淇凌 1.00

行属性

可以给某一整行添加属性,作用域为添加处正下相邻的一行。

输入 输出
{|class="wikitable"
|橘子
|苹果
|style="text-align:right;"|12,333.00
|-
|面包
|饼
|style="text-align:right;"|500.00
|- style="font-style: italic; color: green;"
|奶油
|冰淇凌
|style="text-align:right;"|1.00
|}
橘子 苹果 12,333.00
面包 500.00
奶油 冰淇凌 1.00

第三行添加的属性:

  • 斜体
  • 字体颜色为绿色

边框

边框用border来表示,单位为像素。

输入 输出
{|border="1" style="border-collapse:collapse"
|橘子
|苹果
|-
|面包
|饼
|}
橘子 苹果
面包

表格添加的属性:

  • 边框宽度为1像素

边框宽度

CSS样式border-width可以更改宽度。

输入 输出
{|style="border-style: solid; border-width: 20px"
|
您好!
|}

您好!

如果border-width后面跟着四个值,四个数字分别代表上、右、下、左边框的宽度(顺时针↑→↓←)。

输入 输出
{|style="border-style: solid; border-width: 10px 20px 100px 0"
|
您好!
|}

您好!

少于四个值时:

  • 三个值:上、中(左右)、下
  • 两个值:上下、左右
  • 一个值:同时影响四个边框

如果实在记不清,也可以用border-leftborder-rightborder-topborder-bottom表示。

输入 输出
{|style="border-left:solid 10px black;border-right:solid 20px black;border-top:solid 30px black;border-bottom:solid 40px black;" align="center"
|
您好!
|}

您好!

注意:

  • HTML属性(如widthbordercellspacingcellpadding等)不需要单位(单位为像素)。
  • CSS样式需要单位(如果值不是0的话),例如px用于像素。
  • 如何区分HTML和CSS属性?
    • CSS样式永远写在style中,属性与值之间用冒号分隔。
    • HTML属性的属性名与值之间用等号分隔。
    • style本身其实也是一种HTML属性(用等号分隔style和本体),只是style内部的内容为CSS样式。

搭配HTML属性与CSS样式

两者同时使用的情况:

输入 输出
{|class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="10"
|橘子
|苹果
|-
|面包
|饼
|-
|奶油
|冰淇凌
|}
橘子 苹果
面包
奶油 冰淇凌

内边距

输入 输出
{|class=wikitable
|style="padding: 10px" |style="padding:10px"的示例
|-
|style="padding: 50px" |style="padding:50px"的示例<br/><br/>指定每个单元格的内边距
|-
|style="padding:100px" |style="padding:100px"的示例
|}
style="padding:10px"的示例
style="padding:50px"的示例

指定每个单元格的内边距
style="padding:100px"的示例

其他属性

表格标题CSS样式

输入 输出
{|class="wikitable"
|+ style="caption-side:bottom; color:#e76700;"|''食品和配餐''
|-
|橘子
|苹果
|-
|面包
|饼
|-
|奶油
|冰淇凌
|}
食品和配餐
橘子 苹果
面包
奶油 冰淇凌

这里将表格标题移动到了下方,并改变了颜色。

列宽

列宽可以通过如下方式添加。

输入:

{|class="wikitable" style="width: 85%;"
|colspan="2" |表格宽度占页面宽度的85%。
|-
|style="width: 30%"|此列占表格总宽度的30%
|style="width: 70%"|此列占表格总宽度的70%
|}

输出:

表格宽度占页面宽度的85%。
此列占表格总宽度的30% 此列占表格总宽度的70%

作用于列的标题单元格

注意scope="col"的用法,它表示自己是所在列的单元格。scope="row"表示自己是作用于行的标题单元格。

输入 输出
{|class="wikitable"
|-
! scope="col"|项目
! scope="col"|数量
! scope="col"|价格
|-
! scope="row"|面包
|0.3 kg
|$0.65
|-
! scope="row"|奶油
|0.125 kg
|$1.25
|-
! scope="row" colspan="2"|总计
|$1.90
|}
项目 数量 价格
面包 0.3 kg $0.65
奶油 0.125 kg $1.25
总计 $1.90

对齐

表格对齐

CSS样式margin可以控制外边距。当应用于表格时,可以修改表格与其它内容的边距。

当这个值设置为auto时,会自动调节外边距。

如果两边margin都设为auto,也就是两侧都是自动边距,表格将居中。

右对齐(左侧边距自动):

输入 输出
{|class="wikitable" style="margin-left: auto; margin-right: 0px;"
|橘子
|苹果
|-
|面包
|饼
|-
|奶油
|冰淇凌
|}
橘子 苹果
面包
奶油 冰淇凌

居中(上下左右边距均为自动):

输入 输出
{|class="wikitable" style="margin: auto;"
|橘子
|苹果
|-
|面包
|饼
|-
|奶油
|冰淇凌
|}
橘子 苹果
面包
奶油 冰淇凌

文字环绕

CSS样式float可以控制文字环绕样式。

右侧浮动:

输入 输出
{|class="wikitable" style="float:right; margin-left: 10px;"
|橘子
|苹果
|-
|面包
|饼
|-
|奶油
|冰淇凌
|}

Lorem ipsum dolor sit amet, consectetuer adipiscing
elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi
enim ad minim veniam, quis nostrud exerci tation
ullamcorper suscipit lobortis nisl ut aliquip ex ea
commodo consequat. Duis autem vel eum iriure dolor
in hendrerit in vulputate velit esse molestie consequat,
vel illum dolore eu feugiat nulla facilisis at vero
eros et accumsan et iusto odio dignissim qui blandit
praesent luptatum zzril delenit augue duis dolore te
feugait nulla facilisi.
橘子 苹果
面包
奶油 冰淇凌

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.

水平对齐和垂直对齐

text-alignvertical-align这两个CSS样式控制着单元格内部文字的水平、垂直对齐方式。

其中text-align可以在整个表格、某行或某个单元格中指定,而vertical-align只能在单个行或单元格中指定。

text-align有三个常用选项:left(左对齐)、middle(居中)、right(右对齐)。

vertical-align也有三个常用选项:top(顶部对齐)、middle(居中)、bottom(底部对齐)。

输入 输出
{|class="wikitable"
|- style="vertical-align:top;"
|style="height:100px; width:100px; text-align:left;" |A
|style="height:100px; width:100px; text-align:center;" |B
|style="height:100px; width:100px; text-align:right;" |C
|- style="vertical-align:middle;"
|style="height:100px; width:100px; text-align:left;" |D
|style="height:100px; width:100px; text-align:center;" |E
|style="height:100px; width:100px; text-align:right;" |F
|- style="vertical-align:bottom;"
|style="height:100px; width:100px; text-align:left;" |G
|style="height:100px; width:100px; text-align:center;" |H
|style="height:100px; width:100px; text-align:right;" |I
|}
A B C
D E F
G H I

其它

负数

如果你要在一行的第一个单元格中显示负数(例如|-6),其中的负号可能会导致显示不正常。因为MediaWiki软件会认为你的标记并不是新单元格,而是新行 (|-)。 避免的方法是在负号前加空格(|-6)或者使用单行单元格标记(||-6)。

旧版浏览器支持

某些浏览器可能对HTML属性的支持更多一些,对CSS更少。但这类浏览器已经灭亡得差不多了,所以没问题的话就放心大胆用CSS吧。

折叠表格

如要让表格可以折叠,请在class属性中加入mw-collapsible

输入 输出
{|class="wikitable mw-collapsible"
! 标题单元格
|-
|内容单元格
|}
标题单元格
内容单元格

如果要让表格默认折叠,则在mw-collapsible后再加入mw-collapsed即可。

输入 输出
{|class="wikitable mw-collapsible mw-collapsed"
! 标题单元格
|-
|内容单元格
|}
标题单元格
内容单元格

预览的时候看不到折叠按钮是正常现象。如果输入无误,保存之后可以看到折叠按钮。