|
{{uses Lua|Navbox}}
{{Documentation subpage}}
{{Usesuses LuaTemplateStyles|Module:Navbox/styles.css}}
本模板用于生成一个导航框。本模板是元模板,主要用于制作其他模板。
{{Uses TemplateStyles|Module:Navbox/styles.css|Template:Plainlist/styles.css|Template:Hlist/styles.css}}
== 基本参数列表 ==
本模板可快速建立一个[[Help:导航模板|导航模板]],配备了默认样式,能应付大多数导航模板。本模板也支持 {{tl|Navbox subgroup}}、{{tl|Navbox with collapsible groups}} 和 {{tl|Navbox with columns}}。
导航框使用小写的参数名称。所有的参数都是可选的。
== 用法 ==
请移除置空不用的参数。
基本的和最常见的参数如下所示(参见下方查看完整的列表,这些参数都是可省略的):
<syntaxhighlight lang="wikitext">
* <code>name</code>:模板的名称("Template:"后面的部分,注意不是模板的完整标题)。如果有该值,则标题的左边会加上一个"查 · 论 · 编"的链接导航栏。
{{Navbox
* <code>title</code>:标题栏的文字,也就是这个导航框的标题。
| name = {{subst:PAGENAME}}
* <code>titlestyle</code>:用于标题栏的CSS样式。
| title =
* <code>groupstyle</code>:用于所有分组单元格的CSS样式。子框表的分组不受此影响。
| listclass = hlist
* <code>above</code>:在group/list区段之上显示的文字。
| state = {{{state<includeonly>|autocollapse</includeonly>}}}
* <code>group''n''</code>(其中''n''是任意非负数):左侧分组单元格内的文字。
* <code>list''n''</code>(其中''n''是任意非负数):右侧列表单元格内的文字。你可以在这里面使用维基文本语法来生成一个无序列表。由于导航框默认添加了hlist类,因此无序列表会显示为由小圆点隔开的水平列表。
* <code>below</code>:在group/list区段之下显示的文字。
* <code>groupwidth</code>:整个导航框的 group 这一栏的宽度,请勿习惯性地在值后面加分号。请勿使用<code>|groupstyle=width:宽度</code>。
== 参数描述 ==
| above =
| image =
=== 属性 ===
| group1 =
| list1 =
==== name ====
| group2 =
| list2 =
模板的名称。为了在所有使用了所生成模板的页面上,标题栏左侧的"查 · 论 · 编"链接都能正确地工作,就需要设置这个参数。你可以输入<code><nowiki>{{subst:PAGENAME}}</nowiki></code>作为这个参数的值,这也是个快捷的方法。
| group3 =
| list3 =
==== state ====
<!-- ... 最多 35 组 -->
模板是否可折叠。<code>collapsible</code>为可折叠,<code>collapsed</code>为可折叠且默认已经折叠,<code>plain</code>为不可折叠(右边不显示"展开""折叠"按钮)。默认情况下,除了子框之外,都是可折叠的。
| below =
}}<noinclude>
{{navbox documentation}}
</noinclude>
</syntaxhighlight>
==== 参数列表nocat ====
设为1可阻止本模板加入[[#追踪分类]]。
基本的和最常见的参数如下所示:
=== 单元格 ===
* <code>name</code> – 模板的名称("Template:" 后面的部分)
* <code>title</code> – 标题栏的文字
* <code>listclass</code> – list 单元格的 CSS 类,常设为 <code>hlist</code>(水平列表)或 <code>plainlist</code>(无符号列表)
* <code>state</code> – 方框的折叠状态(autocollapse / collapsed / expanded / plain / off)
* <code>titlestyle</code> – 标题栏的 CSS 样式
* <code>groupstyle</code> – 分组单元格的 CSS 样式
* <code>above</code> – 在 group/list 区段之上显示的文字
* <code>image</code> – 可选的右侧图片
* <code>imageleft</code> – 可选的左侧图片(可与 group 同时使用)
* <code>group<sub>n</sub></code> – 左侧的文字,在 list-n 之前
* <code>list<sub>n</sub></code> – 列出维基链接的文字(最多支持 35 组)
* <code>below</code> – 在 group/list 区段之下显示的文字
==== 参数描述title ====
=== 设置参数 ===
; <code>name</code>
: 模板的名称,用于"查·论·编"链接正确工作。可以输入 <code><nowiki>{{subst:PAGENAME}}</nowiki></code> 作为快捷值。
; <code>state</code> [autocollapse, collapsed, expanded, plain, off]
: 默认为 <code>autocollapse</code>。如果页面上同时有两个或更多可折叠表格,则自动折叠。
: <code>collapsed</code> – 始终折叠;<code>expanded</code> – 始终展开;<code>plain</code> – 展开且隐藏折叠按钮;<code>off</code> – 展开、无折叠按钮、无标题补白。
; <code>navbar</code>
: 设置为 <code>plain</code> 隐藏"查·论·编"链接但保持标题居中;<code>off</code> 隐藏链接但不加补白。
; <code>border</code> [child, subgroup, none]
: 设置为 <code>child</code> 或 <code>subgroup</code> 可将此导航框用作无边框的子导航框嵌入到另一个导航框中。
显示在表格顶端一行居中位置的文字。它通常是该模板的主题,也就是主体内容的一个简要描述。本参数从技术上来说不是必需的,但是使用导航框而不带标题通常是没有意义的。
=== 单元格参数 ===
; <code>title</code>
: 显示在表格顶端一行的标题文字,通常是该模板的主题。
; <code>above</code>
: 标题栏与第一个 group/list 之间的全宽度单元格。
; <code>group<sub>n</sub></code>
: (group1~group35)显示在 list<sub>n</sub> 左侧的抬头单元格。如果省略,list<sub>n</sub> 占用表格全部宽度。
; <code>list<sub>n</sub></code>
: (list1~list35)模板的主体,每个导航框至少需要一个 list 参数。条目建议用 <code>*</code> 星号分行列出。
; <code>image</code>
: 标题下方、主体右侧的图片。需同时指定 list1。
; <code>imageleft</code>
: 标题下方、主体左侧的图片。需同时指定 list1。
; <code>below</code>
: 主体下方的全宽度单元格。
==== group''n''(如group1、group2、group3……) ====
; <code>titlegroup</code>
:【本站特有】在标题行左侧显示一个分组标签。需配合 <code>titlegroupstyle</code> 和 <code>titlegroupclass</code> 使用。
''n''为非负数。如果被指定,文字会显示在位于list''n''左侧的'''分组单元格'''中。如果被省略,对应的列表单元格就会占用表格的全部宽度。
=== 样式参数 ===
; <code>bodystyle</code>
: 应用到模板主体的 CSS 样式。
; <code>basestyle</code>
: 同时应用到 title、above、below 和 group 单元格(不应用到 list)。
; <code>titlestyle</code>
: 应用到 title 的 CSS 样式。
; <code>groupstyle</code>
: 应用到所有 groupN 单元格的样式。
; <code>group<sub>n</sub>style</code>
: 应用到特定 group 的样式。
; <code>groupwidth</code>
: group 单元格的统一宽度。
; <code>liststyle</code>
: 应用到所有 list 的样式。oddstyle/evenstyle 优先于此参数。
; <code>list<sub>n</sub>style</code>
: 应用到特定 list 的样式。
; <code>listpadding</code>
: 每个 list 单元格的内边距。默认左右 0.25em。
; <code>list1padding</code>
: 第一个 list 的专用内边距,优先级高于 <code>listpadding</code>。
; <code>oddstyle</code> / <code>evenstyle</code>
: 奇/偶数行的样式。默认奇数透明、偶数浅灰。
; <code>style</code>
: 应用到外容器表格的整体 CSS(与 <code>bodystyle</code> 类似)。
; <code>innerstyle</code>
: 应用到内部表格的 CSS,仅在需要同时控制内外两层表格样式时使用。
; <code>evenodd</code> [swap, even, odd, off]
: 控制奇偶行条纹:<code>swap</code> 反转、<code>even</code>/<code>odd</code> 统一颜色、<code>off</code> 禁用。
; <code>abovestyle</code> / <code>belowstyle</code>
: above / below 单元格的样式。
; <code>imagestyle</code> / <code>imageleftstyle</code>
: 图片单元格的样式。
; <code>titlegroupstyle</code> / <code>titlegroupclass</code>
:【本站特有】titlegroup 单元格的样式和 CSS 类。
==== list''n''(如list1、list2、list3……) ====
; <code>nowrapitems</code>
:【enwiki 特性】设为 <code>yes</code> 时,列表项中由 <code>*</code>/<code>:</code>/<code>#</code>/<code>;</code> 开头的行将自动套用 <code><nowiki><span class="nowrap"></nowiki></code>。
''n''为非负数,该模板的'''列表单元格''',通常含有多个链接的无序列表。如果第''n''个列表不存在,则第''n''个分组单元格(group''n'')也不会显示,但是不会对后面的列表(若有)造成影响。
=== 其他参数 ===
; <code>bodyclass</code> / <code>listclass</code> / <code>groupclass</code> / <code>aboveclass</code> / <code>belowclass</code> / <code>titleclass</code> / <code>imageclass</code> / <code>navboxclass</code>
: 对应单元格的 CSS 类。
; <code>list<sub>n</sub>class</code>
: 每个 list 独立的 CSS 类(如 list1class、list2class 等)。
; <code>group<sub>n</sub>style</code>
: 每个 group 独立的 CSS 样式(如 group1style、group2style 等)。
; <code>list<sub>n</sub>style</code>
: 每个 list 独立的 CSS 样式(如 list1style、list2style 等)。
; <code>templatestyles</code> / <code>child templatestyles</code>
: 自定义 TemplateStyles 页面,用于覆盖或补充默认样式。
; <code>nocat</code>
: 设为 <code>true</code> 可禁用追踪分类。
; <code>tracking</code>
: 设为 <code>no</code> 可禁用水平列表追踪分类。
==== group''a''-''b''(''a''、''b''均为数字) ====
== 子导航框 ==
可以在一个导航框中嵌入多个子导航框。将 list 参数的值设为 <code>child</code> 或 <code>subgroup</code>,然后以 <code>子编号_参数名</code> 的形式指定子导航框的参数:
将第''a''个列表单元格设置为一个子导航框,该子导航框的第''b''个分组。不应与group''a''、list''a''等共存,如果共存,则group''a''、list''a''直接被忽略。
<pre style="overflow:auto;">
{{Navbox
| name = {{subst:PAGENAME}}
| title = 标题
==== list''a''-''b''(''a''、''b''均为数字) ====
| group1 = 分组1
| list1 = list1 内容
将第''a''个列表单元格设置为一个子导航框,该子导航框的第''b''个列表。同上,不应与group''a''、list''a''等共存,如果共存,则group''a''、list''a''直接被忽略。
| group2 = 分组2
| list2 = child
| 2_group1 = 子分组2.1
| 2_list1 = 子列表2.1
| 2_group2 = 子分组2.2
| 2_list2 = 子列表2.2
}}
</pre>
==== above ====
也可以使用嵌套模板方式:
<pre style="overflow:auto;">
一个全宽度单元格,显示在标题栏之下,分组与列表部分(group、list)之上。
{{Navbox
| name = {{subst:PAGENAME}}
==== below ====
| title = 标题
| list1 = {{Navbox|child
一个全宽度单元格,显示在分组与列表部分(group、list)的下方。
...子导航框参数...
==== title''a''、above''a''、below''a'' ====
将第''a''个列表单元格设置为一个子导航框,该子导航框的标题、上方框或下方框。同上,不应与group''a''、list''a''等共存,如果共存,则group''a''、list''a''直接被忽略。
这里对参数做一个更加形象的展示:
{{#invoke:navbox|main
|title=title
|above=above
|group1=group1 |list1=list1
|group2=group2 |list2=list2
|group3=group3 |list3=list3
|group4=group4
|title4=title4(看到没,这是一个"子框")
|above4=above4
|group4-1=group4-1 |list4-1=list4-1
|group4-2=group4-2 |list4-2=list4-2
|group4-3=group4-3
|title4-3=title4-3(没错,可以继续嵌套)
|group4-3-1=group4-3-1 |list4-3-1=list4-3-1
|group4-3-2=group4-3-2 |list4-3-2=list4-3-2
|below4=below4
|group5=group5 |list5=list5
|list6=list6(可以继续无限添加列表)
|below=below
}}
}}
</pre>
=== 样式参数 ===
子导航框也支持 <code>type = with columns</code> 和 <code>type = with collapsible groups</code> 来使用其他布局。
一般不建议更改样式,以保持Wiki中模板和网页的一致性。然而,修改样式的选项还是有的。简单地说,在单元格参数后面加一个style即为该单元格的样式。
==== 示例bodystyle ====
指定应用到模板主体的CSS样式。此选项应谨慎使用。亦可简写成<code>style</code>。
=== 不带图片 ===
<pre style="overflow:auto;">
{{Navbox
|listclass=hlist
|name = Navbox 示例
|title = 多媒体超级走廊(马来西亚)
==== titlestyle ====
|group1 = 中心
应用到标题的CSS样式。
| list1 = 赛柏再也
==== groupstyle ====
|group2 = 区域
应用到所有分组单元格的样式。该选项覆写应用于整个表格的任何样式。子框表的分组单元格不受影响。
| list2 = 巴生谷
==== liststyle ====
|group3 = 主要地标
应用到所有列表单元格的CSS样式。该参数影响子框表的列表单元格。
| list3 =
* 双子塔
* 吉隆坡电讯高塔
* 吉隆坡中央车站
* 布城
* 赛柏再也
==== oddstyle、evenstyle ====
|group4 = 基础设施
应用到所有的第奇数/偶数个列表。会与liststyle的样式(若有)叠加,但优先级更高。缺省的表现是分别添加条纹状的颜色(白色和灰色)到奇数/偶数行,以提高可读性。一般不建议修改。
| list4 =
* 快速铁路
* 吉隆坡-布城高速公路
该参数会影响子框表的列表单元格。
|group5 = 首要应用
| list5 =
注意:奇偶性的判断是看这个列表在整个根框表中是第几个,与参数名称中的标号无关。
* 电子政务
* 大马卡
}}
</pre>
{{#invoke:navbox|main
=== 带图片 ===
|title=使用了oddstyle与evenstyle的例子
<pre style="overflow:auto;">
|above=本例中,oddstyle=<tt>background:#edb7</tt> evenstyle=<tt>background:#7cd5</tt>
{{Navbox
|oddstyle=background:#edb7
|listclass=hlist
|evenstyle=background:#7cd5
|name = Navbox 示例
|group1=group1
|title = 多媒体超级走廊(马来西亚)
|list1=list1
|image = [[File:Flag of Malaysia.svg|80px]]
|group2=group2
|list1 =
|list2=list2
* 双子塔
|group3=group3
* 吉隆坡电讯高塔
|group3-1=group3-1
* 吉隆坡中央车站
|list3-1=list3-1
* 布城
|group3-2=group3-2
* 赛柏再也
|list3-2=list3-2
* 吉隆坡国际机场
|group4=group4
|list4=list4
|group6=group6
|list6=list6(注意上面没有group5和list5)
|group6.5=group6.5
|list6.5=list6.5
|group7=group7
|list8=list8
|below=可见,奇数与偶数的决定取决于该列表是整个导航框的第几个,而不是看其标号。
}}
</pre>
==== abovestyle、belowstyle ====
== 技术细节 ==
* "查·论·编"链接由 [[Module:Navbar]] 生成。
* 分组与列表之间 2px 宽的边框使用列表单元格的左边框(border-left)绘制。如果改变模板背景色,需同步调整边框颜色。
* 相邻导航框之间仅有 1px 边框。设置 <code>bodystyle</code> 的上下外边距会破坏此特性。
* 最多支持 35 组 group/list(group1~group35、list1~list35)。
* 直接调用 <code><nowiki>{{#invoke:Navbox|navbox}}</nowiki></code> 可替代 <code><nowiki>{{Navbox}}</nowiki></code>,减少模板展开大小。
应用到顶端单元格(通过above参数指定)和底端单元格(通过below参数指定)。典型地被用来设置背景颜色或文本对齐方式。举例:
== 模板数据 ==
* <code>abovestyle = background:#''nnnnnn'';</code>
{{TemplateDataHeader}}
* <code>abovestyle = text-align:[''left/center/right''];</code>
<templatedata>
{
"description": "创建一个导航框,用于在页面底部显示相关页面的链接。",
"params": {
"name": {
"label": "模板名称",
"description": "模板的名称,用于\"查·论·编\"链接正确工作",
"default": "{{subst:PAGENAME}}",
"suggested": true
},
"title": {
"label": "标题",
"description": "标题栏的文字,通常是导航模板的主题",
"suggested": true
},
"state": {
"label": "折叠状态",
"description": "控制导航框的折叠行为",
"default": "autocollapse",
"suggestedvalues": ["autocollapse", "collapsed", "expanded", "plain", "off"],
"suggested": true
},
"listclass": {
"label": "列表CSS类",
"description": "list单元格的CSS类,常设为 hlist 使用水平列表",
"example": "hlist"
},
"above": {
"label": "上方内容",
"description": "标题栏与第一个group/list之间的全宽度单元格"
},
"below": {
"label": "下方内容",
"description": "主体下方的全宽度单元格"
},
"image": {
"label": "右侧图片",
"description": "标题下方、主体右侧的图片",
"type": "wiki-file-name"
},
"imageleft": {
"label": "左侧图片",
"description": "标题下方、主体左侧的图片",
"type": "wiki-file-name"
},
"group1": {
"label": "分组1",
"description": "显示在list1左侧的标签",
"suggested": true
},
"list1": {
"label": "列表1",
"description": "导航框的主体内容,至少需要一个list参数",
"required": true,
"suggested": true
},
"group2": { "label": "分组2" },
"list2": { "label": "列表2" },
"group3": { "label": "分组3" },
"list3": { "label": "列表3" },
"group4": { "label": "分组4" },
"list4": { "label": "列表4" },
"group5": { "label": "分组5" },
"list5": { "label": "列表5" },
"navbar": {
"label": "导航栏状态",
"description": "控制\"查·论·编\"链接的显示",
"example": "plain, off"
},
"border": {
"label": "边框模式",
"description": "设为 child 或 subgroup 可嵌入到另一个导航框中",
"example": "child, subgroup, none"
},
"titlegroup": {
"label": "标题分组",
"description": "在标题行左侧显示一个分组标签"
},
"titlegroupclass": {
"label": "标题分组CSS类"
},
"titlegroupstyle": {
"label": "标题分组CSS样式"
},
"nowrapitems": {
"label": "不换行项目",
"description": "设为 yes 时列表项自动套用 nowrap",
"example": "yes"
},
"bodystyle": { "label": "主体样式" },
"basestyle": { "label": "基础样式" },
"titlestyle": { "label": "标题样式" },
"groupstyle": { "label": "分组样式" },
"liststyle": { "label": "列表样式" },
"groupwidth": { "label": "分组宽度" },
"listpadding": { "label": "列表内边距" },
"oddstyle": { "label": "奇数行样式" },
"evenstyle": { "label": "偶数行样式" },
"evenodd": {
"label": "奇偶行控制",
"suggestedvalues": ["swap", "even", "odd", "off"]
},
"abovestyle": { "label": "上方样式" },
"belowstyle": { "label": "下方样式" },
"imagestyle": { "label": "图片样式" },
"imageleftstyle": { "label": "左侧图片样式" },
"bodyclass": { "label": "主体CSS类" },
"groupclass": { "label": "分组CSS类" },
"aboveclass": { "label": "上方CSS类" },
"belowclass": { "label": "下方CSS类" },
"titleclass": { "label": "标题CSS类" },
"imageclass": { "label": "图片CSS类" },
"navboxclass": { "label": "导航框CSS类" },
"templatestyles": { "label": "自定义样式页" },
"child templatestyles": { "label": "子导航框样式页" },
"style": { "label": "外容器样式", "description": "应用到外容器表格的整体 CSS" },
"innerstyle": { "label": "内部表格样式", "description": "应用到内部表格的 CSS" },
"list1padding": { "label": "列表1内边距", "description": "第一个 list 的专用内边距,优先级高于 listpadding" },
"nocat": { "label": "禁用分类", "description": "设为 true 禁用追踪分类" },
"tracking": { "label": "追踪控制", "description": "设为 no 禁用水平列表追踪" }
},
"paramOrder": [
"name", "title", "state", "listclass",
"group1", "list1", "group2", "list2", "group3", "list3",
"group4", "list4", "group5", "list5",
"above", "below", "image", "imageleft",
"titlegroup", "titlegroupclass", "titlegroupstyle",
"nowrapitems",
"navbar", "border",
"bodystyle", "basestyle", "titlestyle",
"groupstyle", "liststyle", "groupwidth", "listpadding",
"oddstyle", "evenstyle", "evenodd",
"abovestyle", "belowstyle", "imagestyle", "imageleftstyle",
"style", "innerstyle", "list1padding",
"bodyclass", "groupclass", "aboveclass", "belowclass",
"titleclass", "imageclass", "navboxclass",
"templatestyles", "child templatestyles",
"nocat", "tracking"
]
}
</templatedata>
==== group''n''style、list''n''style ====
== 追蹤分類 ==
* {{clc|孤立的子导航框}}
* {{clc|没有使用水平列表的导航框}}
* {{clc|使用背景颜色的导航框}}
* {{clc|使用边框的导航框}}
* {{clc|name參數和實際不同的導航框}}
* {{clc|使用了 columns 但缺少第一列的导航框}}
第''n''个分组或列表的CSS样式。
== 参见 ==
* {{tl|Navbox with collapsible groups}} – 可折叠分组导航框
* {{tl|Navbox with columns}} – 多列导航框
* {{tl|Navbox subgroup}} – 子导航框
* {{tl|Navboxes}} – 将多个导航框收纳在一起
* {{tl|Navboxes top}}
==== group''a''-''b''style、list''a''-''b''style ====
<includeonly>{{Sandbox other||
[[Category:导航模板]]
类似地,第''a''个列表的子导航框的第''b''个分组或列表的样式。
[[Category:折叠模板]]
}}</includeonly>
==== list''n''groupwidth、list''a''-''b''groupwidth ====
参考上面的样式。仅限于在有子导航框的情况下,设置该子导航框的分组单元格宽度。
=== 类参数 ===
与样式参数类似,设置一类或一个单元格的(类)。这里不再赘述。其中,<code>bodyclass</code>等价于<code>class</code>。
注意:所有的导航框自带<code>hlist</code>类,因此有序列表和无序列表都会水平显示。
== 追踪分类 ==
本导航框目前适用的追踪分类:
* [[:Category:孤立的子导航框]]
* [[:Category:没有使用水平列表的导航框]]
* [[:Category:使用背景颜色的导航框]]
* [[:Category:使用边框的导航框]]
* [[:Category:使用了 columns 但缺少第一列的导航框]]
* [[:Category:name参数和实际不同的导航框]]
添加参数{{para|nocat|1}}可以强制禁止自动加入分类。
== 已弃用的参数 ==
以下这些参数已不再受支持。如果发现有模板仍在使用的,请将其删除。
* <code>navbar</code>:用于控制导航栏。已不再受支持。
* <code>image</code>、<code>imageleft</code>、<code>imageclass</code>、<code>imagestyle</code>:用于在导航框右侧或左侧添加一个图片,占用整个导航框的高度。没必要使用。
* <code>basestyle</code>:用于所有单元格的样式。应分别给各类单元格设置样式。
* <code>evenodd</code>:设为<code>swap</code>可交换奇数和偶数行框的样式。暂时不支持。
* <code>listpadding</code>、<code>list1padding</code>:用于设置各列表框的CSS padding属性。暂不支持。请直接使用<code>liststyle</code>。
* <code>tracking</code>:设为<code>no</code>可阻止加入任何追踪分类。目前不受支持,请直接使用{{para|nocat|1}}。
* <code>innerstyle</code>:整个主体table元素内套的一层内部table元素的样式。当前版本不再会嵌套一个table,因此该参数无效。
== 参见 ==
* {{tlx|Navbox subgroup}}:旧版的用于创建子导航框的模板。你也可以直接使用navbox模板作为list''n''的值,而不是navbox subgroup。
* {{tlx|Navbox with columns}}:以栏取代组别/列表。
* {{tlx|Navbox with collapsible groups}}:设置多个可折叠组的导航框。
* {{tlx|Collapsible option}}:提示控制模板的显示状态。
|