details
elementsummary
elementa
element to define a commandbutton
element to define a commandinput
element to define a commandoption
element to define a commandaccesskey
attribute
on a legend
element to define a commandaccesskey
attribute to define a command on other elementsdialog
elementdetails
elementSupport in all current engines.
Support in all current engines.
summary
element followed by flow content.open
— Whether the details are visible[Exposed =Window ]
interface HTMLDetailsElement : HTMLElement {
[HTMLConstructor ] constructor ();
[CEReactions ] attribute boolean open ;
};
The details
element represents a disclosure widget from which the
user can obtain additional information or controls.
The details
element is not appropriate for footnotes. Please see the section on footnotes for details on how to mark up footnotes.
The first summary
element child of the element, if any,
represents the summary or legend of the details. If there is no
child summary
element, the user agent should provide its own legend (e.g.
"Details").
The rest of the element's contents represents the additional information or controls.
The open
content
attribute is a boolean attribute. If present, it indicates that both the summary and
the additional information is to be shown to the user. If the attribute is absent, only the
summary is to be shown.
When the element is created, if the attribute is absent, the additional information should be hidden; if the attribute is present, that information should be shown. Subsequently, if the attribute is removed, then the information should be hidden; if the attribute is added, the information should be shown.
The user agent should allow the user to request that the additional information be shown or
hidden. To honor a request for the details to be shown, the user agent must set the open
attribute on the element to the empty string. To honor a
request for the information to be hidden, the user agent must remove the open
attribute from the element.
This ability to request that additional information be shown or hidden
may simply be the activation behavior of the appropriate
summary
element, in the case such an element exists. However, if no such element
exists, user agents can still provide this ability through some other user interface
affordance.
Whenever the open
attribute is added to or removed from
a details
element, the user agent must queue an element task on the
DOM manipulation task source given then details
element that runs the
following steps, which are known as the details notification task steps, for this
details
element:
If another task has been queued to run the details notification task steps for this
details
element, then return.
When the open
attribute is toggled
several times in succession, these steps essentially get coalesced so that only one event is
fired.
Fire an event named toggle
at the details
element.
The open
IDL attribute must reflect the open
content
attribute.
The following example shows the details
element being used to hide technical
details in a progress report.
< section class = "progress window" >
< h1 > Copying "Really Achieving Your Childhood Dreams"</ h1 >
< details >
< summary > Copying... < progress max = "375505392" value = "97543282" ></ progress > 25%</ summary >
< dl >
< dt > Transfer rate:</ dt > < dd > 452KB/s</ dd >
< dt > Local filename:</ dt > < dd > /home/rpausch/raycd.m4v</ dd >
< dt > Remote filename:</ dt > < dd > /var/www/lectures/raycd.m4v</ dd >
< dt > Duration:</ dt > < dd > 01:16:27</ dd >
< dt > Color profile:</ dt > < dd > SD (6-1-6)</ dd >
< dt > Dimensions:</ dt > < dd > 320×240</ dd >
</ dl >
</ details >
</ section >
The following shows how a details
element can be used to hide some controls by
default:
< details >
< summary >< label for = fn > Name & Extension:</ label ></ summary >
< p >< input type = text id = fn name = fn value = "Pillar Magazine.pdf" >
< p >< label >< input type = checkbox name = ext checked > Hide extension</ label >
</ details >
One could use this in conjunction with other details
in a list to allow the user
to collapse a set of fields down to a small set of headings, with the ability to open each
one.
In these examples, the summary really just summarizes what the controls can change, and not the actual values, which is less than ideal.
Because the open
attribute is added and removed
automatically as the user interacts with the control, it can be used in CSS to style the element
differently based on its state. Here, a style sheet is used to animate the color of the summary
when the element is opened or closed:
< style >
details > summary { transition : color 1 s ; color : black ; }
details [ open ] > summary { color : red ; }
</ style >
< details >
< summary > Automated Status: Operational</ summary >
< p > Velocity: 12m/s</ p >
< p > Direction: North</ p >
</ details >
summary
elementSupport in all current engines.
details
element.HTMLElement
.The summary
element represents a summary, caption, or legend for the
rest of the contents of the summary
element's parent details
element, if any.
A summary
element is a summary for its parent details if the following
algorithm returns true:
If this summary
element has no parent, then return false.
Let parent be this summary
element's parent.
If parent is not a details
element, then return false.
If parent's first summary
element child is not this
summary
element, then return false.
Return true.
The activation behavior of summary
elements is to run the following
steps:
If this summary
element is not the summary for its parent
details, then return.
Let parent be this summary
element's parent.
If the open
attribute is present on
parent, then remove it.
Otherwise, set parent's
open
attribute to the empty string.
This will then run the details notification task steps.
A command is the abstraction behind menu items, buttons, and links. Once a command is defined, other parts of the interface can refer to the same command, allowing many access points to a single feature to share facets such as the Disabled State.
Commands are defined to have the following facets:
User agents may expose the commands that match the following criteria:
User agents are encouraged to do this especially for commands that have Access Keys, as a way to advertise those keys to the user.
For example, such commands could be listed in the user agent's menu bar.
a
element to define a commandAn a
element with an href
attribute defines a command.
The Label of the command is the element's descendant text content.
The Access Key of the command is the element's assigned access key, if any.
The
of the command is true (hidden) if the element has a attribute, and false otherwise.The Disabled State facet of the command is true if the element or one of its ancestors is inert, and false otherwise.
The Action of the command is to fire a click
event at the element.
button
element to define a commandA button
element always defines a
command.
The Label, Access Key, , and Action facets of the command are determined as for a
elements (see the previous section).
The Disabled State of the command is true if the element or one of its ancestors is inert, or if the element's disabled state is set, and false otherwise.
input
element to define a commandAn input
element whose type
attribute is in
one of the Submit Button, Reset Button, Image
Button, Button, Radio Button, or Checkbox states defines a
command.
The Label of the command is determined as follows:
If the type
attribute is in one of the
Submit Button, Reset Button, Image
Button, or Button states, then the
Label is the string given by the
value
attribute, if any, and a UA-dependent,
locale-dependent value that the UA uses to label the button itself if the attribute is
absent.
Otherwise, if the element is a labeled control, then the Label is the descendant text content of the
first label
element in tree order whose labeled control
is the element in question. (In JavaScript terms, this is given by element.labels[0].textContent
.)
Otherwise, if the value
attribute is present, then
the Label is the value of that attribute.
Otherwise, the Label is the empty string.
Even though the value
attribute on
input
elements in the Image Button
state is non-conformant, the attribute can still contribute to the Label determination, if it is present and the Image Button's
alt
attribute is missing.
The Access Key of the command is the element's assigned access key, if any.
The
of the command is true (hidden) if the element has a attribute, and false otherwise.The Disabled State of the command is true if the element or one of its ancestors is inert, or if the element's disabled state is set, and false otherwise.
The Action of the command is to fire a click
event at the element.
option
element to define a commandAn option
element with an ancestor select
element and either no value
attribute or a value
attribute that is not the empty string defines a command.
The Label of the command is the value of the
option
element's label
attribute, if there is
one, or else the option
element's descendant text content, with ASCII whitespace stripped and collapsed.
The Access Key of the command is the element's assigned access key, if any.
The
of the command is true (hidden) if the element has a attribute, and false otherwise.The Disabled State of the command is true if
the element is disabled, or if its nearest ancestor
select
element is disabled, or if it or one
of its ancestors is inert, and false otherwise.
If the option
's nearest ancestor select
element has a multiple
attribute, the Action of the command is to toggle the option
element. Otherwise, the Action is to pick the option
element.
accesskey
attribute
on a legend
element to define a commandA legend
element defines a command if all of
the following are true:
It has an assigned access key.
It is a child of a fieldset
element.
Its parent has a descendant that defines a command
that is neither a label
element nor a legend
element. This element,
if it exists, is the legend
element's accesskey
delegatee.
The Label of the command is the element's descendant text content.
The Access Key of the command is the element's assigned access key.
The Disabled State, and Action facets of the command are the same as the respective
facets of the legend
element's accesskey
delegatee.
In this example, the legend
element specifies an accesskey
, which, when activated, will delegate to the
input
element inside the legend
element.
< fieldset >
< legend accesskey = p >
< label > I want < input name = pizza type = number step = 1 value = 1 min = 0 >
pizza(s) with these toppings</ label >
</ legend >
< label >< input name = pizza-cheese type = checkbox checked > Cheese</ label >
< label >< input name = pizza-ham type = checkbox checked > Ham</ label >
< label >< input name = pizza-pineapple type = checkbox > Pineapple</ label >
</ fieldset >
accesskey
attribute to define a command on other elementsAn element that has an assigned access key defines a command.
If one of the earlier sections that define elements that define commands define that this element defines a command, then that section applies to this element, and this section does not. Otherwise, this section applies to that element.
The Label of the command depends on the element. If
the element is a labeled control, the descendant text content of the
first label
element in tree order whose labeled control is
the element in question is the Label (in JavaScript
terms, this is given by element.labels[0].textContent
).
Otherwise, the Label is the element's descendant
text content.
The Access Key of the command is the element's assigned access key.
The
of the command is true (hidden) if the element has a attribute, and false otherwise.The Disabled State of the command is true if the element or one of its ancestors is inert, and false otherwise.
The Action of the command is to run the following steps:
click
event at the element.dialog
elementopen
— Whether the dialog box is showing[Exposed =Window ]
interface HTMLDialogElement : HTMLElement {
[HTMLConstructor ] constructor ();
[CEReactions ] attribute boolean open ;
attribute DOMString returnValue ;
[CEReactions ] undefined show ();
[CEReactions ] undefined showModal ();
[CEReactions ] undefined close (optional DOMString returnValue );
};
The dialog
element represents a part of an application that a user interacts with
to perform a task, for example a dialog box, inspector, or window.
The open
attribute
is a boolean attribute. When specified, it indicates that the dialog
element is active and that the user can interact with it.
A dialog
element without an open
attribute
specified should not be shown to the user. This requirement may be implemented indirectly through
the style layer. For example, user agents that support the suggested
default rendering implement this requirement using the CSS rules described in the rendering section.
Removing the open
attribute will usually hide the
dialog. However, doing so has a number of strange additional consequences:
The close
event will not be fired.
The close()
method, and any user-agent provided cancelation interface, will no longer be able
to close the dialog.
If the dialog was shown using its showModal()
method, the Document
will still be blocked.
For these reasons, it is generally better to never remove the open
attribute manually. Instead, use the close()
method to close the dialog, or the attribute to hide it.
The tabindex
attribute must not be specified on
dialog
elements.
show
()Displays the dialog
element.
showModal
()Displays the dialog
element and makes it the top-most modal dialog.
This method honors the autofocus
attribute.
close
( [ result ] )Closes the dialog
element.
The argument, if provided, provides a return value.
returnValue
[ = result ]Returns the dialog
's return value.
Can be set, to update the return value.
When the show()
method is invoked, the user agent must run the following steps:
If the element already has an open
attribute, then
return.
Add an open
attribute to the dialog
element, whose value is the empty string.
Set the dialog
to the normal alignment mode.
Run the dialog focusing steps for the dialog
element.
When the showModal()
method is invoked,
the user agent must run the following steps:
Let subject be the dialog
element on which the method was
invoked.
If subject already has an open
attribute, then throw an "InvalidStateError
" DOMException
.
If subject is not connected, then throw an
"InvalidStateError
" DOMException
.
Add an open
attribute to subject, whose value is the empty string.
Set the dialog
to the centered alignment mode.
Let subject's node document be blocked by the modal dialog subject.
This will cause the focused area of the document to become inert (unless that currently focused area is a shadow-including descendant of subject). In such cases, the focus fixup rule will kick in and reset the focused area of the document to the viewport for now. In a couple steps we will attempt to find a better candidate to focus.
If subject's node document's top layer does not already contain subject, then add subject to subject's node document's top layer.
Run the dialog focusing steps for subject.
The dialog focusing steps for a dialog
element subject are as follows:
If subject is inert, return.
Let control be the first descendant element of subject, in tree
order, that is not inert and has the autofocus
attribute specified.
If there isn't one, then let control be the first non-inert descendant element of subject, in tree order.
If there isn't one of those either, then let control be subject.
Run the focusing steps for control.
If control is not focusable, this will do nothing. For modal dialogs, this means that any earlier modifications to the focused area of the document will apply.
Let topDocument be the active document of control's node document's browsing context's top-level browsing context.
If control's node document's origin is not the same as the origin of topDocument, then return.
Empty topDocument's autofocus candidates.
Set topDocument's autofocus processed flag to true.
If at any time a dialog
element is removed from a Document
, then if that dialog
is in that
Document
's top layer, it must be removed from it.
When the close()
method is invoked, the user agent must close
the dialog that the method was invoked on. If the method was invoked with an argument, that
argument must be used as the return value; otherwise, there is no return value.
When a dialog
element subject is to be closed, optionally with a return value result, the user agent
must run the following steps:
If subject does not have an open
attribute, then return.
Remove subject's open
attribute.
If the argument result was provided, then set the returnValue
attribute to the value of result.
Queue an element task on the user interaction task source given the
subject element to fire an event named
close
at subject.
The returnValue
IDL attribute, on
getting, must return the last value to which it was set. On setting, it must be set to the new
value. When the element is created, it must be set to the empty string.
Canceling dialogs: When Document
is
blocked by a modal dialog dialog, user agents may provide a user interface
that, upon activation, queues an element task on the
user interaction task source given the dialog element to run these steps:
Let close be the result of firing an
event named cancel
at dialog, with the cancelable
attribute initialized to true.
If close is true and dialog has an open
attribute, then close the dialog with no
return value.
An example of such a UI mechanism would be the user pressing the "Escape" key.
A dialog
element is in one of two modes: normal alignment or
centered alignment. When a dialog
element is created, it must be placed in
the normal alignment mode. In this mode, normal CSS requirements apply to the
element. The centered alignment mode is only used for dialog
elements
that are in the top layer. [FULLSCREEN] [CSS]
When an element subject is placed in centered alignment mode, and when it is in that mode and has new rendering boxes created, the user agent must set up the element such that its static position of the edge that corresponds to subject's parent's block-start edge, for the purposes of calculating the used value of the appropriate box offset property ('top', 'right', 'bottom', or 'left'), is the value that would place the element's margin edge on the side that corresponds to subject's parent's block-start side as far from the same-side edge of the viewport as the element's opposing side margin edge from that same-side edge of the viewport, if the element's dimension ('width' or 'height') in subject's parent's block flow direction is less than the same-axis dimension of the viewport, and otherwise is the value that would place the element's margin edge on the side that corresponds to subject's parent's block-start side at the same-side edge of the viewport.
If there is a dialog
element with centered alignment and that is
being rendered when its browsing context changes viewport
dimensions (as measured in CSS pixels), or when this
dialog
element's parent changes block flow direction, then the user
agent must recreate the element's boxes, recalculating its edge that corresponds to this
dialog
element's parent's block-start edge as in the previous
paragraph.
This static position of a dialog
element's edge with centered
alignment must remain the element's static position of that edge until its boxes are
recreated. (The element's static position is only used in calculating the used value
of the appropriate box offset property ('top', 'right',
'bottom', or 'left') in certain situations; it's not used, for instance,
to position the element if its 'position' property is set to
'static'.)
User agents in visual interactive media should allow the user to pan the viewport
to access all parts of a dialog
element's border box, even if the
element is larger than the viewport and the viewport would otherwise not
have a scroll mechanism (e.g. because the viewport's 'overflow' property
is set to ).
The open
IDL
attribute must reflect the open
content
attribute.
This dialog box has some small print. The strong
element is used to draw the
user's attention to the more important part.
< dialog >
< h1 > Add to Wallet</ h1 >
< p >< strong >< label for = amt > How many gold coins do you want to add to your wallet?</ label ></ strong ></ p >
< p >< input id = amt name = amt type = number min = 0 step = 0.01 value = 100 ></ p >
< p >< small > You add coins at your own risk.</ small ></ p >
< p >< label >< input name = round type = checkbox > Only add perfectly round coins </ label ></ p >
< p >< input type = button onclick = "submit()" value = "Add Coins" ></ p >
</ dialog >