Template:Div col/doc: Difference between revisions

From Replication Ops
Jump to navigation Jump to search
Replication_Ops>Jkudlick
→‎Colwidth: adding variable width example
m 1 revision imported
Line 1: Line 1:
{{Documentation subpage}}
{{Documentation subpage}}
{{redirect-distinguish|Template:Colbegin|Template:Col-begin}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata -->
<!-----------------------------------------------------------------------------
  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.
{{tl|Div col}} formats a list into columns that wrap properly and compatibly with portable computer devices, especially PAD operating systems and small screens. It is not supported by Internet Explorer 9.


==Usage==
== Purpose ==
===Basic usage===
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.
<syntaxhighlight lang="wikitext">
* The list content is either provided by the {{para|content}} parameter (which can be restrictive of what content is allowed; e.g., wiki markup such as the {{!}} character must somehow be escaped), or terminated with {{tl|div col end}}. The {{tl|columns-list}} wrapper uses the parameter method for providing content (including its limitations).
{{div col}}<!-- default width is 30em -->
* The template system (family) also offers parameter options to place vertical lines parameter ("rules") between the columns ({{para|rules}}) and to add other custom styling ({{para|style}}).
 
{{tl|Div col}} can create multiple columns in [[:en:Web browser|web browsers]] which support the following [[:en:CSS|CSS]] properties:
* ''column-width'' (for [[:en:Cascading Style Sheets#CSS3|CSS3]]-compliant browsers; see [http://www.w3.org/TR/css3-multicol/ CSS3 module: Multi-column layout])
 
By default, the template creates columns that are [[:en:Em (typography)|30em]] wide.
 
== This template's parameters ==
=== Descriptions ===
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). Can be specified in any [[CSS#Length units|CSS unit of measure]], for instance, the [[:en:Em (typography)|em]] (about the width of the capital "M" of the displayed typeface), e.g., <code>colwidth=20em</code>. If no value is supplied, the template uses a default of 30em.
; {{para|rules}} : Adds vertical lines ("rules") between the columns if set to <code>yes</code> or some CSS styling (e.g. <code>1px dashed blue;</code>).
; {{para|gap}} : Specifies the space between the content of adjacent columns. Specified in any CSS unit, e.g, <code>gap=2em</code>. The default spacing (set by browser) is 1em.
; {{para|style}} :[[:en:Cascading Style Sheets|CSS styling]] to apply to the columns.
; {{para|content}} : content to apply to the columns.
 
=== Example of "colwidth" parameter ===
; Example with column width of 10em
<pre>
{{div col|colwidth=10em}}
* a
* a
* b
* b
Line 24: Line 38:
* h
* h
{{div col end}}
{{div col end}}
</syntaxhighlight>
</pre>
Produces:
; produces:
{{div col}}
{{Div col|colwidth=10em}}
* a
* a
* b
* b
Line 35: Line 49:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}


===Parameters===
=== Example of "rules" parameter ===
There are six parameters for this template:
; Example:
; {{para|colwidth}}
<pre>
: 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>.
{{Div col|rules=yes}}
; {{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 67: Line 63:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}
</syntaxhighlight>
</pre>
Produces:
; produces:
{{div col|colwidth=10em}}
{{Div col|rules=yes}}
* a
* a
* b
* b
Line 79: Line 75:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}
;Variable width
 
<syntaxhighlight lang="wikitext">
=== Example of "gap" parameter ===
{{div col|colwidth=10vw}} <!-- column width of 10% of the viewable area or container-->
; Example:
<pre>
{{Div col|colwidth=10em|rules=yes|gap=2em}}
* a
* a
* b
* b
Line 91: Line 89:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}
</syntaxhighlight>
</pre>
Produces:
; produces:
{{div col|colwidth=10vw}}
{{Div col|colwidth=10em|rules=yes|gap=2em}}
* a
* a
* b
* b
Line 103: Line 101:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}


====Rules====
=== Example of "content" parameter ===
<syntaxhighlight lang="wikitext">
; Example showing how to provide "content" parameter without using {{tlx|Div col end}}
{{div col|colwidth=10em|rules=yes}} <!-- column width of 10em with rules -->
<pre>
{{Div col|colwidth=10em|content=
* a
* a
* b
* b
Line 116: Line 115:
* g
* g
* h
* h
{{div col end}}
}}
</syntaxhighlight>
</pre>
Produces:
; produces:
{{div col|colwidth=10em|rules=yes}}
{{Div col|colwidth=10em|content=
* a
* a
* b
* b
Line 128: Line 127:
* g
* g
* h
* h
{{div col end}}
}}


====Gap====
=== Usage with multiple parameters ===
<syntaxhighlight lang="wikitext">
Parameters can be used in any order.
{{div col|colwidth=10em|rules=yes|gap=2em}} <!-- column width of 10em with rules and a gap of 2em -->
'''Example: '''
<pre>
{{Div col|colwidth=10em|rules=yes|gap=2em}}
* a
* a
* b
* b
Line 141: Line 142:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}
</syntaxhighlight>
</pre>
Produces:
or
{{div col|colwidth=10em|rules=yes|gap=2em}}
<pre>
{{Div col|rules=yes|gap=2em|colwidth=10em}}
* a
* a
* b
* b
Line 153: Line 155:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}
 
