Help:表格:修订间差异

帮助页面
添加的内容 删除的内容
(文本替换 - 替换“(維|维)基文本”为“wikitext”)
无编辑摘要
第1行:
{{NoteTA|G1=IT|G2=MediaWiki}}
'''表格'''({{lang-en|'''table'''}})是在页面中非常常见的文本形式,用于呈现以二级形式排列的数据wikitext表格有专门的HTML语法,而在MediaWiki中,wikitext也可以用来产生表格。在编辑源代码时,编辑工具栏中的[[File:OOjs UI icon table.svg|alt=]]表格按钮可很方便地创建表格,你也可以手动创建表格。可视化编辑器也可以创建表格,并且能够很方便地合并单元格、插入或删除行列。本页主要介绍表格的wikitext语法,故不多介绍在可视化编辑器中形式直观呈现大量数据时非常有
 
需要注意的是,不要滥用表格。表格一般不应当用来排版,更不应该添加花里胡哨的样式。在求闻百科中使用表格时,须遵守[[Qiuwen:无障碍访问]]方针
 
在编辑源代码时,编辑工具栏中的[[File:OOjs UI icon table.svg]]表格按钮可以很方便地创建一个表格。在可视化编辑器中,亦可创建表格。本页介绍的是 表格的wikitext语法,故不多介绍在可视化编辑器中的用法。
 
== 基本语法 ==
第20行 ⟶ 第18行:
</pre>
 
