Template:Div col/doc: Difference between revisions
Replication_Ops>Pppery No edit summary |
Replication_Ops>Jkudlick →Colwidth: adding variable width example |
||
Line 1: | Line 1: | ||
{{Documentation subpage}} | {{Documentation subpage}} | ||
<!-- | {{redirect-distinguish|Template:Colbegin|Template:Col-begin}} | ||
<!----------------------------------------------------------------------------- | |||
PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE | |||
------------------------------------------------------------------------------> | |||
{{#ifeq:{{FULLPAGENAME}}|Template:Div col|{{High-use| 269676 }}|{{#ifeq:{{FULLPAGENAME}}|Template:Div col end|{{High-use| 209292 }}}}}} | |||
{{CSS3 multiple column layout}} | |||
{{Lua|Module:Check for unknown parameters}} | {{Lua|Module:Check for unknown parameters}} | ||
{{Uses TemplateStyles|Template:Div col/styles.css}} | {{Uses TemplateStyles|Template:Div col/styles.css}} | ||
{{ | The template '''{{tlf|div col}}''' (short for division columns) formats a list into columns that wrap at multiple screen resolutions responsively. It automatically breaks the available screen space into equal parts, meaning, for instance, that it is not necessary to guess how many columns to use and then figure out the dividing point(s), e.g., the halfway point to divide the list into two columns, or the one-third and two-thirds points to divide the list into three columns. To prevent a section of a list being broken, the template {{t|No col break}} can be used. | ||
== | ==Usage== | ||
===Basic usage=== | |||
<syntaxhighlight lang="wikitext"> | |||
{{div col}}<!-- default width is 30em --> | |||
== | |||
=== | |||
* a | * a | ||
* b | * b | ||
Line 38: | Line 24: | ||
* h | * h | ||
{{div col end}} | {{div col end}} | ||
</ | </syntaxhighlight> | ||
Produces: | |||
{{ | {{div col}} | ||
* a | * a | ||
* b | * b | ||
Line 49: | Line 35: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
=== | ===Parameters=== | ||
; | There are six parameters for this template: | ||
< | ; {{para|colwidth}} | ||
{{ | : Specifies the minimum width of the columns so that the number of columns is automatically based on screen width (that is, more columns will be shown on wider displays). If no value is supplied, the template uses a default of 30em. The width can be specified in any [[CSS#Length units|CSS relative or absolute length unit]], for instance, the [[Em (typography)|em]] (about the width of the capital "M" of the displayed typeface), e.g., <code>colwidth=20em</code>. | ||
; {{para|rules|yes}} | |||
: Adds vertical lines ("rules") between the columns if set to <code>yes</code>. | |||
; {{para|gap}} | |||
: Specifies the space between the content of adjacent columns, in any valid CSS width unit, e.g., <code>gap=2em</code>. The default spacing (set by browser) is 1em. | |||
; {{para|class}} | |||
: An HTML class, or multiple space-delimited classes, to apply to the columns. | |||
; {{para|style}} | |||
: [[Cascading Style Sheets|CSS styling]] to apply to the columns. | |||
; {{para|small|yes}} | |||
: Sets font size to 90%. | |||
; {{para|content}} | |||
: Content to apply to the columns. This parameter is effectively equivalent to {{tl|columns-list}}, which is a pass-through for this template. | |||
===Examples=== | |||
====Colwidth==== | |||
;Fixed width | |||
<syntaxhighlight lang="wikitext"> | |||
{{div col|colwidth=10em}} <!-- column width of 10em --> | |||
* a | * a | ||
* b | * b | ||
Line 63: | Line 67: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
</ | </syntaxhighlight> | ||
Produces: | |||
{{ | {{div col|colwidth=10em}} | ||
* a | * a | ||
* b | * b | ||
Line 75: | Line 79: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
;Variable width | |||
= | <syntaxhighlight lang="wikitext"> | ||
{{div col|colwidth=10vw}} <!-- column width of 10% of the viewable area or container--> | |||
{{ | |||
* a | * a | ||
* b | * b | ||
Line 89: | Line 91: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
</ | </syntaxhighlight> | ||
Produces: | |||
{{ | {{div col|colwidth=10vw}} | ||
* a | * a | ||
* b | * b | ||
Line 101: | Line 103: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
=== | ====Rules==== | ||
<syntaxhighlight lang="wikitext"> | |||
{{div col|colwidth=10em|rules=yes}} <!-- column width of 10em with rules --> | |||
{{ | |||
* a | * a | ||
* b | * b | ||
Line 115: | Line 116: | ||
* g | * g | ||
* h | * h | ||
}} | {{div col end}} | ||
</ | </syntaxhighlight> | ||
Produces: | |||
{{ | {{div col|colwidth=10em|rules=yes}} | ||
* a | * a | ||
* b | * b | ||
Line 127: | Line 128: | ||
* g | * g | ||
* h | * h | ||
}} | {{div col end}} | ||
=== | ====Gap==== | ||
<syntaxhighlight lang="wikitext"> | |||
{{div col|colwidth=10em|rules=yes|gap=2em}} <!-- column width of 10em with rules and a gap of 2em --> | |||
< | |||
{{ | |||
* a | * a | ||
* b | * b | ||
Line 142: | Line 141: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
</ | </syntaxhighlight> | ||
Produces: | |||
{{div col|colwidth=10em|rules=yes|gap=2em}} | |||
{{ | |||
* a | * a | ||
* b | * b | ||
Line 155: | Line 153: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
< | |||
====Small==== | |||
{{ | <syntaxhighlight lang="wikitext"> | ||
{{div col|small=yes}} <!-- Small = yes --> | |||
* a | * a | ||
* b | * b | ||
Line 167: | Line 166: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
</syntaxhighlight> | |||
{{ | Produces: | ||
{{div col|small=yes}} | |||
* a | * a | ||
* b | * b | ||
Line 178: | Line 178: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
====Content==== | |||
< | <syntaxhighlight lang="wikitext"> | ||
{{div col|colwidth= | {{div col|colwidth=10em|content= <!-- content parameter doesn't need {{div col end}} --> | ||
* a | * a | ||
* b | * b | ||
Line 191: | Line 191: | ||
* g | * g | ||
* h | * h | ||
}} | |||
</ | </syntaxhighlight> | ||
Produces: | |||
{{ | {{div col|colwidth=10em|content= | ||
* a | * a | ||
* b | * b | ||
Line 203: | Line 203: | ||
* g | * g | ||
* h | * h | ||
}} | |||
====Multiple parameters==== | |||
< | <syntaxhighlight lang="wikitext"> | ||
{{div col|colwidth= | {{div col|colwidth=10em|rules=yes|gap=2em|small=yes}} | ||
* a | * a | ||
* b | * b | ||
Line 217: | Line 217: | ||
* h | * h | ||
{{div col end}} | {{div col end}} | ||
</ | </syntaxhighlight> | ||
Produces: | |||
{{ | {{div col|colwidth=10em|rules=yes|gap=2em|small=yes}} | ||
* a | * a | ||
* b | * b | ||
Line 228: | Line 228: | ||
* g | * g | ||
* h | * h | ||
{{ | {{div col end}} | ||
====Text characters without list markup==== | |||
< | <syntaxhighlight lang="wikitext"> | ||
{{div col|colwidth=10em}} | {{div col|colwidth=10em}} <!--Text characters without list markup --> | ||
a | a | ||
b | b | ||
Line 242: | Line 242: | ||
h | h | ||
{{div col end}} | {{div col end}} | ||
</ | </syntaxhighlight> | ||
Produces | |||
{{ | {{div col|colwidth=10em}} | ||
a | a | ||
b | b | ||
Line 253: | Line 253: | ||
g | g | ||
h | h | ||
{{ | {{div col end}} | ||
====Lorem ipsum==== | |||
<syntaxhighlight lang="wikitext"> | |||
{{div col}} <!--Lorem ipsum --> | |||
{{lorem ipsum}} | |||
{{div col end}} | |||
</syntaxhighlight> | |||
Produces | |||
{{div col}} | |||
{{lorem ipsum}} | |||
{{div col end}} | |||
== Limitation == | |||
=== Sub-lists === | |||
The underlying CSS system is unable to break sub-lists into columns. Note the uneven formatting below: | |||
<syntaxhighlight lang="wikitext"> | |||
{{div col|colwidth=10em|rules=yes|gap=2em|style=column-count:3|content= | |||
* a | |||
* b | |||
* c | |||
** c.d | |||
** c.e | |||
** c.f | |||
* g | |||
* h | |||
}} | |||
</syntaxhighlight> | |||
Produces: | |||
{{div col|colwidth=10em|rules=yes|gap=2em|style=column-count:3|content= | |||
* a | |||
* b | |||
* c | |||
** c.d | |||
** c.e | |||
** c.f | |||
* g | |||
* h | |||
}} | |||
Turning off the {{code|break-inside: avoid-column;}} rule appears to help.<!-- A full page refersh is needed; just F12-ing doesn't work. --> | |||
=== Chrome-based browsers can separate images from captions=== | |||
In certain circumstances, Chrome-based browsers can separate images from their captions, placing the caption in the next column. This bug was reported in 2018 as {{phab|T193163}}, and it appears to be a bug in Chromium, [https://issues.chromium.org/issues/40578413 tracked as issue 40578413]. | |||
== Tracking categories == | ==Tracking categories== | ||
* | * {{category link with count|Pages using div col with unknown parameters}} (for erroneous use of parameter names not documented here) | ||
* {{category link with count|Pages using div col with small parameter}} | |||
== TemplateData == | ==TemplateData== | ||
{{TemplateData header}} | {{TemplateData header}} | ||
{{#switch: {{ | {{#switch: {{BASEPAGENAME}} | ||
|Div col=<templatedata> | |Div col=<templatedata> | ||
{ | { | ||
Line 269: | Line 314: | ||
"description": "Specifies the width of columns, and determines dynamically the number of columns based on screen width; more columns will be shown on wider displays.", | "description": "Specifies the width of columns, and determines dynamically the number of columns based on screen width; more columns will be shown on wider displays.", | ||
"type": "string", | "type": "string", | ||
"example": "30em" | "example": "22em", | ||
"default": "30em" | |||
}, | }, | ||
"rules": { | "rules": { | ||
Line 275: | Line 321: | ||
"description": "Produces vertical rules between the columns if set to yes.", | "description": "Produces vertical rules between the columns if set to yes.", | ||
"type": "string", | "type": "string", | ||
"example": " | "example": "yes" | ||
}, | }, | ||
"gap": { | "gap": { | ||
Line 282: | Line 328: | ||
"type": "string", | "type": "string", | ||
"example": "2em" | "example": "2em" | ||
}, | |||
"class": { | |||
"label": "HTML class", | |||
"description": "Specifies any class or multiple space-delimited classes.", | |||
"type": "string", | |||
"example": "plainlist nowrap" | |||
}, | }, | ||
"style": { | "style": { | ||
Line 291: | Line 343: | ||
"label": "Content", | "label": "Content", | ||
"description": "Specifies the content to divide into columns", | "description": "Specifies the content to divide into columns", | ||
"type": "content" | |||
}, | |||
"small": { | |||
"label": "Small font", | |||
"description": "Use a smaller font size (90%)", | |||
"example": "yes", | |||
"type": "string" | "type": "string" | ||
} | } | ||
Line 304: | Line 362: | ||
</templatedata> | </templatedata> | ||
}} | }} | ||
<includeonly>{{Sandbox other|| | |||
<!-- | ==Redirects== | ||
[[Category:Multi-column templates{{# | {{#ifeq:{{PAGENAME}}|Div col/doc|Redirects to {{tl|div col}}:}} | ||
{{#ifeq:{{ROOTPAGENAME}}|Div col| | |||
* {{tlx|col div}} | |||
* {{tlx|colbegin}} (but '''not''' {{tlx|col begin}} or {{tlx|col-begin}}) | |||
* {{tlx|cols}} | |||
* {{tlx|div col start}} | |||
* {{tlx|div col begin}} | |||
* {{tlx|div-col}} | |||
* {{tlx|palmares start}} | |||
}}<!-- | |||
-->{{#ifeq:{{PAGENAME}}|Div col/doc|<nowiki /> | |||
Redirects to {{tl|Div col end}}:}}<!-- | |||
-->{{#switch:{{PAGENAME}}|Div col end|Div col/doc= | |||
*{{tlx|col div end}} | |||
*{{tlx|colend}} (but '''not''' {{tlx|Col end}}) | |||
*{{tlx|div end}} | |||
*{{tlx|Divcol-end}} | |||
*{{tlx|Divcolend}} | |||
*{{tlx|Divend}} | |||
*{{tlx|End div col}} | |||
*{{tlx|EndDivCol}} | |||
*{{tlx|End of solid block}} | |||
}} | |||
==See also== | |||
* {{tl|refbegin}} and {{tl|refend}} (for columns in manual lists of references) | |||
{{column-generating template families}} | |||
<includeonly>{{Sandbox other| | |||
| <!-- CATEGORIES BELOW THIS LINE, PLEASE: --> | |||
[[Category:Multi-column templates]] | |||
[[Category:Templates that add a tracking category]] | |||
<!--?:-->{{#switch:{{PAGENAME}} |div col= |div col end=}} | |||
}}</includeonly> | }}</includeonly> |
Revision as of 22:19, 28 August 2024
This is a documentation subpage for Template:Div col. It may contain usage information, categories and other content that is not part of the original template page. |
Property | Internet Explorer |
Firefox | Safari | Chrome | Opera |
---|---|---|---|---|---|
column-width column-count |
≥ 10 (2012) |
≥ 1.5 (2005) |
≥ 3 (2007) |
≥ 1 (2008) |
≥ 11.1 (2011) |
columns | ≥ 10 (2012) |
≥ 9 (2011) |
≥ 3 (2007) |
≥ 1 (2008) |
≥ 11.1 (2011) |
break-before break-after break-inside |
≥ 10 (2012) |
≥ 65 (2019) |
≥ 10 (2016) |
≥ 65 (2016) |
≥ 15 (2013) |
This template uses Lua: |
This template uses TemplateStyles: |
The template {{div col}} (short for division columns) formats a list into columns that wrap at multiple screen resolutions responsively. It automatically breaks the available screen space into equal parts, meaning, for instance, that it is not necessary to guess how many columns to use and then figure out the dividing point(s), e.g., the halfway point to divide the list into two columns, or the one-third and two-thirds points to divide the list into three columns. To prevent a section of a list being broken, the template {{No col break}} can be used.
Usage
Basic usage
{{div col}}<!-- default width is 30em -->
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
Produces:
- a
- b
- c
- d
- e
- f
- g
- h
Parameters
There are six parameters for this template:
|colwidth=
- Specifies the minimum width of the columns so that the number of columns is automatically based on screen width (that is, more columns will be shown on wider displays). If no value is supplied, the template uses a default of 30em. The width can be specified in any CSS relative or absolute length unit, for instance, the em (about the width of the capital "M" of the displayed typeface), e.g.,
colwidth=20em
. |rules=yes
- Adds vertical lines ("rules") between the columns if set to
yes
. |gap=
- Specifies the space between the content of adjacent columns, in any valid CSS width unit, e.g.,
gap=2em
. The default spacing (set by browser) is 1em. |class=
- An HTML class, or multiple space-delimited classes, to apply to the columns.
|style=
- CSS styling to apply to the columns.
|small=yes
- Sets font size to 90%.
|content=
- Content to apply to the columns. This parameter is effectively equivalent to {{columns-list}}, which is a pass-through for this template.
Examples
Colwidth
- Fixed width
{{div col|colwidth=10em}} <!-- column width of 10em -->
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
Produces:
- a
- b
- c
- d
- e
- f
- g
- h
- Variable width
{{div col|colwidth=10vw}} <!-- column width of 10% of the viewable area or container-->
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
Produces:
- a
- b
- c
- d
- e
- f
- g
- h
Rules
{{div col|colwidth=10em|rules=yes}} <!-- column width of 10em with rules -->
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
Produces:
- a
- b
- c
- d
- e
- f
- g
- h
Gap
{{div col|colwidth=10em|rules=yes|gap=2em}} <!-- column width of 10em with rules and a gap of 2em -->
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
Produces:
- a
- b
- c
- d
- e
- f
- g
- h
Small
{{div col|small=yes}} <!-- Small = yes -->
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
Produces:
- a
- b
- c
- d
- e
- f
- g
- h
Content
{{div col|colwidth=10em|content= <!-- content parameter doesn't need {{div col end}} -->
* a
* b
* c
* d
* e
* f
* g
* h
}}
Produces:
- a
- b
- c
- d
- e
- f
- g
- h
Multiple parameters
{{div col|colwidth=10em|rules=yes|gap=2em|small=yes}}
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
Produces:
- a
- b
- c
- d
- e
- f
- g
- h
Text characters without list markup
{{div col|colwidth=10em}} <!--Text characters without list markup -->
a
b
c
d
e
f
g
h
{{div col end}}
Produces
a b c d e f g h
Lorem ipsum
{{div col}} <!--Lorem ipsum -->
{{lorem ipsum}}
{{div col end}}
Produces
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Limitation
Sub-lists
The underlying CSS system is unable to break sub-lists into columns. Note the uneven formatting below:
{{div col|colwidth=10em|rules=yes|gap=2em|style=column-count:3|content=
* a
* b
* c
** c.d
** c.e
** c.f
* g
* h
}}
Produces:
- a
- b
- c
- c.d
- c.e
- c.f
- g
- h
Turning off the break-inside: avoid-column;
rule appears to help.
In certain circumstances, Chrome-based browsers can separate images from their captions, placing the caption in the next column. This bug was reported in 2018 as T193163, and it appears to be a bug in Chromium, tracked as issue 40578413.
Tracking categories
- Category:Pages using div col with unknown parameters (0) (for erroneous use of parameter names not documented here)
- Category:Pages using div col with small parameter (0)
TemplateData
TemplateData for Div col
Breaks a list into columns. It automatically breaks each column to an equal space, so you do not manually have to find the half way point on two columns. The list is provided by |content= or closed with {{div col end}}.
Parameter | Description | Type | Status | |
---|---|---|---|---|
Column width | colwidth | Specifies the width of columns, and determines dynamically the number of columns based on screen width; more columns will be shown on wider displays.
| String | optional |
Rules | rules | Produces vertical rules between the columns if set to yes.
| String | optional |
Gap size | gap | Specifies the space between the content of adjacent columns.
| String | optional |
HTML class | class | Specifies any class or multiple space-delimited classes.
| String | optional |
CSS style | style | Specifies any custom styling. | String | optional |
Content | content | Specifies the content to divide into columns | Content | optional |
Small font | small | Use a smaller font size (90%)
| String | optional |
Redirects
Redirects to {{div col}}:
{{col div}}
{{colbegin}}
(but not{{col begin}}
or{{col-begin}}
){{cols}}
{{div col start}}
{{div col begin}}
{{div-col}}
{{palmares start}}
Redirects to {{Div col end}}:
{{col div end}}
{{colend}}
(but not{{Col end}}
){{div end}}
{{Divcol-end}}
{{Divcolend}}
{{Divend}}
{{End div col}}
{{EndDivCol}}
{{End of solid block}}
See also
Column-generating template families
The templates listed here are not interchangeable. For example, using {{col-float}} with {{col-end}} instead of {{col-float-end}} would leave a <div>...</div>
open, potentially harming any subsequent formatting.
<section begin="table" />
Type | Family | Handles wiki
table code?† |
Responsive/ mobile suited |
Start template | Column divider | End template |
---|---|---|---|---|---|---|
Float | "col-float" | Yes | Yes | {{col-float}} | {{col-float-break}} | {{col-float-end}} |
"columns-start" | Yes | Yes | {{columns-start}} | {{column}} | {{columns-end}} | |
Columns | "div col" | Yes | Yes | {{div col}} | – | {{div col end}} |
"columns-list" | No | Yes | {{columns-list}} (wraps div col) | – | – | |
Flexbox | "flex columns" | No | Yes | {{flex columns}} | – | – |
Table | "col" | Yes | No | {{col-begin}}, {{col-begin-fixed}} or {{col-begin-small}} |
{{col-break}} or {{col-2}} .. {{col-5}} |
{{col-end}} |
† Can template handle the basic wiki markup {| | || |- |}
used to create tables? If not, special templates that produce these elements (such as {{(!}}, {{!}}, {{!!}}, {{!-}}, {{!)}})—or HTML tags (<table>...</table>
, <tr>...</tr>
, etc.)—need to be used instead.<section end="table" />