</pre>
====Small====
; produces:
<syntaxhighlight lang="wikitext">
{{Div col|colwidth=10em|rules=yes|gap=2em}}
{{div col|small=yes}} <!-- Small = yes -->
* a
* a
* b
* b
Line 166: Line 167:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}
</syntaxhighlight>
and exactly the same result below
Produces:
{{Div col|rules=yes|gap=2em|colwidth=10em}}
{{div col|small=yes}}
* a
* a
* b
* b
Line 178: Line 178:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}


====Content====
; Example with column width of 20em
<syntaxhighlight lang="wikitext">
<pre>
{{div col|colwidth=10em|content= <!-- content parameter doesn't need {{div col end}} -->
{{div col|colwidth=20em}}
* a
* a
* b
* b
Line 191: Line 191:
* g
* g
* h
* h
}}
{{div col end}}
</syntaxhighlight>
</pre>
Produces:
; produces:
{{div col|colwidth=10em|content=
{{Div col|colwidth=20em}}
* a
* a
* b
* b
Line 203: Line 203:
* g
* g
* h
* h
}}
{{Div col end}}


====Multiple parameters====
; Example with column width of 30em
<syntaxhighlight lang="wikitext">
<pre>
{{div col|colwidth=10em|rules=yes|gap=2em|small=yes}}
{{div col|colwidth=30em}}
* a
* a
* b
* b
Line 217: Line 217:
* h
* h
{{div col end}}
{{div col end}}
</syntaxhighlight>
</pre>
Produces:
; produces:
{{div col|colwidth=10em|rules=yes|gap=2em|small=yes}}
{{Div col|colwidth=30em}}
* a
* a
* b
* b
Line 228: Line 228:
* g
* g
* h
* h
{{div col end}}
{{Div col end}}