效果如下:
在上面的例子中,<code>{|</code>表示一个表格的开始,必须位于一行的开头。每个表格都是以这个符号开头的,其后接表格的基本属性,大多数表格都需要wikitable类以实现基本的格式化,因此添加<code>class="wikitable"</code>。
 
其后以<code>|+</code>开头的是表格标题({{lang-en|caption}}),标题会显示在表格的最顶部,宽度不会超过表格自身的宽度。标题文本是可选的。
 
<code>|-</code>将表格分成了多行。每一行则是由相等数量的单元格组成。在上面的例子中,以<code>|</code>开头的是普通的单元格({{lang-en|table cell}});以<code>!</code>开头的是表头({{lang-en|table heading}}),其样式略深一些,且显示为居中、加粗。表头也是可选的,但通常情况下一个表格应该要有一个表头。单元格按照先分行({{lang-en|row}})后分列({{lang-en|column}})的顺序排列。
 
在代码的同一行内,多个单元格可以使用<code>!!</code>和<code>||</code>分开,如果每个单元格一行,则单元格可以直接以<code>!</code>或<code>|</code>开头。
 
这就是表格的基本语法。上面这个表格呈现的效果如下:
 
{| class="wikitable"
|+ 标题文本
第39行 ⟶ 第28行:
| 示例 || 示例 || 示例
|}
 
在这个例子中,<code>{|</code>表示一个表格的开始,必须位于一行的开头。每个wikitext表格都是以这个符号开头的,其后接表格的基本属性。大多数表格都需要wikitable类以实现基本的格式化,因此添加<code>class="wikitable"</code>。
 
其后以<code>|+</code>开头的是表格标题({{lang-en|caption}}),标题会显示在表格的最顶部,宽度不会超过表格自身的宽度。标题是可选的,通常包含对这个表格的基本描述。
 
<code>|-</code>将表格分成了多行。每一行则是由相等数量的单元格组成。在上面的例子中,以<code>|</code>开头的是普通的单元格({{lang-en|table cell}});以<code>!</code>开头的是表头({{lang-en|table heading}}),从屏幕显示中可以看出表头的背景颜色比普通的单元格略深一些,且默认会显示为居中、加粗。表头也是可选的,但通常情况下一个表格应该要有一个表头。单元格按照先分行({{lang-en|row}})后分列({{lang-en|column}})的顺序排列。
 
在代码的同一行内,多个单元格可以使用<code>!!</code>和<code>||</code>分开,如果每个单元格一行,则单元格可以直接以<code>!</code>或<code>|</code>开头。
 
== 跨列与跨行 ==
第92行 ⟶ 第89行:
 
== 属性 ==
你可以为表格的各个元素添加'''属性'''({{lang-en|'''attribute'''}}),这些属性包括表格属性、单元格属性、行属性和表格标题属性。属性通常用来设置表格的样式,有时也可以使用其他的属性。
 
=== 表格属性 ===
表格属性添加在表格最开头的<code>{|</code>后面,将应用于整个表格。我们通常所添加的<code>class="wikitable"</code>就是应用于整个表格的。下面这个例子中,我们不添加wikitable类,而是为整个标题表格设置文本颜色,并添加边框。在这个例子中,整个表格都是绿色文字、蓝色边框的。
 
-{}-{| <mark>class="wikitable" style="color:green; border:2px dashed blue"</mark>
第116行 ⟶ 第113行:
 
=== 单元格属性 ===
单元格属性应用于单个单元格。单元格属性应用在单元格内容与单元格分隔符之间,并用<code>|</code>隔开。例如,在这个例子中,将左下角的单元格设置文本颜色并添加边框,而不影响其他的单元格
 
-{}-{| class="wikitable"
第180行 ⟶ 第177行:
== 样式 ==
{{参见|Help:CSS}}
'''样式'''({{lang-en|'''style'''}})是表格内容最常见的一种属性,它主要包括了表格的各种显示方式。例如,表格如何排版布局,显示为什么颜色,这些都属性样式。定义表格样式所使用的是[[CSS|<abbr title="层叠样式表">CSS</abbr>]]。
根据不同的情况,我们可能需要为表格的不同部分设置不同的'''样式'''({{lang-en|'''style'''}})。
 
=== 宽度和高度 ===
CSS的<code>width</code>和<code>height</code>属性可以设置表格的宽度和高度。宽度和高度的类型都属于长度,其值为绝对或可以是相对的长度值,也可以是绝对值。除非值为0,否则必须要有单位。
 
宽度和高度可以应用于整个表格,也可以应用于单个单元格。当应用于单元格时,其同一行或同一列的单元格的宽度相应尺寸也会受到影响。没有指定的宽度和高度会被自动设置
 
=== 简单的宽度和高度 ===
 
下面这个表格的宽度为80%,这是一个相对值,意味着表格将占用容器宽度的80%。其中,第一列的宽度为2em,这是一个绝对值,无论容器的大小是多少,第1列的宽度都是2em。不难推断出,第2列将占用表格的剩余的空间。
 
-{}-{| class="wikitable" <mark>style="width: 80%"</mark>
! 标题1
! 标题2
|-
| <mark>style="width:2em" |</mark> 1行1列
| 1行2列
第196行 ⟶ 第200行:
 
{| class="wikitable" style="width: 80%"
! 标题1
! 标题2
|-
| style="width:2em" | 1行1列
| 1行2列
第203行 ⟶ 第210行:
|}
 
此外,宽度也可以用来指定单元格的大小分配。在下面这个例子中,表格列所占的宽度被限定分别容器宽度的80%,同时整个格的1行1列单元格的宽度被限制为2em的20%、20%、60%2行尽管第1列没有规的文本比其他列的文本多,但是由于指宽度,但显然受到了1行1列因此内容数量不会影响宽度
 
此外,宽度也可以用来指定单元格的大小分配,例如:
-{}-{| class="wikitable"
! 标题1
! 标题2
! 标题3
|-
| <mark>style="width:20%"</mark> | 1行1列
| <mark>style="width:20%"</mark> | 1行2列
第217行 ⟶ 第226行:
 
{| class="wikitable"
! 标题1
! 标题2
! 标题3
|-
| style="width:20%" | 1行1列
| style="width:20%" | 1行2列
第225行 ⟶ 第238行:
| 2行3列
|}
 
上面的这个例子强制让表格的各列按照20%:20%:60%即1:1:3的比例分配,尽管这与表格内容的数量不对应。
 
{{mbox|text=注意,设置宽度和高度使用的是<code>style</code>中的<code>width</code>和<code>height</code>CSS属性,如<code>style="width=80%"</code>而不是直接设置像<code>width="80%"</code>这样的节点属性。}}
 
==== 复杂的宽度与高度 ====
在一些情况下,绝对宽度和相对宽度或高度可能都没有办法满足需求。在这种情况下,可以使用复杂的表格宽度和高度。这里仅作参考,事实上并不推荐使用过于复杂的宽度和高度。
 
下面这个表格的宽度为<code>min(max(70%, 20em), 100%)</code>。意思是,当20em的长度小于容器宽度的70%时,这个表格的宽度是20em,否则为容器宽度的70%。但是,如果容器宽度本身小比较小,以至于小于20em,那么表格的宽度就是容器宽度的100%,以免超出容器宽度。
-{}-{| class="wikitable" <mark>style="width: min(max(70%, 20em), 100%)"</mark>
|+ 标题文本
|-
! 标题文本 !! 标题文本 !! 标题文本
|-
| 示例 || 示例 || 示例
|-
| 示例 || 示例 || 示例
|}
 
{| class="wikitable" style="width: min(max(70%, 20em), 100%)"
|+ 标题文本
|-
! 标题文本 !! 标题文本 !! 标题文本
|-
| 示例 || 示例 || 示例
|-
| 示例 || 示例 || 示例
|}
 
下面这个表格的宽度为<code>calc(100% - 2em)</code>。这个很好理解,这个宽度是相对宽度和绝对宽度的混合,其宽度是容器宽度减去2em。
-{}-{| class="wikitable" <mark>style="calc(100%, 2em)"</mark>
|+ 标题文本
|-
! 标题文本 !! 标题文本 !! 标题文本
|-
| 示例 || 示例 || 示例
|-
| 示例 || 示例 || 示例
|}
 
{| class="wikitable" style="calc(100%, 2em)"
|+ 标题文本
|-
! 标题文本 !! 标题文本 !! 标题文本
|-
| 示例 || 示例 || 示例
|-
| 示例 || 示例 || 示例
|}
 
==== 表格内容的自动排版 ====
一般情况下,如果不指定宽度,那么表格的宽度以及各单元格的宽度是自动调整的,会根据内容来进行分配。如果指定了整个表格的宽度和高度,但是没有指定单元格的宽度和高度,那么这个单元格的宽度和高度也会自动分配。
 
在下面这个例子中,表格的宽度不会超过40个字符的宽度,字符多的单元格会分配更宽的宽度。
 
-{}-{| class="wikitable" style="width: min(40em, 100%)"
|+ 自动排版的表格
|-
! 标题1 !! 标题2 !! 标题3
|-
| 这是一个很多文本的单元格,内容非常非常多,需要占用比较多的空间,以便呈现其内容。
| 内容很少的单元格
| 这个单元格的内容也比较少。
|-
| 这个内容很少。
| 内容很少的单元格。
| 这个单元格的内容也是比较少的。
|}
 
{| class="wikitable" style="width: min(40em, 100%)"
|+ 自动排版的表格
|-
! 标题1 !! 标题2 !! 标题3
|-
| 这是一个很多文本的单元格,内容非常非常多,需要占用比较多的空间,以便呈现其内容。
| 内容很少的单元格
| 这个单元格的内容也比较少。
|-
| 这个内容很少。
| 内容很少的单元格。
| 这个单元格的内容也是比较少的。
|}
 
=== 表格对齐 ===