This feature allows for toggling the visibility of any part of the page.
目录 |
Probably the best way to learn how the toggle code works is to look at some examples (look at the source of this page).
[show all] [hide all] (only shows/hides items that use the Template:Hide template)
| Row 1, Column 1 | Row 1, Column 2 |
| Row 2, Column 1 | Row 2, Column 2 |
[open level 1]
Toggling is based on the CSS class. You can specify the class of any element with the class attribute. For wiki text, it is usually the most convenient to add a span or div and assign a class to that, e.g. <div class="class1 class2 class3">'''wiki text here'''</div>. Notice that multiple classes are separated by spaces. Some classes have special meaning and all of these special classes begin with "_toggle". For elements that should be initially hidden, set their CSS display property to none, e.g. <div class="class1" style="display:none;"...</div>
To define a basic toggler, add a class of the form _toggler-CLASS to an element. For example, <span class="_toggler-foo">foo toggler</span> produces foo toggler. Note that a link is automatically created but nothing happens when the link is clicked. That's because there are no elements of class "foo" on this page. If there were any such elements, all of their visibility would be toggled (i.e. if they are currently hidden, they are shown, and vice versa).
Some different type of togglers can also be created. The more general form for toggler classes are _toggler_OPERATION-CLASS, e.g. _toggler_show-foo. The default operation is the TOGGLE operation above. Other valid operations are:
Some things to note:
To make it easier to use without having to explicitly define classes to toggle, there is a notion of a toggle group. A new toggle group is created when the class "_togglegroup" is seen in some element. This special class serves no other purpose than to delimit the boundary of a toggle group. Within a toggle group, togglers can be defined without a class to refer to all toggles within the toggle group, e.g. "_toggler" or "_toggler_reset". Toggles within a toggle group are defined using the class "_toggle".
If Javascript is not enabled, usually you will want all of the content (or the important parts) to be shown. There are two special classes "_toggle_initshow" and "_toggle_inithide" which set the initial value of a toggle. This has a similar effect of setting the CSS display property. However, there are a couple differences. If you set the CSS display property, then when Javascript is not enabled, the object will be permanently set with that value. For example, an object hidden with display=none can never be shown if Javascript is turned off. Alternatively, if you do not set the CSS property and instead set _toggle_inithide, then if Javascript is on, the object will be hidden (and presumably will be toggleable), but if Javascript is off, the object will shown. The main disadvantage to using Javascript to initially hide an object is that the objects may briefly appear on the browser's screen before being hidden (doesn't look too nice). However, for accessibility reasons, it is probably preferable to allow non-Javascript browsers to view all the content.
Templates can make this much easier to use. Some existing templates are:
See MediaWiki:Common.js for the javascript code.