====Text characters without list markup====
; Example of how this template behaves if no [[:en:•|bullets]] (generated by asterisk mark) are used.
<syntaxhighlight lang="wikitext">
<pre>
{{div col|colwidth=10em}} <!--Text characters without list markup -->
{{div col|colwidth=10em}}
a
a
b
b
Line 242: Line 242:
h
h
{{div col end}}
{{div col end}}
</syntaxhighlight>
</pre>
Produces
; produces:
{{div col|colwidth=10em}}
{{Div col|colwidth=10em}}
a
a
b
b
Line 253: Line 253:
g
g
h
h
{{div col end}}
{{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:Pages using div col with unknown parameters|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: {{BASEPAGENAME}}
{{#switch: {{ROOTPAGENAME}}
|Div col=<templatedata>
|Div col=<templatedata>
{
{
Line 314: Line 269:
"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": "22em",
"example": "30em"
"default": "30em"
},
},
"rules": {
"rules": {
Line 321: Line 275:
"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": "yes"
"example": "'yes' or '1px dashed blue'"
},
},
"gap": {
"gap": {
Line 328: Line 282:
"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 343: Line 291:
"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 362: Line 304:
</templatedata>
</templatedata>
}}
}}
 
<includeonly>{{Sandbox other||
==Redirects==
<!-- Categories below this line; interwikis at Wikidata -->
{{#ifeq:{{PAGENAME}}|Div col/doc|Redirects to {{tl|div col}}:}}
[[Category:Multi-column templates{{#translation:}}]]
{{#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 04:20, 6 December 2024

{{Div col}} formats a list into columns that wrap properly and compatibly with portable computer devices, especially PAD operating systems and small screens. It is not supported by Internet Explorer 9.

Purpose

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.

  • The list content is either provided by the |content= parameter (which can be restrictive of what content is allowed; e.g., wiki markup such as the | character must somehow be escaped), or terminated with {{div col end}}. The {{columns-list}} wrapper uses the parameter method for providing content (including its limitations).
  • The template system (family) also offers parameter options to place vertical lines parameter ("rules") between the columns (|rules=) and to add other custom styling (|style=).

{{Div col}} can create multiple columns in web browsers which support the following CSS properties:

By default, the template creates columns that are 30em wide.

This template's parameters

Descriptions

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). Can be specified in any CSS unit of measure, for instance, the em (about the width of the capital "M" of the displayed typeface), e.g., colwidth=20em. If no value is supplied, the template uses a default of 30em.
|rules=
Adds vertical lines ("rules") between the columns if set to yes or some CSS styling (e.g. 1px dashed blue;).
|gap=
Specifies the space between the content of adjacent columns. Specified in any CSS unit, e.g, gap=2em. The default spacing (set by browser) is 1em.
|style=
CSS styling to apply to the columns.
|content=
content to apply to the columns.

Example of "colwidth" parameter

Example with column width of 10em
{{div col|colwidth=10em}}
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
produces
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h

Example of "rules" parameter

Example
{{Div col|rules=yes}}
* a
* b
* c
* d
* e
* f
* g
* h
{{Div col end}}
produces
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h

Example of "gap" parameter

Example
{{Div col|colwidth=10em|rules=yes|gap=2em}}
* a
* b
* c
* d
* e
* f
* g
* h
{{Div col end}}
produces
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h

Example of "content" parameter

Example showing how to provide "content" parameter without using {{Div col end}}
{{Div col|colwidth=10em|content=
* a
* b
* c
* d
* e
* f
* g
* h
}}
produces
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h

Usage with multiple parameters

Parameters can be used in any order. Example:

{{Div col|colwidth=10em|rules=yes|gap=2em}}
* a
* b
* c
* d
* e
* f
* g
* h
{{Div col end}}

or

{{Div col|rules=yes|gap=2em|colwidth=10em}}
* a
* b
* c
* d
* e
* f
* g
* h
{{Div col end}}
produces
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h

and exactly the same result below

  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h
Example with column width of 20em
{{div col|colwidth=20em}}
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
produces
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h
Example with column width of 30em
{{div col|colwidth=30em}}
* a
* b
* c
* d
* e
* f
* g
* h
{{div col end}}
produces
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h
Example of how this template behaves if no bullets (generated by asterisk mark) are used.
{{div col|colwidth=10em}}
a
b
c
d
e
f
g
h
{{div col end}}
produces

a b c d e f g h

Tracking categories

TemplateData

This is the TemplateData for this template used by TemplateWizard, VisualEditor and other tools. See a monthly parameter usage report for Template:Div col in articles based on its 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}}.

Template parameters

ParameterDescriptionTypeStatus
Column widthcolwidth

Specifies the width of columns, and determines dynamically the number of columns based on screen width; more columns will be shown on wider displays.

Example
30em
Stringoptional
Rulesrules

Produces vertical rules between the columns if set to yes.

Example
'yes' or '1px dashed blue'
Stringoptional
Gap sizegap

Specifies the space between the content of adjacent columns.

Example
2em
Stringoptional
CSS stylestyle

Specifies any custom styling.

Stringoptional
Contentcontent

Specifies the content to divide into columns

Stringoptional