silkenweb_html/elements.rs
1//! All the HTML elements
2//!
3//! This code is derived from [Moxie DOM] under MIT/Apache-2.0 license on 2021-04-23
4//!
5//! [Moxie DOM]: https://github.com/anp/moxie
6
7use web_sys as dom;
8
9html_element!(
10 /// The [HTML `<a>` element (or *anchor* element)][mdn], along with its href attribute, creates
11 /// a hyperlink to other web pages, files, locations within the same page, email addresses, or
12 /// any other URL.
13 ///
14 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
15 a {
16 /// Prompts the user to save the linked URL instead of navigating to it. Can be used with or
17 /// without a value:
18 ///
19 /// * Without a value, the browser will suggest a filename/extension, generated from various
20 /// sources:
21 /// * The Content-Disposition HTTP header
22 /// * The final segment in the URL path
23 /// * The media type (from the (Content-Type header, the start of a data: URL, or
24 /// Blob.type for a blob: URL)
25 /// * Defining a value suggests it as the filename. `/` and `\` characters are converted to
26 /// underscores (_). Filesystems may forbid other characters in filenames, so browsers
27 /// will adjust the suggested name if necessary.
28 ///
29 /// > Notes:
30 /// > * download only works for same-origin URLs, or the blob: and data: schemes.
31 /// > * If Content-Disposition has a different filename than download, the header takes
32 /// > priority. (If `Content-Disposition: inline`, Firefox prefers the header while Chrome
33 /// > prefers download.)
34 download: String,
35
36 /// The URL that the hyperlink points to. Links are not restricted to HTTP-based URLs —
37 /// they can use any URL scheme supported by browsers:
38 ///
39 /// * Sections of a page with fragment URLs
40 /// * Pieces of media files with media fragments
41 /// * Telephone numbers with tel: URLs
42 /// * Email addresses with mailto: URLs
43 /// * While web browsers may not support other URL schemes, web sites can with
44 /// registerProtocolHandler()
45 href: String,
46
47 /// Hints at the human language of the linked URL. No built-in functionality. Allowed values
48 /// are the same as the global lang attribute.
49 hreflang: String,
50
51 /// A space-separated list of URLs. When the link is followed, the browser will send POST
52 /// requests with the body PING to the URLs. Typically for tracking.
53 ping: String,
54
55 /// The relationship of the linked URL as space-separated link types.
56 rel: String,
57
58 /// Where to display the linked URL, as the name for a browsing context (a tab, window, or
59 /// `<iframe>`). The following keywords have special meanings for where to load the URL:
60 ///
61 /// * `_self`: the current browsing context. (Default)
62 /// * `_blank`: usually a new tab, but users can configure browsers to open a new window
63 /// instead.
64 /// * `_parent`: the parent browsing context of the current one. If no parent, behaves as
65 /// _self.
66 /// * `_top`: the topmost browsing context (the "highest" context that’s an ancestor of the
67 /// current one). If no ancestors, behaves as _self.
68 ///
69 /// > Note: When using target, add rel="noreferrer noopener" to avoid exploitation of the
70 /// window.opener API;
71 ///
72 /// > Note: Linking to another page with target="_blank" will run the new page in the same
73 /// process as your page. If the new page executes JavaScript, your page's performance may
74 /// suffer. This can also be avoided by using rel="noreferrer noopener".
75 target: String,
76
77 /// Hints at the linked URL’s format with a MIME type. No built-in functionality.
78 type_: String,
79
80 }
81);
82
83dom_type!(a <dom::HtmlAnchorElement>);
84children_allowed!(a);
85
86html_element!(
87 /// The [HTML Abbreviation element (`<abbr>`)][mdn] represents an abbreviation or acronym; the
88 /// optional [`title`][title] attribute can provide an expansion or description for the
89 /// abbreviation.
90 ///
91 /// The title attribute has a specific semantic meaning when used with the `<abbr>` element; it
92 /// must contain a full human-readable description or expansion of the abbreviation. This text
93 /// is often presented by browsers as a tooltip when the mouse cursor is hovered over the
94 /// element.
95 ///
96 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/abbr
97 /// [title]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-title
98 abbr {
99 }
100);
101
102dom_type!(abbr <dom::HtmlElement>);
103children_allowed!(abbr);
104
105html_element!(
106 /// The [HTML Bring Attention To element (`<b>`)][mdn] is used to draw the reader's attention to
107 /// the element's contents, which are not otherwise granted special importance.
108 ///
109 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b
110 b {
111 }
112);
113
114dom_type!(b <dom::HtmlElement>);
115children_allowed!(b);
116
117html_element!(
118 /// The [HTML Bidirectional Isolate element (`<bdi>`)][mdn] tells the browser's bidirectional
119 /// algorithm to treat the text it contains in isolation from its surrounding text.
120 ///
121 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdi
122 bdi {
123 }
124);
125
126dom_type!(bdi <dom::HtmlElement>);
127children_allowed!(bdi);
128
129html_element!(
130 /// The [HTML Bidirectional Text Override element (`<bdo>`)][mdn] overrides the current
131 /// directionality of text, so that the text within is rendered in a different direction.
132 ///
133 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo
134 bdo {
135 /// The direction in which text should be rendered in this element's contents. Possible
136 /// values are:
137 ///
138 /// * `ltr`: Indicates that the text should go in a left-to-right direction.
139 /// * `rtl`: Indicates that the text should go in a right-to-left direction.
140 dir: String,
141
142 }
143);
144
145dom_type!(bdo <dom::HtmlElement>);
146children_allowed!(bdo);
147
148html_element!(
149 /// The [HTML `<br>` element][mdn] produces a line break in text (carriage-return). It is useful
150 /// for writing a poem or an address, where the division of lines is significant.
151 ///
152 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/br
153 br {
154 }
155);
156
157dom_type!(br <dom::HtmlBrElement>);
158
159html_element!(
160 /// The [HTML Citation element (`<cite>`)][mdn] is used to describe a reference to a cited
161 /// creative work, and must include the title of that work.
162 ///
163 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/cite
164 cite {
165 }
166);
167
168dom_type!(cite <dom::HtmlElement>);
169children_allowed!(cite);
170
171html_element!(
172 /// The [HTML `<code>` element][mdn] displays its contents styled in a fashion intended to
173 /// indicate that the text is a short fragment of computer code.
174 ///
175 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/code
176 code {
177 }
178);
179
180dom_type!(code <dom::HtmlElement>);
181children_allowed!(code);
182
183html_element!(
184 /// The [HTML `<data>` element][mdn] links a given content with a machine-readable translation.
185 /// If the content is time- or date-related, the [`<time>`][time] element must be used.
186 ///
187 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data
188 /// [time]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time
189 data {
190 /// This attribute specifies the machine-readable translation of the content of the element.
191 value: String,
192
193 }
194);
195
196dom_type!(data <dom::HtmlDataElement>);
197children_allowed!(data);
198
199html_element!(
200 /// The [HTML Definition element (`<dfn>`)][mdn] is used to indicate the term being defined
201 /// within the context of a definition phrase or sentence.
202 ///
203 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dfn
204 dfn {
205 }
206);
207
208dom_type!(dfn <dom::HtmlElement>);
209children_allowed!(dfn);
210
211html_element!(
212 /// The [HTML `<em>` element][mdn] marks text that has stress emphasis. The `<em>` element can
213 /// be nested, with each level of nesting indicating a greater degree of emphasis.
214 ///
215 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em
216 em {
217 }
218);
219
220dom_type!(em <dom::HtmlElement>);
221children_allowed!(em);
222
223html_element!(
224 /// The [HTML `<i>` element][mdn] represents a range of text that is set off from the normal
225 /// text for some reason. Some examples include technical terms, foreign language phrases, or
226 /// fictional character thoughts. It is typically displayed in italic type.
227 ///
228 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i
229 i {
230 }
231);
232
233dom_type!(i <dom::HtmlElement>);
234children_allowed!(i);
235
236html_element!(
237 /// The [HTML Keyboard Input element (`<kbd>`)][mdn] represents a span of inline text denoting
238 /// textual user input from a keyboard, voice input, or any other text entry device.
239 ///
240 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/kbd
241 kbd {
242 }
243);
244
245dom_type!(kbd <dom::HtmlElement>);
246children_allowed!(kbd);
247
248html_element!(
249 /// The [HTML Mark Text element (`<mark>`)][mdn] represents text which is marked or highlighted
250 /// for reference or notation purposes, due to the marked passage's relevance or importance in
251 /// the enclosing context.
252 ///
253 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark
254 mark {
255 }
256);
257
258dom_type!(mark <dom::HtmlElement>);
259children_allowed!(mark);
260
261html_element!(
262 /// The [HTML `<q>` element][mdn] indicates that the enclosed text is a short inline quotation.
263 /// Most modern browsers implement this by surrounding the text in quotation marks.
264 ///
265 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q
266 q {
267 /// The value of this attribute is a URL that designates a source document or message for
268 /// the information quoted. This attribute is intended to point to information explaining
269 /// the context or the reference for the quote.
270 cite: String,
271
272 }
273);
274
275dom_type!(q <dom::HtmlQuoteElement>);
276children_allowed!(q);
277
278html_element!(
279 /// The [HTML Ruby Base (`<rb>`) element][mdn] is used to delimit the base text component of
280 /// a [`<ruby>`][ruby] annotation, i.e. the text that is being annotated.
281 ///
282 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rb
283 /// [ruby]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby
284 rb {
285 }
286);
287
288dom_type!(rb <dom::HtmlElement>);
289children_allowed!(rb);
290
291html_element!(
292 /// The [HTML Ruby Fallback Parenthesis (`<rp>`) element][mdn] is used to provide fall-back
293 /// parentheses for browsers that do not support display of ruby annotations using the
294 /// [`<ruby>`][ruby] element.
295 ///
296 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rp
297 /// [ruby]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby
298 rp {
299 }
300);
301
302dom_type!(rp <dom::HtmlElement>);
303children_allowed!(rp);
304
305html_element!(
306 /// The [HTML Ruby Text (`<rt>`) element][mdn] specifies the ruby text component of a ruby
307 /// annotation, which is used to provide pronunciation, translation, or transliteration
308 /// information for East Asian typography. The `<rt>` element must always be contained within a
309 /// [`<ruby>`][ruby] element.
310 ///
311 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rt
312 /// [ruby]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby
313 rt {
314 }
315);
316
317dom_type!(rt <dom::HtmlElement>);
318children_allowed!(rt);
319
320html_element!(
321 /// The [HTML Ruby Text Container (`<rtc>`) element][mdn] embraces semantic annotations of
322 /// characters presented in a ruby of [`<rb>`][rb] elements used inside of [`<ruby>`][ruby]
323 /// element. [`<rb>`][rb] elements can have both pronunciation ([`<rt>`][rt]) and semantic
324 /// ([`<rtc>`][rtc]) annotations.
325 ///
326 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rtc
327 /// [rb]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rb
328 /// [ruby]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby
329 /// [rt]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rt
330 /// [rtc]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rtc
331 rtc {
332 }
333);
334
335dom_type!(rtc <dom::HtmlElement>);
336children_allowed!(rtc);
337
338html_element!(
339 /// The [HTML `<ruby>` element][mdn] represents a ruby annotation. Ruby annotations are for
340 /// showing pronunciation of East Asian characters.
341 ///
342 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby
343 ruby {
344 }
345);
346
347dom_type!(ruby <dom::HtmlElement>);
348children_allowed!(ruby);
349
350html_element!(
351 /// The [HTML `<s>` element][mdn] renders text with a strikethrough, or a line through it. Use
352 /// the `<s>` element to represent things that are no longer relevant or no longer accurate.
353 /// However, `<s>` is not appropriate when indicating document edits; for that, use the
354 /// [`<del>`][del] and [`<ins>`][ins] elements, as appropriate.
355 ///
356 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/s
357 /// [del]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del
358 /// [ins]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins
359 s {
360 }
361);
362
363dom_type!(s <dom::HtmlElement>);
364children_allowed!(s);
365
366html_element!(
367 /// The [HTML Sample Element (`<samp>`)][mdn] is used to enclose inline text which represents
368 /// sample (or quoted) output from a computer program.
369 ///
370 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/samp
371 samp {
372 }
373);
374
375dom_type!(samp <dom::HtmlElement>);
376children_allowed!(samp);
377
378html_element!(
379 /// The [HTML `<small>` element][mdn] represents side-comments and small print, like copyright
380 /// and legal text, independent of its styled presentation. By default, it renders text within
381 /// it one font-size small, such as from `small` to `x-small`.
382 ///
383 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small
384 small {
385 }
386);
387
388dom_type!(small <dom::HtmlElement>);
389children_allowed!(small);
390
391html_element!(
392 /// The [HTML `<span>` element][mdn] is a generic inline container for phrasing content, which
393 /// does not inherently represent anything. It can be used to group elements for styling
394 /// purposes (using the [`class`][class] or [`id`][id] attributes), or because they share
395 /// attribute values, such as [`lang`][lang].
396 ///
397 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span
398 /// [class]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-class
399 /// [id]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-id
400 /// [lang]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-lang
401 span {
402 }
403);
404
405dom_type!(span <dom::HtmlSpanElement>);
406children_allowed!(span);
407
408html_element!(
409 /// The [HTML Strong Importance Element (`<strong>`)][mdn] indicates that its contents have
410 /// strong importance, seriousness, or urgency. Browsers typically render the contents in bold
411 /// type.
412 ///
413 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong
414 strong {
415 }
416);
417
418dom_type!(strong <dom::HtmlElement>);
419children_allowed!(strong);
420
421html_element!(
422 /// The [HTML Subscript element (`<sub>`)][mdn] specifies inline text which should be displayed
423 /// as subscript for solely typographical reasons.
424 ///
425 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub
426 sub {
427 }
428);
429
430dom_type!(sub <dom::HtmlElement>);
431children_allowed!(sub);
432
433html_element!(
434 /// The [HTML Superscript element (`<sup>`)][mdn] specifies inline text which is to be displayed
435 /// as superscript for solely typographical reasons.
436 ///
437 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup
438 sup {
439 }
440);
441
442dom_type!(sup <dom::HtmlElement>);
443children_allowed!(sup);
444
445html_element!(
446 /// The [HTML `<time>` element][mdn] represents a specific period in time.
447 ///
448 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time
449 time {
450 /// This attribute indicates the time and/or date of the element and must be in one of the
451 /// formats described below.
452 datetime: String,
453
454 }
455);
456
457dom_type!(time <dom::HtmlTimeElement>);
458children_allowed!(time);
459
460html_element!(
461 /// The [HTML Unarticulated Annotation Element (`<u>`)][mdn] represents a span of inline text
462 /// which should be rendered in a way that indicates that it has a non-textual annotation.
463 ///
464 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/u
465 u {
466 }
467);
468
469dom_type!(u <dom::HtmlElement>);
470children_allowed!(u);
471
472html_element!(
473 /// The [HTML Variable element (`<var>`)][mdn] represents the name of a variable in a
474 /// mathematical expression or a programming context.
475 ///
476 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/var
477 var {
478 }
479);
480
481dom_type!(var <dom::HtmlElement>);
482children_allowed!(var);
483
484html_element!(
485 /// The [HTML `<wbr>` element][mdn] represents a word break opportunity—a position within text
486 /// where the browser may optionally break a line, though its line-breaking rules would not
487 /// otherwise create a break at that location.
488 ///
489 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/wbr
490 wbr {
491 }
492);
493
494dom_type!(wbr <dom::HtmlElement>);
495
496html_element!(
497 /// The [HTML `<del>` element][mdn] represents a range of text that has been deleted from a
498 /// document.
499 ///
500 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del
501 del {
502 /// A URI for a resource that explains the change (for example, meeting minutes).
503 cite: String,
504
505 /// This attribute indicates the time and date of the change and must be a valid date string
506 /// with an optional time. If the value cannot be parsed as a date with an optional time
507 /// string, the element does not have an associated time stamp. For the format of the string
508 /// without a time, see Date strings. The format of the string if it includes both date and
509 /// time is covered in Local date and time strings.
510 datetime: String,
511
512 }
513);
514
515dom_type!(del <dom::HtmlModElement>);
516children_allowed!(del);
517
518html_element!(
519 /// The [HTML `<ins>` element][mdn] represents a range of text that has been added to a
520 /// document.
521 ///
522 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins
523 ins {
524 /// A URI for a resource that explains the change (for example, meeting minutes).
525 cite: String,
526
527 /// This attribute indicates the time and date of the change and must be a valid date string
528 /// with an optional time. If the value cannot be parsed as a date with an optional time
529 /// string, the element does not have an associated time stamp. For the format of the string
530 /// without a time, see Date strings. The format of the string if it includes both date and
531 /// time is covered in Local date and time strings.
532 datetime: String,
533
534 }
535);
536
537dom_type!(ins <dom::HtmlModElement>);
538children_allowed!(ins);
539
540html_element!(
541 /// The [HTML `<address>` element][mdn] indicates that the enclosed HTML provides contact
542 /// information for a person or people, or for an organization.
543 ///
544 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/address
545 address {
546 }
547);
548
549dom_type!(address <dom::HtmlElement>);
550children_allowed!(address);
551
552html_element!(
553 /// The [HTML `<article>` element][mdn] represents a self-contained composition in a document,
554 /// page, application, or site, which is intended to be independently distributable or reusable
555 /// (e.g., in syndication).
556 ///
557 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article
558 article {
559 }
560);
561
562dom_type!(article <dom::HtmlElement>);
563children_allowed!(article);
564
565html_element!(
566 /// The [HTML `<aside>` element][mdn] represents a portion of a document whose content is only
567 /// indirectly related to the document's main content.
568 ///
569 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside
570 aside {
571 }
572);
573
574dom_type!(aside <dom::HtmlElement>);
575children_allowed!(aside);
576
577html_element!(
578 /// The [HTML `<footer>` element][mdn] represents a footer for its nearest [sectioning content]
579 /// or [sectioning root] element. A footer typically contains information about the author of
580 /// the section, copyright data or links to related documents.
581 ///
582 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/footer
583 /// [sectioning content]: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Sectioning_content
584 /// [sectioning root]: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Sections_and_Outlines_of_an_HTML5_document#Sectioning_roots
585 footer {
586 }
587);
588
589dom_type!(footer <dom::HtmlElement>);
590children_allowed!(footer);
591
592html_element!(
593 /// The [HTML `<header>` element][mdn] represents introductory content, typically a group of
594 /// introductory or navigational aids. It may contain some heading elements but also a logo, a
595 /// search form, an author name, and other elements.
596 ///
597 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header
598 header {
599 }
600);
601
602dom_type!(header <dom::HtmlElement>);
603children_allowed!(header);
604
605html_element!(
606 /// The [HTML `<h1>`–`<h6>` elements][mdn] represent six levels of section headings. `<h1>` is
607 /// the highest section level and `<h6>` is the lowest.
608 ///
609 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h1
610 h1 {
611 }
612);
613
614dom_type!(h1 <dom::HtmlHeadingElement>);
615children_allowed!(h1);
616
617html_element!(
618 /// The [HTML `<h1>`–`<h6>` elements][mdn] represent six levels of section headings. `<h1>` is
619 /// the highest section level and `<h6>` is the lowest.
620 ///
621 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h2
622 h2 {
623 }
624);
625
626dom_type!(h2 <dom::HtmlHeadingElement>);
627children_allowed!(h2);
628
629html_element!(
630 /// The [HTML `<h1>`–`<h6>` elements][mdn] represent six levels of section headings. `<h1>` is
631 /// the highest section level and `<h6>` is the lowest.
632 ///
633 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h3
634 h3 {
635 }
636);
637
638dom_type!(h3 <dom::HtmlHeadingElement>);
639children_allowed!(h3);
640
641html_element!(
642 /// The [HTML `<h1>`–`<h6>` elements][mdn] represent six levels of section headings. `<h1>` is
643 /// the highest section level and `<h6>` is the lowest.
644 ///
645 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h4
646 h4 {
647 }
648);
649
650dom_type!(h4 <dom::HtmlHeadingElement>);
651children_allowed!(h4);
652
653html_element!(
654 /// The [HTML `<h1>`–`<h6>` elements][mdn] represent six levels of section headings. `<h1>` is
655 /// the highest section level and `<h6>` is the lowest.
656 ///
657 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h5
658 h5 {
659 }
660);
661
662dom_type!(h5 <dom::HtmlHeadingElement>);
663children_allowed!(h5);
664
665html_element!(
666 /// The [HTML `<h1>`–`<h6>` elements][mdn] represent six levels of section headings. `<h1>` is
667 /// the highest section level and `<h6>` is the lowest.
668 ///
669 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h6
670 h6 {
671 }
672);
673
674dom_type!(h6 <dom::HtmlHeadingElement>);
675children_allowed!(h6);
676
677html_element!(
678 /// The [HTML `<hgroup>` element][mdn] represents a multi-level heading for a section of a
679 /// document. It groups a set of [`<h1>–<h6>`][heading] elements.
680 ///
681 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup
682 /// [heading]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements
683 hgroup {
684 }
685);
686
687dom_type!(hgroup <dom::HtmlElement>);
688children_allowed!(hgroup);
689
690html_element!(
691 /// The [HTML `<main>` element][mdn] represents the dominant content of the [`<body>`][body] of
692 /// a document. The main content area consists of content that is directly related to or expands
693 /// upon the central topic of a document, or the central functionality of an application.
694 ///
695 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/main
696 /// [body]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body
697 main {
698 }
699);
700
701dom_type!(main <dom::HtmlElement>);
702children_allowed!(main);
703
704html_element!(
705 /// The [HTML `<nav>` element][mdn] represents a section of a page whose purpose is to provide
706 /// navigation links, either within the current document or to other documents. Common examples
707 /// of navigation sections are menus, tables of contents, and indexes.
708 ///
709 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav
710 nav {
711 }
712);
713
714dom_type!(nav <dom::HtmlElement>);
715children_allowed!(nav);
716
717html_element!(
718 /// The [HTML `<section>` element][mdn] represents a standalone section — which doesn't have a
719 /// more specific semantic element to represent it — contained within an HTML document.
720 ///
721 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/section
722 section {
723 }
724);
725
726dom_type!(section <dom::HtmlElement>);
727children_allowed!(section);
728
729html_element!(
730 /// The [HTML `<embed>` element][mdn] embeds external content at the specified point in the
731 /// document. This content is provided by an external application or other source of interactive
732 /// content such as a browser plug-in.
733 ///
734 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed
735 embed {
736 /// The displayed height of the resource, in [CSS pixels]. This must be an absolute value;
737 /// percentages are not allowed.
738 ///
739 /// [CSS pixels]: https://drafts.csswg.org/css-values/#px
740 height: String,
741
742 /// The URL of the resource being embedded.
743 src: String,
744
745 /// The [MIME type] to use to select the plug-in to instantiate.
746 ///
747 /// [MIME type]: https://developer.mozilla.org/en-US/docs/Glossary/MIME_type
748 type_: String,
749
750 /// The displayed width of the resource, in [CSS pixels]. This must be an absolute value;
751 /// percentages are not allowed.
752 ///
753 /// [CSS pixels]: https://drafts.csswg.org/css-values/#px
754 width: String,
755
756 }
757);
758
759dom_type!(embed <dom::HtmlEmbedElement>);
760
761html_element!(
762 /// The [HTML Inline Frame element (`<iframe>`)][mdn] represents a nested [browsing context],
763 /// embedding another HTML page into the current one.
764 ///
765 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
766 /// [browsing context]: https://developer.mozilla.org/en-US/docs/Glossary/browsing_context
767 iframe {
768 /// Specifies a feature policy for the `<iframe>`.
769 allow: String,
770
771 /// The height of the frame in CSS pixels. Default is 150.
772 height: String,
773
774 /// A targetable name for the embedded browsing context. This can be used in the target
775 /// attribute of the `<a>`, `<form>`, or `<base>` elements; the formtarget attribute of the
776 /// `<input>` or `<button>` elements; or the windowName parameter in the window.open() method.
777 name: String,
778
779 /// Indicates which referrer to send when fetching the frame's resource.
780 referrerpolicy: String,
781
782 /// Applies extra restrictions to the content in the frame. The value of the attribute can
783 /// either be empty to apply all restrictions, or space-separated tokens to lift particular
784 /// restrictions:
785 ///
786 /// * allow-downloads-without-user-activation: Allows for downloads to occur without a
787 /// gesture from the user.
788 /// * allow-forms: Allows the resource to submit forms. If this keyword is not used, form
789 /// submission is blocked.
790 /// * allow-modals: Lets the resource open modal windows.
791 /// * allow-orientation-lock: Lets the resource lock the screen orientation.
792 /// * allow-pointer-lock: Lets the resource use the Pointer Lock API.
793 /// * allow-popups: Allows popups (such as window.open(), target="_blank", or
794 /// showModalDialog()). If this keyword is not used, the popup will silently fail to open.
795 /// * allow-popups-to-escape-sandbox: Lets the sandboxed document open new windows without
796 /// those windows inheriting the sandboxing. For example, this can safely sandbox an
797 /// advertisement without forcing the same restrictions upon the page the ad links to.
798 /// * allow-presentation: Lets the resource start a presentation session.
799 /// * allow-same-origin: If this token is not used, the resource is treated as being from a
800 /// special origin that always fails the same-origin policy.
801 /// * allow-scripts: Lets the resource run scripts (but not create popup windows).
802 /// * allow-storage-access-by-user-activation : Lets the resource request access to the
803 /// parent's storage capabilities with the Storage Access API.
804 /// * allow-top-navigation: Lets the resource navigate the top-level browsing context (the
805 /// one named _top).
806 /// * allow-top-navigation-by-user-activation: Lets the resource navigate the top-level
807 /// browsing context, but only if initiated by a user gesture.
808 ///
809 /// Notes about sandboxing:
810 ///
811 /// When the embedded document has the same origin as the embedding page, it is strongly
812 /// discouraged to use both allow-scripts and allow-same-origin, as that lets the embedded
813 /// document remove the sandbox attribute — making it no more secure than not using the
814 /// sandbox attribute at all.
815 ///
816 /// Sandboxing is useless if the attacker can display content outside a sandboxed iframe —
817 /// such as if the viewer opens the frame in a new tab. Such content should be also served
818 /// from a separate origin to limit potential damage.
819 sandbox: String,
820
821 /// The URL of the page to embed. Use a value of about:blank to embed an empty page that
822 /// conforms to the same-origin policy. Also note that programatically removing an
823 /// `<iframe>`'s src attribute (e.g. via Element.removeAttribute()) causes about:blank to be
824 /// loaded in the frame in Firefox (from version 65), Chromium-based browsers, and
825 /// Safari/iOS.
826 src: String,
827
828 /// Inline HTML to embed, overriding the src attribute. If a browser does not support the
829 /// srcdoc attribute, it will fall back to the URL in the src attribute.
830 srcdoc: String,
831
832 /// The width of the frame in CSS pixels. Default is 300.
833 width: String,
834
835 }
836);
837
838dom_type!(iframe <dom::HtmlIFrameElement>);
839children_allowed!(iframe);
840
841html_element!(
842 /// The [HTML `<object>` element][mdn] represents an external resource, which can be treated as
843 /// an image, a nested browsing context, or a resource to be handled by a plugin.
844 ///
845 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object
846 object {
847 /// Specifies the URL of the resource.
848 data: String,
849
850 /// The form element, if any, that the object element is associated with (its form owner).
851 /// The value of the attribute must be an ID of a `<form>` element in the same document.
852 form: String,
853
854 /// The height of the displayed resource, in CSS pixels. No percentages.
855 height: String,
856
857 /// The name of valid browsing context.
858 name: String,
859
860 /// The content type of the resource specified by data. At least one of data and type must
861 /// be defined.
862 type_: String,
863
864 /// Indicates if the type attribute and the actual content type of the resource must match
865 /// to be used.
866 typemustmatch: bool,
867
868 /// A hash-name reference to a `<map>` element; that is a '#' followed by the value of a name
869 /// of a map element.
870 usemap: String,
871
872 /// The width of the display resource, in CSS pixels. No percentages.
873 width: String,
874
875 }
876);
877
878dom_type!(object <dom::HtmlObjectElement>);
879children_allowed!(object);
880
881html_element!(
882 /// The [HTML `<param>` element][param] defines parameters for an [`<object>`][object] element.
883 ///
884 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/param
885 /// [object]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object
886 param {
887 /// Name of the parameter.
888 name: String,
889
890 /// Specifies the value of the parameter.
891 value: String,
892
893 }
894);
895
896dom_type!(param <dom::HtmlParamElement>);
897
898html_element!(
899 /// The [HTML `<picture>` element][mdn] contains zero or more [`<source>`][source] elements and
900 /// one [`<img>`][img] element to provide versions of an image for different display/device
901 /// scenarios.
902 ///
903 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture
904 /// [source]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source
905 /// [img]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img
906 picture {
907 }
908);
909
910dom_type!(picture <dom::HtmlPictureElement>);
911children_allowed!(picture);
912
913html_element!(
914 /// The [HTML `<source>` element][source] specifies multiple media resources for the
915 /// [`<picture>`][picture], the [`<audio>`][audio] element, or the [`<video>`][video] element.
916 ///
917 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source
918 /// [picture]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture
919 /// [audio]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio
920 /// [video]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video
921 source {
922 /// Media query of the resource's intended media; this should be used only in a `<picture>`
923 /// element.
924 media: String,
925
926 /// Is a list of source sizes that describes the final rendered width of the image
927 /// represented by the source. Each source size consists of a comma-separated list of media
928 /// condition-length pairs. This information is used by the browser to determine, before
929 /// laying the page out, which image defined in srcset to use. Please note that sizes will
930 /// have its effect only if width dimension descriptors are provided with srcset instead of
931 /// pixel ratio values (200w instead of 2x for example).
932 ///
933 /// The sizes attribute has an effect only when the `<source>` element is the direct child of
934 /// a `<picture>` element.
935 sizes: String,
936
937 /// Required for `<audio>` and `<video>`, address of the media resource. The value of this
938 /// attribute is ignored when the `<source>` element is placed inside a `<picture>` element.
939 src: String,
940
941 /// A list of one or more strings separated by commas indicating a set of possible images
942 /// represented by the source for the browser to use. Each string is composed of:
943 ///
944 /// 1. One URL specifying an image.
945 /// 2. A width descriptor, which consists of a string containing a positive integer directly
946 /// followed by "w", such as 300w. The default value, if missing, is the infinity.
947 /// 3. A pixel density descriptor, that is a positive floating number directly followed by
948 /// "x". The default value, if missing, is 1x.
949 ///
950 /// Each string in the list must have at least a width descriptor or a pixel density
951 /// descriptor to be valid. Among the list, there must be only one string containing the
952 /// same tuple of width descriptor and pixel density descriptor. The browser chooses the
953 /// most adequate image to display at a given point of time.
954 ///
955 /// The srcset attribute has an effect only when the `<source>` element is the direct child of
956 /// a `<picture>` element.
957 srcset: String,
958
959 /// The MIME media type of the resource, optionally with a codecs parameter.
960 type_: String,
961
962 }
963);
964
965dom_type!(source <dom::HtmlSourceElement>);
966
967html_element!(
968 /// Use the [HTML `<canvas>` element][mdn] with either the [canvas scripting API][api] or the
969 /// [WebGL API][gl] to draw graphics and animations.
970 ///
971 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas
972 /// [api]: https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API
973 /// [gl]: https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API
974 canvas {
975 /// The height of the coordinate space in CSS pixels. Defaults to 150.
976 height: String,
977
978 /// The width of the coordinate space in CSS pixels. Defaults to 300.
979 width: String,
980
981 }
982);
983
984dom_type!(canvas <dom::HtmlCanvasElement>);
985children_allowed!(canvas);
986
987html_element!(
988 /// The [HTML `<noscript>` element][mdn] defines a section of HTML to be inserted if a script
989 /// type on the page is unsupported or if scripting is currently turned off in the browser.
990 ///
991 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript
992 noscript {
993 }
994);
995
996dom_type!(noscript <dom::HtmlElement>);
997children_allowed!(noscript);
998
999html_element!(
1000 /// The [HTML `<script>` element][mdn] is used to embed or reference executable code; this is
1001 /// typically used to embed or refer to JavaScript code.
1002 ///
1003 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
1004 script {
1005 /// For classic scripts, if the async attribute is present, then the classic script will be
1006 /// fetched in parallel to parsing and evaluated as soon as it is available.
1007 ///
1008 /// For module scripts, if the async attribute is present then the scripts and all their
1009 /// dependencies will be executed in the defer queue, therefore they will get fetched in
1010 /// parallel to parsing and evaluated as soon as they are available.
1011 ///
1012 /// This attribute allows the elimination of parser-blocking JavaScript where the browser
1013 /// would have to load and evaluate scripts before continuing to parse. defer has a similar
1014 /// effect in this case.
1015 async_: bool,
1016
1017 /// Normal script elements pass minimal information to the window.onerror for scripts which
1018 /// do not pass the standard CORS checks. To allow error logging for sites which use a
1019 /// separate domain for static media, use this attribute.
1020 crossorigin: String,
1021
1022 /// Indicates to a browser that the script is meant to be executed after the document has
1023 /// been parsed, but before firing DOMContentLoaded.
1024 ///
1025 /// Scripts with the defer attribute will prevent the DOMContentLoaded event from firing
1026 /// until the script has loaded and finished evaluating.
1027 ///
1028 /// This attribute must not be used if the src attribute is absent (i.e. for inline
1029 /// scripts), in this case it would have no effect.
1030 ///
1031 /// The defer attribute has no effect on module scripts — they defer by default.
1032 ///
1033 /// Scripts with the defer attribute will execute in the order in which they appear in the
1034 /// document.
1035 ///
1036 /// This attribute allows the elimination of parser-blocking JavaScript where the browser
1037 /// would have to load and evaluate scripts before continuing to parse. async has a similar
1038 /// effect in this case.
1039 defer: bool,
1040
1041 /// This attribute contains inline metadata that a user agent can use to verify that a
1042 /// fetched resource has been delivered free of unexpected manipulation.
1043 integrity: String,
1044
1045 /// Indicates that the script should not be executed in browsers that support ES2015 modules
1046 /// — in effect, this can be used to serve fallback scripts to older browsers that do not
1047 /// support modular JavaScript code.
1048 nomodule: bool,
1049
1050 /// A cryptographic nonce (number used once) to whitelist scripts in a script-src
1051 /// Content-Security-Policy. The server must generate a unique nonce value each time it
1052 /// transmits a policy. It is critical to provide a nonce that cannot be guessed as
1053 /// bypassing a resource's policy is otherwise trivial.
1054 nonce: String,
1055
1056 /// Indicates which referrer to send when fetching the script, or resources fetched by the
1057 /// script.
1058 referrerpolicy: String,
1059
1060 /// This attribute specifies the URI of an external script; this can be used as an
1061 /// alternative to embedding a script directly within a document.
1062 src: String,
1063
1064 /// This attribute indicates the type of script represented. The value of this attribute
1065 /// will be in one of the following categories:
1066 ///
1067 /// * Omitted or a JavaScript MIME type: This indicates the script is JavaScript. The HTML5
1068 /// specification urges authors to omit the attribute rather than provide a redundant MIME
1069 /// type.
1070 /// * `module`: Causes the code to be treated as a JavaScript module. The processing of the
1071 /// script contents is not affected by the charset and defer attributes. Unlike classic
1072 /// scripts, module scripts require the use of the CORS protocol for cross-origin
1073 /// fetching.
1074 /// * Any other value: The embedded content is treated as a data block which won't be
1075 /// processed by the browser. Developers must use a valid MIME type that is not a
1076 /// JavaScript MIME type to denote data blocks. The src attribute will be ignored.
1077 type_: String,
1078
1079 }
1080);
1081
1082dom_type!(script <dom::HtmlScriptElement>);
1083children_allowed!(script);
1084
1085html_element!(
1086 /// The [HTML `<area>` element][mdn] defines a hot-spot region on an image, and optionally
1087 /// associates it with a [hypertext link]. This element is used only within a [`<map>`][map]
1088 /// element.
1089 ///
1090 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area
1091 /// [hypertext link]: https://developer.mozilla.org/en-US/docs/Glossary/Hyperlink
1092 /// [map]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map
1093 area {
1094 /// A text string alternative to display on browsers that do not display images. The text
1095 /// should be phrased so that it presents the user with the same kind of choice as the image
1096 /// would offer when displayed without the alternative text. This attribute is required only
1097 /// if the href attribute is used.
1098 alt: String,
1099
1100 /// A set of values specifying the coordinates of the hot-spot region. The number and
1101 /// meaning of the values depend upon the value specified for the shape attribute.
1102 ///
1103 /// * rect or rectangle: the coords value is two x,y pairs: left, top, right, bottom.
1104 /// * circle: the value is x,y,r where x,y is a pair specifying the center of the circle and
1105 /// r is a value for the radius.
1106 /// * poly or polygon: the value is a set of x,y pairs for each point in the polygon:
1107 /// x1,y1,x2,y2,x3,y3, and so on.
1108 ///
1109 /// The values are numbers of CSS pixels.
1110 coords: String,
1111
1112 /// This attribute, if present, indicates that the author intends the hyperlink to be used
1113 /// for downloading a resource. See `<a>` for a full description of the download attribute.
1114 download: bool,
1115
1116 /// The hyperlink target for the area. Its value is a valid URL. This attribute may be
1117 /// omitted; if so, the area element does not represent a hyperlink.
1118 href: String,
1119
1120 /// Indicates the language of the linked resource. Allowed values are determined by BCP47.
1121 /// Use this attribute only if the href attribute is present.
1122 hreflang: String,
1123
1124 /// Contains a space-separated list of URLs to which, when the hyperlink is followed, POST
1125 /// requests with the body PING will be sent by the browser (in the background). Typically
1126 /// used for tracking.
1127 ping: String,
1128
1129 /// For anchors containing the href attribute, this attribute specifies the relationship of
1130 /// the target object to the link object. The value is a space-separated list of link types
1131 /// values. The values and their semantics will be registered by some authority that might
1132 /// have meaning to the document author. The default relationship, if no other is given, is
1133 /// void. Use this attribute only if the href attribute is present.
1134 rel: String,
1135
1136 /// This attribute specifies where to display the linked resource. It is a name of, or
1137 /// keyword for, a browsing context (for example, tab, window, or inline frame). The
1138 /// following keywords have special meanings:
1139 ///
1140 /// * _self: Load the response into the same browsing context as the current one. This value
1141 /// is the default if the attribute is not specified.
1142 /// * _blank: Load the response into a new unnamed browsing context.
1143 /// * _parent: Load the response into the parent browsing context of the current one. If
1144 /// there is no parent, this option behaves the same way as _self.
1145 /// * _top: Load the response into the top-level browsing context (that is, the browsing
1146 /// context that is an ancestor of the current one, and has no parent). If there is no
1147 /// parent, this option behaves the same way as _self.
1148 ///
1149 /// Use this attribute only if the `href` attribute is present.
1150 target: String,
1151
1152 }
1153);
1154
1155dom_type!(area <dom::HtmlAreaElement>);
1156
1157html_element!(
1158 /// The [HTML `<audio>` element][mdn] is used to embed sound content in documents. It may
1159 /// contain one or more audio sources, represented using the `src` attribute or the
1160 /// [`<source>`][source] element: the browser will choose the most suitable one. It can also be
1161 /// the destination for streamed media, using a [`MediaStream`][stream].
1162 ///
1163 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio
1164 /// [source]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source
1165 /// [stream]: https://developer.mozilla.org/en-US/docs/Web/API/MediaStream
1166 audio {
1167 /// If specified, the audio will automatically begin playback as soon as it can do so,
1168 /// without waiting for the entire audio file to finish downloading.
1169 ///
1170 /// Note: Sites that automatically play audio (or videos with an audio track) can be an
1171 /// unpleasant experience for users, so should be avoided when possible. If you must offer
1172 /// autoplay functionality, you should make it opt-in (requiring a user to specifically
1173 /// enable it). However, this can be useful when creating media elements whose source will
1174 /// be set at a later time, under user control. See our autoplay guide for additional
1175 /// information about how to properly use autoplay.
1176 autoplay: bool,
1177
1178 /// If this attribute is present, the browser will offer controls to allow the user to
1179 /// control audio playback, including volume, seeking, and pause/resume playback.
1180 controls: bool,
1181
1182 /// This enumerated attribute indicates whether to use CORS to fetch the related audio file.
1183 /// CORS-enabled resources can be reused in the `<canvas>` element without being tainted.
1184 ///
1185 /// When not present, the resource is fetched without a CORS request (i.e. without sending
1186 /// the Origin: HTTP header), preventing its non-tainted used in `<canvas>` elements. If
1187 /// invalid, it is handled as if the enumerated keyword anonymous was used.
1188 ///
1189 /// The allowed values are:
1190 ///
1191 /// # `anonymous`
1192 ///
1193 /// Sends a cross-origin request without a credential. In other words, it sends the
1194 /// `Origin: HTTP` header without a cookie, X.509 certificate, or performing HTTP Basic
1195 /// authentication. If the server does not give credentials to the origin site (by not
1196 /// setting the `Access-Control-Allow-Origin: HTTP` header), the image will be tainted, and
1197 /// its usage restricted.
1198 ///
1199 /// # `use-credentials`
1200 ///
1201 /// Sends a cross-origin request with a credential. In other words, it sends the
1202 /// `Origin: HTTP` header with a cookie, a certificate, or performing HTTP Basic
1203 /// authentication. If the server does not give credentials to the origin site (through
1204 /// `Access-Control-Allow-Credentials: HTTP` header), the image will be tainted and its
1205 /// usage restricted.
1206 crossorigin: String,
1207
1208 /// Reading currentTime returns a double-precision floating-point value indicating the
1209 /// current playback position, in seconds, of the audio. If the audio's metadata isn't
1210 /// available yet—thereby preventing you from knowing the media's start time or
1211 /// duration—currentTime instead indicates, and can be used to change, the time at which
1212 /// playback will begin. Otherwise, setting currentTime sets the current playback position
1213 /// to the given time and seeks the media to that position if the media is currently loaded.
1214 ///
1215 /// If the audio is being streamed, it's possible that the user agent may not be able to
1216 /// obtain some parts of the resource if that data has expired from the media buffer. Other
1217 /// audio may have a media timeline that doesn't start at 0 seconds, so setting currentTime
1218 /// to a time before that would fail. For example, if the audio's media timeline starts at
1219 /// 12 hours, setting currentTime to 3600 would be an attempt to set the current playback
1220 /// position well before the beginning of the media, and would fail. The getStartDate()
1221 /// method can be used to determine the beginning point of the media timeline's reference
1222 /// frame.
1223 current_time: String,
1224
1225 /// If specified, the audio player will automatically seek back to the start upon reaching
1226 /// the end of the audio.
1227 loop_: bool,
1228
1229 /// Indicates whether the audio will be initially silenced. Its default value is false.
1230 muted: bool,
1231
1232 /// This enumerated attribute is intended to provide a hint to the browser about what the
1233 /// author thinks will lead to the best user experience. It may have one of the following
1234 /// values:
1235 ///
1236 /// * `none`: Indicates that the audio should not be preloaded.
1237 /// * `metadata`: Indicates that only audio metadata (e.g. length) is fetched.
1238 /// * `auto`: Indicates that the whole audio file can be downloaded, even if the user is not
1239 /// expected to use it.
1240 /// * empty string: A synonym of the auto value.
1241 ///
1242 /// The default value is different for each browser. The spec advises it to be set to
1243 /// metadata.
1244 ///
1245 /// Usage notes:
1246 ///
1247 /// The autoplay attribute has precedence over preload. If autoplay is specified, the
1248 /// browser would obviously need to start downloading the audio for playback.
1249 ///
1250 /// The browser is not forced by the specification to follow the value of this attribute; it
1251 /// is a mere hint.
1252 preload: String,
1253
1254 /// The URL of the audio to embed. This is subject to HTTP access controls. This is
1255 /// optional; you may instead use the `<source>` element within the audio block to specify
1256 /// the audio to embed.
1257 src: String,
1258
1259 }
1260);
1261
1262dom_type!(audio <dom::HtmlAudioElement>);
1263children_allowed!(audio);
1264
1265html_element!(
1266 /// The [HTML `<img>` element][mdn] embeds an image into the document.
1267 ///
1268 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img
1269 img {
1270 /// Defines an alternative text description of the image.
1271 ///
1272 /// > Note: Browsers do not always display images. For example:
1273 /// >
1274 /// > * Non-visual browsers (such as those used by people with visual impairments)
1275 /// > * The user chooses not to display images (saving bandwidth, privacy reasons)
1276 /// > * The image is invalid or an unsupported type
1277 /// > * In these cases, the browser may replace the image with the text in the element's alt
1278 /// attribute. For these reasons and others, provide a useful value for alt whenever
1279 /// possible.
1280 ///
1281 /// Omitting alt altogether indicates that the image is a key part of the content and no
1282 /// textual equivalent is available. Setting this attribute to an empty string (alt="")
1283 /// indicates that this image is not a key part of the content (it’s decoration or a
1284 /// tracking pixel), and that non-visual browsers may omit it from rendering. Visual
1285 /// browsers will also hide the broken image icon if the alt is empty and the image failed
1286 /// to display.
1287 ///
1288 /// This attribute is also used when copying and pasting the image to text, or saving a
1289 /// linked image to a bookmark.
1290 alt: String,
1291
1292 /// Indicates if the fetching of the image must be done using a CORS request. Image data
1293 /// from a CORS-enabled image returned from a CORS request can be reused in the `<canvas>`
1294 /// element without being marked "tainted".
1295 ///
1296 /// If the crossorigin attribute is not specified, then a non-CORS request is sent (without
1297 /// the Origin request header), and the browser marks the image as tainted and restricts
1298 /// access to its image data, preventing its usage in `<canvas>` elements.
1299 ///
1300 /// If the crossorigin attribute is specified, then a CORS request is sent (with the Origin
1301 /// request header); but if the server does not opt into allowing cross-origin access to the
1302 /// image data by the origin site (by not sending any Access-Control-Allow-Origin response
1303 /// header, or by not including the site's origin in any Access-Control-Allow-Origin
1304 /// response header it does send), then the browser marks the image as tainted and restricts
1305 /// access to its image data, preventing its usage in `<canvas>` elements.
1306 ///
1307 /// Allowed values:
1308 ///
1309 /// * `anonymous`: A CORS request is sent with credentials omitted (that is, no cookies,
1310 /// X.509 certificates, or Authorization request header).
1311 /// * `use-credentials`: The CORS request is sent with any credentials included (that is,
1312 /// cookies, X.509 certificates, and the `Authorization` request header). If the server
1313 /// does not opt into sharing credentials with the origin site (by sending back the
1314 /// `Access-Control-Allow-Credentials: true` response header), then the browser marks the
1315 /// image as tainted and restricts access to its image data.
1316 ///
1317 /// If the attribute has an invalid value, browsers handle it as if the anonymous value was
1318 /// used.
1319 crossorigin: String,
1320
1321 /// Provides an image decoding hint to the browser. Allowed values:
1322 ///
1323 /// * `sync`: Decode the image synchronously, for atomic presentation with other content.
1324 /// * `async`: Decode the image asynchronously, to reduce delay in presenting other content.
1325 /// * `auto`: Default: no preference for the decoding mode. The browser decides what is best
1326 /// for the user.
1327 decoding: String,
1328
1329 /// The intrinsic height of the image, in pixels. Must be an integer without a unit.
1330 height: String,
1331
1332 /// Indicates that the image is part of a server-side map. If so, the coordinates where the
1333 /// user clicked on the image are sent to the server.
1334 ///
1335 /// Note: This attribute is allowed only if the `<img>` element is a descendant of an `<a>`
1336 /// element with a valid href attribute. This gives users without pointing devices a
1337 /// fallback destination.
1338 ismap: bool,
1339
1340 /// Indicates how the browser should load the image:
1341 ///
1342 /// * `eager`: Loads the image immediately, regardless of whether or not the image is
1343 /// currently within the visible viewport (this is the default value).
1344 /// * `lazy`: Defers loading the image until it reaches a calculated distance from the
1345 /// viewport, as defined by the browser. The intent is to avoid the network and storage
1346 /// bandwidth needed to handle the image until it's reasonably certain that it will be
1347 /// needed. This generally improves the performance of the content in most typical use
1348 /// cases.
1349 ///
1350 /// > Note: Loading is only deferred when JavaScript is enabled. This is an anti-tracking
1351 /// measure, because if a user agent supported lazy loading when scripting is disabled, it
1352 /// would still be possible for a site to track a user's approximate scroll position
1353 /// throughout a session, by strategically placing images in a page's markup such that a
1354 /// server can track how many images are requested and when.
1355 loading: String,
1356
1357 /// One or more strings separated by commas, indicating a set of source sizes. Each source
1358 /// size consists of:
1359 ///
1360 /// * A media condition. This must be omitted for the last item in the list.
1361 /// * A source size value.
1362 ///
1363 /// Media Conditions describe properties of the viewport, not of the image. For example,
1364 /// (max-height: 500px) 1000px proposes to use a source of 1000px width, if the viewport is
1365 /// not higher than 500px.
1366 ///
1367 /// Source size values specify the intended display size of the image. User agents use the
1368 /// current source size to select one of the sources supplied by the srcset attribute, when
1369 /// those sources are described using width (w) descriptors. The selected source size
1370 /// affects the intrinsic size of the image (the image’s display size if no CSS styling is
1371 /// applied). If the srcset attribute is absent, or contains no values with a width
1372 /// descriptor, then the sizes attribute has no effect.
1373 sizes: String,
1374
1375 /// The image URL. Mandatory for the `<img>` element. On browsers supporting srcset, src is
1376 /// treated like a candidate image with a pixel density descriptor 1x, unless an image with
1377 /// this pixel density descriptor is already defined in srcset, or unless srcset contains w
1378 /// descriptors.
1379 src: String,
1380
1381 /// One or more strings separated by commas, indicating possible image sources for the user
1382 /// agent to use. Each string is composed of:
1383 ///
1384 /// * A URL to an image
1385 /// * Optionally, whitespace followed by one of:
1386 /// * A width descriptor (a positive integer directly followed by w). The width descriptor
1387 /// is divided by the source size given in the sizes attribute to calculate the
1388 /// effective pixel density.
1389 /// * A pixel density descriptor (a positive floating point number directly followed by
1390 /// x).
1391 /// * If no descriptor is specified, the source is assigned the default descriptor of 1x.
1392 ///
1393 /// It is incorrect to mix width descriptors and pixel density descriptors in the same
1394 /// srcset attribute. Duplicate descriptors (for instance, two sources in the same srcset
1395 /// which are both described with 2x) are also invalid.
1396 ///
1397 /// The user agent selects any of the available sources at its discretion. This provides
1398 /// them with significant leeway to tailor their selection based on things like user
1399 /// preferences or bandwidth conditions. See our Responsive images tutorial for an example.
1400 srcset: String,
1401
1402 /// The intrinsic width of the image in pixels. Must be an integer without a unit.
1403 width: String,
1404
1405 /// The partial URL (starting with #) of an image map associated with the element.
1406 ///
1407 /// Note: You cannot use this attribute if the `<img>` element is inside an `<a>` or
1408 /// `<button>` element.
1409 usemap: String,
1410
1411 }
1412);
1413
1414dom_type!(img <dom::HtmlImageElement>);
1415
1416html_element!(
1417 /// The [HTML `<map>` element][mdn] is used with [`<area>`][area] elements to define an image
1418 /// map (a clickable link area).
1419 ///
1420 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map
1421 /// [area]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area
1422 map {
1423 /// The name attribute gives the map a name so that it can be referenced. The attribute must
1424 /// be present and must have a non-empty value with no space characters. The value of the
1425 /// name attribute must not be a compatibility-caseless match for the value of the name
1426 /// attribute of another `<map>` element in the same document. If the id attribute is also
1427 /// specified, both attributes must have the same value.
1428 name: String,
1429
1430 }
1431);
1432
1433dom_type!(map <dom::HtmlMapElement>);
1434children_allowed!(map);
1435
1436html_element!(
1437 /// The [HTML `<track>` element][mdn] is used as a child of the media elements
1438 /// [`<audio>`][audio] and [`<video>`][video]. It lets you specify timed text tracks (or
1439 /// time-based data), for example to automatically handle subtitles. The tracks are formatted in
1440 /// [WebVTT format][vtt] (`.vtt` files) — Web Video Text Tracks or [Timed Text Markup Language
1441 /// (TTML)][ttml].
1442 ///
1443 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track
1444 /// [audio]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio
1445 /// [video]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video
1446 /// [vtt]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Video_Text_Tracks_Format
1447 /// [ttml]: https://w3c.github.io/ttml2/index.html
1448 track {
1449 /// This attribute indicates that the track should be enabled unless the user's preferences
1450 /// indicate that another track is more appropriate. This may only be used on one track
1451 /// element per media element.
1452 default: bool,
1453
1454 /// How the text track is meant to be used. If omitted the default kind is subtitles. If the
1455 /// attribute is not present, it will use the subtitles. If the attribute contains an
1456 /// invalid value, it will use metadata. The following keywords are allowed:
1457 /// Subtitles provide translation of content that cannot be understood by the viewer. For
1458 /// example dialogue or text that is not English in an English language film.
1459 ///
1460 /// Subtitles may contain additional content, usually extra background information. For
1461 /// example the text at the beginning of the Star Wars films, or the date, time, and
1462 /// location of a scene.
1463 subtitles: String,
1464
1465 /// Closed captions provide a transcription and possibly a translation of audio.
1466 ///
1467 /// It may include important non-verbal information such as music cues or sound effects. It
1468 /// may indicate the cue's source (e.g. music, text, character).
1469 ///
1470 /// Suitable for users who are deaf or when the sound is muted.
1471 captions: String,
1472
1473 /// Textual description of the video content.
1474 ///
1475 /// * `descriptions`: Suitable for users who are blind or where the video cannot be seen.
1476 /// * `chapters`: Chapter titles are intended to be used when the user is navigating the
1477 /// media resource.
1478 /// * `metadata`: Tracks used by scripts. Not visible to the user.
1479 /// * `label`: A user-readable title of the text track which is used by the browser when
1480 /// listing available text tracks.
1481 kind: String,
1482
1483 /// Address of the track (.vtt file). Must be a valid URL. This attribute must be specified
1484 /// and its URL value must have the same origin as the document — unless the `<audio>` or
1485 /// `<video>` parent element of the track element has a crossorigin attribute.
1486 src: String,
1487
1488 /// Language of the track text data. It must be a valid BCP 47 language tag. If the kind
1489 /// attribute is set to subtitles, then srclang must be defined.
1490 srclang: String,
1491
1492 }
1493);
1494
1495dom_type!(track <dom::HtmlTrackElement>);
1496
1497html_element!(
1498 /// The [HTML Video element (`<video>`)][mdn] embeds a media player which supports video
1499 /// playback into the document.
1500 ///
1501 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video
1502 video {
1503 /// If specified, the video automatically begins to play back as soon as it can do so
1504 /// without stopping to finish loading the data.
1505 ///
1506 /// Note: Sites that automatically play audio (or videos with an audio track) can be an
1507 /// unpleasant experience for users, so should be avoided when possible. If you must offer
1508 /// autoplay functionality, you should make it opt-in (requiring a user to specifically
1509 /// enable it). However, this can be useful when creating media elements whose source will
1510 /// be set at a later time, under user control. See our autoplay guide for additional
1511 /// information about how to properly use autoplay.
1512 ///
1513 /// To disable video autoplay, autoplay="false" will not work; the video will autoplay if
1514 /// the attribute is there in the `<video>` tag at all. To remove autoplay, the attribute
1515 /// needs to be removed altogether.
1516 autoplay: bool,
1517
1518 /// An attribute you can read to determine the time ranges of the buffered media. This
1519 /// attribute contains a TimeRanges object.
1520 buffered: String,
1521
1522 /// If this attribute is present, the browser will offer controls to allow the user to
1523 /// control video playback, including volume, seeking, and pause/resume playback.
1524 controls: bool,
1525
1526 /// This enumerated attribute indicates whether to use CORS to fetch the related image.
1527 /// CORS-enabled resources can be reused in the `<canvas>` element without being tainted.
1528 /// The allowed values are:
1529 ///
1530 /// * `anonymous`: Sends a cross-origin request without a credential. In other words, it
1531 /// sends the `Origin: HTTP` header without a cookie, X.509 certificate, or performing
1532 /// HTTP Basic authentication. If the server does not give credentials to the origin site
1533 /// (by not setting the `Access-Control-Allow-Origin: HTTP` header), the image will be
1534 /// tainted, and its usage restricted.
1535 /// * `use-credentials`: Sends a cross-origin request with a credential. In other words, it
1536 /// sends the Origin: HTTP header with a cookie, a certificate, or performing HTTP Basic
1537 /// authentication. If the server does not give credentials to the origin site (through
1538 /// `Access-Control-Allow-Credentials: HTTP` header), the image will be tainted and its
1539 /// usage restricted.
1540 ///
1541 /// When not present, the resource is fetched without a CORS request (i.e. without sending
1542 /// the `Origin: HTTP` header), preventing its non-tainted used in `<canvas>` elements. If
1543 /// invalid, it is handled as if the enumerated keyword anonymous was used.
1544 crossorigin: String,
1545
1546 /// Reading currentTime returns a double-precision floating-point value indicating the
1547 /// current playback position of the media specified in seconds. If the media has not
1548 /// started playing yet, the time offset at which it will begin is returned. Setting
1549 /// currentTime sets the current playback position to the given time and seeks the media to
1550 /// that position if the media is currently loaded.
1551 ///
1552 /// If the media is being streamed, it's possible that the user agent may not be able to
1553 /// obtain some parts of the resource if that data has expired from the media buffer. Other
1554 /// media may have a media timeline that doesn't start at 0 seconds, so setting currentTime
1555 /// to a time before that would fail. The getStartDate() method can be used to determine the
1556 /// beginning point of the media timeline's reference frame.
1557 current_time: String,
1558
1559 /// The height of the video's display area, in CSS pixels (absolute values only; no
1560 /// percentages.)
1561 height: String,
1562
1563 /// If specified, the browser will automatically seek back to the start upon reaching the
1564 /// end of the video.
1565 loop_: bool,
1566
1567 /// Indicates the default setting of the audio contained in the video. If set, the audio
1568 /// will be initially silenced. Its default value is false, meaning that the audio will be
1569 /// played when the video is played.
1570 muted: bool,
1571
1572 /// Indicating that the video is to be played "inline", that is within the element's
1573 /// playback area. Note that the absence of this attribute does not imply that the video
1574 /// will always be played in fullscreen.
1575 playsinline: bool,
1576
1577 /// A URL for an image to be shown while the video is downloading. If this attribute isn't
1578 /// specified, nothing is displayed until the first frame is available, then the first frame
1579 /// is shown as the poster frame.
1580 poster: String,
1581
1582 /// This enumerated attribute is intended to provide a hint to the browser about what the
1583 /// author thinks will lead to the best user experience with regards to what content is
1584 /// loaded before the video is played. It may have one of the following values:
1585 ///
1586 /// * `none`: Indicates that the video should not be preloaded.
1587 /// * `metadata`: Indicates that only video metadata (e.g. length) is fetched.
1588 /// * `auto`: Indicates that the whole video file can be downloaded, even if the user is not
1589 /// expected to use it.
1590 /// * empty string: Synonym of the auto value.
1591 ///
1592 /// The default value is different for each browser. The spec advises it to be set to
1593 /// metadata.
1594 ///
1595 /// > Note:
1596 /// >
1597 /// > The autoplay attribute has precedence over preload. If autoplay is specified, the
1598 /// browser would obviously need to start downloading the video for playback.
1599 /// >
1600 /// > The specification does not force the browser to follow the value of this attribute; it
1601 /// is a mere hint.
1602 preload: String,
1603
1604 /// The URL of the video to embed. This is optional; you may instead use the `<source>`
1605 /// element within the video block to specify the video to embed.
1606 src: String,
1607
1608 /// The width of the video's display area, in CSS pixels (absolute values only; no
1609 /// percentages).
1610 width: String,
1611
1612 }
1613);
1614
1615dom_type!(video <dom::HtmlVideoElement>);
1616children_allowed!(video);
1617
1618html_element!(
1619 /// The [HTML Details Element (`<details>`)][mdn] creates a disclosure widget in which
1620 /// information is visible only when the widget is toggled into an "open" state.
1621 ///
1622 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details
1623 details {
1624 /// Indicates whether the details will be shown on page load.
1625 open: bool,
1626
1627 }
1628);
1629
1630dom_type!(details <dom::HtmlDetailsElement>);
1631children_allowed!(details);
1632
1633html_element!(
1634 /// The [HTML `<dialog>` element][mdn] represents a dialog box or other interactive component,
1635 /// such as an inspector or window.
1636 ///
1637 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog
1638 dialog {
1639 /// Indicates that the dialog is active and can be interacted with. When the open attribute
1640 /// is not set, the dialog shouldn't be shown to the user.
1641 open: bool,
1642
1643 }
1644);
1645
1646dom_type!(dialog <dom::HtmlDialogElement>);
1647children_allowed!(dialog);
1648
1649html_element!(
1650 /// The [HTML `<menu>` element][mdn] represents a group of commands that a user can perform or
1651 /// activate. This includes both list menus, which might appear across the top of a screen, as
1652 /// well as context menus, such as those that might appear underneath a button after it has been
1653 /// clicked.
1654 ///
1655 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu
1656 menu {
1657 }
1658);
1659
1660dom_type!(menu <dom::HtmlMenuElement>);
1661children_allowed!(menu);
1662
1663html_element!(
1664 /// The [HTML Disclosure Summary element (`<summary>`)][mdn] element specifies a summary,
1665 /// caption, or legend for a [`<details>`][details] element's disclosure box.
1666 ///
1667 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary
1668 /// [details]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details
1669 summary {
1670 }
1671);
1672
1673dom_type!(summary <dom::HtmlElement>);
1674children_allowed!(summary);
1675
1676html_element!(
1677 /// The [HTML `<blockquote>` element][mdn] (or *HTML Block Quotation Element*) indicates that
1678 /// the enclosed text is an extended quotation. Usually, this is rendered visually by
1679 /// indentation. A URL for the source of the quotation may be given using the `cite` attribute,
1680 /// while a text representation of the source can be given using the [`<cite>`][cite] element.
1681 ///
1682 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote
1683 /// [cite]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/cite
1684 blockquote {
1685 /// A URL that designates a source document or message for the information quoted. This
1686 /// attribute is intended to point to information explaining the context or the reference
1687 /// for the quote.
1688 cite: String,
1689
1690 }
1691);
1692
1693dom_type!(blockquote <dom::HtmlQuoteElement>);
1694children_allowed!(blockquote);
1695
1696html_element!(
1697 /// The [HTML `<dd>` element][mdn] provides the description, definition, or value for the
1698 /// preceding term ([`<dt>`][dt]) in a description list ([`<dl>`][dl]).
1699 ///
1700 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dd
1701 /// [dt]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt
1702 /// [dl]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl
1703 dd {
1704 }
1705);
1706
1707dom_type!(dd <dom::HtmlElement>);
1708children_allowed!(dd);
1709
1710html_element!(
1711 /// The [HTML Content Division element (`<div>`)][mdn] is the generic container for flow
1712 /// content. It has no effect on the content or layout until styled using [CSS].
1713 ///
1714 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div
1715 /// [CSS]: https://developer.mozilla.org/en-US/docs/Glossary/CSS
1716 div {
1717 }
1718);
1719
1720dom_type!(div <dom::HtmlDivElement>);
1721children_allowed!(div);
1722
1723html_element!(
1724 /// The [HTML `<dl>` element][mdn] represents a description list. The element encloses a list of
1725 /// groups of terms (specified using the [`<dt>`][dt] element) and descriptions (provided by
1726 /// [`<dd>`][dd] elements). Common uses for this element are to implement a glossary or to
1727 /// display metadata (a list of key-value pairs).
1728 ///
1729 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl
1730 /// [dt]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt
1731 /// [dd]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dd
1732 dl {
1733 }
1734);
1735
1736dom_type!(dl <dom::HtmlDListElement>);
1737children_allowed!(dl);
1738
1739html_element!(
1740 /// The [HTML `<dt>` element][mdn] specifies a term in a description or definition list, and as
1741 /// such must be used inside a [`<dl>`][dl] element.
1742 ///
1743 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt
1744 /// [dl]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl
1745 dt {
1746 }
1747);
1748
1749dom_type!(dt <dom::HtmlElement>);
1750children_allowed!(dt);
1751
1752html_element!(
1753 /// The [HTML `<figcaption>` or Figure Caption element][mdn] represents a caption or legend
1754 /// describing the rest of the contents of its parent [`<figure>`][figure] element.
1755 ///
1756 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figcaption
1757 /// [figure]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure
1758 figcaption {
1759 }
1760);
1761
1762dom_type!(figcaption <dom::HtmlElement>);
1763children_allowed!(figcaption);
1764
1765html_element!(
1766 /// The [HTML `<figure>` (Figure With Optional Caption) element][mdn] represents self-contained
1767 /// content, potentially with an optional caption, which is specified using the
1768 /// ([`<figcaption>`][figcaption]) element.
1769 ///
1770 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure
1771 /// [figcaption]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figcaption
1772 figure {
1773 }
1774);
1775
1776dom_type!(figure <dom::HtmlElement>);
1777children_allowed!(figure);
1778
1779html_element!(
1780 /// The [HTML `<hr>` element][mdn] represents a thematic break between paragraph-level elements:
1781 /// for example, a change of scene in a story, or a shift of topic within a section.
1782 ///
1783 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr
1784 hr {
1785 }
1786);
1787
1788dom_type!(hr <dom::HtmlHrElement>);
1789
1790html_element!(
1791 /// The [HTML `<li>` element][mdn] is used to represent an item in a list.
1792 ///
1793 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li
1794 li {
1795 }
1796);
1797
1798dom_type!(li <dom::HtmlLiElement>);
1799children_allowed!(li);
1800
1801html_element!(
1802 /// The [HTML `<ol>` element][mdn] represents an ordered list of items, typically rendered as a
1803 /// numbered list.
1804 ///
1805 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol
1806 ol {
1807 /// Specifies that the list’s items are in reverse order. Items will be numbered from high
1808 /// to low.
1809 reversed: bool,
1810
1811 /// An integer to start counting from for the list items. Always an Arabic numeral (1, 2, 3,
1812 /// etc.), even when the numbering type is letters or Roman numerals. For example, to start
1813 /// numbering elements from the letter "d" or the Roman numeral "iv," use start="4".
1814 start: u32,
1815
1816 /// Sets the numbering type:
1817 ///
1818 /// * `a` for lowercase letters
1819 /// * `A` for uppercase letters
1820 /// * `i` for lowercase Roman numerals
1821 /// * `I` for uppercase Roman numerals
1822 /// * `1` for numbers (default)
1823 ///
1824 /// The specified type is used for the entire list unless a different type attribute is used
1825 /// on an enclosed `<li>` element.
1826 ///
1827 /// > Note: Unless the type of the list number matters (like legal or technical documents
1828 /// where items are referenced by their number/letter), use the CSS list-style-type property
1829 /// instead.
1830 type_: String,
1831
1832 }
1833);
1834
1835dom_type!(ol <dom::HtmlOListElement>);
1836children_allowed!(ol);
1837
1838html_element!(
1839 /// The [HTML `<p>` element][mdn] represents a paragraph.
1840 ///
1841 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/p
1842 p {
1843 }
1844);
1845
1846dom_type!(p <dom::HtmlParagraphElement>);
1847children_allowed!(p);
1848
1849html_element!(
1850 /// The [HTML `<pre>` element][mdn] represents preformatted text which is to be presented
1851 /// exactly as written in the HTML file.
1852 ///
1853 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre
1854 pre {
1855 }
1856);
1857
1858dom_type!(pre <dom::HtmlPreElement>);
1859children_allowed!(pre);
1860
1861html_element!(
1862 /// The [HTML `<ul>` element][mdn] represents an unordered list of items, typically rendered as
1863 /// a bulleted list.
1864 ///
1865 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul
1866 ul {
1867 }
1868);
1869
1870dom_type!(ul <dom::HtmlUListElement>);
1871children_allowed!(ul);
1872
1873html_element!(
1874 /// The [HTML Table Caption element (`<caption>`)][mdn] specifies the caption (or title) of a
1875 /// table, and if used is *always* the first child of a [`<table>`][table].
1876 ///
1877 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption
1878 /// [table]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table
1879 caption {
1880 }
1881);
1882
1883dom_type!(caption <dom::HtmlTableCaptionElement>);
1884children_allowed!(caption);
1885
1886html_element!(
1887 /// The [HTML `<col>` element][mdn] defines a column within a table and is used for defining
1888 /// common semantics on all common cells. It is generally found within a [`<colgroup>`][cg]
1889 /// element.
1890 ///
1891 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col
1892 /// [cg]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup
1893 col {
1894 /// This attribute contains a positive integer indicating the number of consecutive columns
1895 /// the `<col>` element spans. If not present, its default value is 1.
1896 span: String,
1897
1898 }
1899);
1900
1901dom_type!(col <dom::HtmlTableColElement>);
1902
1903html_element!(
1904 /// The [HTML `<colgroup>` element][mdn] defines a group of columns within a table.
1905 ///
1906 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup
1907 colgroup {
1908 /// This attribute contains a positive integer indicating the number of consecutive columns
1909 /// the `<colgroup>` element spans. If not present, its default value is 1.
1910 ///
1911 /// > Note: This attribute is applied on the attributes of the column group, it has no
1912 /// > effect on the CSS styling rules associated with it or, even more, to the cells of the
1913 /// > column's members of the group.
1914 /// >
1915 /// > The span attribute is not permitted if there are one or more `<col>` elements within
1916 /// > the `<colgroup>`.
1917 span: String,
1918
1919 }
1920);
1921
1922dom_type!(colgroup <dom::HtmlTableColElement>);
1923children_allowed!(colgroup);
1924
1925html_element!(
1926 /// The [HTML `<table>` element][mdn] represents tabular data — that is, information presented
1927 /// in a two-dimensional table comprised of rows and columns of cells containing data.
1928 ///
1929 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table
1930 table {
1931 }
1932);
1933
1934dom_type!(table <dom::HtmlTableElement>);
1935children_allowed!(table);
1936
1937html_element!(
1938 /// The [HTML Table Body element (`<tbody>`)][mdn] encapsulates a set of table rows
1939 /// ([`<tr>`][tr] elements), indicating that they comprise the body of the table
1940 /// ([`<table>`][table]).
1941 ///
1942 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody
1943 /// [tr]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr
1944 /// [table]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table
1945 tbody {
1946 }
1947);
1948
1949dom_type!(tbody <dom::HtmlTableSectionElement>);
1950children_allowed!(tbody);
1951
1952html_element!(
1953 /// The [HTML `<td>` element][mdn] defines a cell of a table that contains data. It participates
1954 /// in the *table model*.
1955 ///
1956 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td
1957 td {
1958 /// This attribute contains a non-negative integer value that indicates for how many columns
1959 /// the cell extends. Its default value is 1. Values higher than 1000 will be considered as
1960 /// incorrect and will be set to the default value (1).
1961 colspan: String,
1962
1963 /// This attribute contains a list of space-separated strings, each corresponding to the id
1964 /// attribute of the `<th>` elements that apply to this element.
1965 headers: String,
1966
1967 /// This attribute contains a non-negative integer value that indicates for how many rows
1968 /// the cell extends. Its default value is 1; if its value is set to 0, it extends until the
1969 /// end of the table section (`<thead>`, `<tbody>`, `<tfoot>`, even if implicitly defined),
1970 /// that the cell belongs to. Values higher than 65534 are clipped down to 65534.
1971 rowspan: String,
1972
1973 }
1974);
1975
1976dom_type!(td <dom::HtmlTableCellElement>);
1977children_allowed!(td);
1978
1979html_element!(
1980 /// The [HTML `<tfoot>` element][mdn] defines a set of rows summarizing the columns of the
1981 /// table.
1982 ///
1983 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot
1984 tfoot {
1985 }
1986);
1987
1988dom_type!(tfoot <dom::HtmlTableSectionElement>);
1989children_allowed!(tfoot);
1990
1991html_element!(
1992 /// The [HTML `<th>` element][mdn] defines a cell as header of a group of table cells. The exact
1993 /// nature of this group is defined by the [`scope`][scope] and [`headers`][headers] attributes.
1994 ///
1995 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th
1996 /// [scope]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-scope
1997 /// [headers]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-headers
1998 th {
1999 /// This attribute contains a short abbreviated description of the cell's content. Some
2000 /// user-agents, such as speech readers, may present this description before the content
2001 /// itself.
2002 abbr: String,
2003
2004 /// This attribute contains a non-negative integer value that indicates for how many columns
2005 /// the cell extends. Its default value is 1. Values higher than 1000 will be considered as
2006 /// incorrect and will be set to the default value (1).
2007 colspan: String,
2008
2009 /// This attribute contains a list of space-separated strings, each corresponding to the id
2010 /// attribute of the `<th>` elements that apply to this element.
2011 headers: String,
2012
2013 /// This attribute contains a non-negative integer value that indicates for how many rows
2014 /// the cell extends. Its default value is 1; if its value is set to 0, it extends until the
2015 /// end of the table section (`<thead>`, `<tbody>`, `<tfoot>`, even if implicitly defined),
2016 /// that the cell belongs to. Values higher than 65534 are clipped down to 65534.
2017 rowspan: String,
2018
2019 /// This enumerated attribute defines the cells that the header (defined in the `<th>`)
2020 /// element relates to. It may have the following values:
2021 ///
2022 /// * `row`: The header relates to all cells of the row it belongs to.
2023 /// * `col`: The header relates to all cells of the column it belongs to.
2024 /// * `rowgroup`: The header belongs to a rowgroup and relates to all of its cells. These
2025 /// cells can be placed to the right or the left of the header, depending on the value of
2026 /// the dir attribute in the `<table>` element.
2027 /// * `colgroup`: The header belongs to a colgroup and relates to all of its cells.
2028 /// * `auto`
2029 ///
2030 /// The default value when this attribute is not specified is auto.
2031 scope: String,
2032
2033 }
2034);
2035
2036dom_type!(th <dom::HtmlTableCellElement>);
2037children_allowed!(th);
2038
2039html_element!(
2040 /// The [HTML `<thead>` element][mdn] defines a set of rows defining the head of the columns of
2041 /// the table.
2042 ///
2043 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead
2044 thead {
2045 }
2046);
2047
2048dom_type!(thead <dom::HtmlTableSectionElement>);
2049children_allowed!(thead);
2050
2051html_element!(
2052 /// The [HTML `<tr>` element][mdn] defines a row of cells in a table. The row's cells can then
2053 /// be established using a mix of [`<td>`][td] (data cell) and [`<th>`][th] (header cell)
2054 /// elements.
2055 ///
2056 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr
2057 /// [td]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td
2058 /// [th]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th
2059 tr {
2060 }
2061);
2062
2063dom_type!(tr <dom::HtmlTableRowElement>);
2064children_allowed!(tr);
2065
2066html_element!(
2067 /// The [HTML `<base> element`][mdn] specifies the base URL to use for all relative URLs
2068 /// contained within a document. There can be only one `<base>` element in a document.
2069 ///
2070 /// If either of its inherent attributes are specified, this element must come before other
2071 /// elements with attributes whose values are URLs, such as <link>’s href attribute.
2072 ///
2073 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
2074 base {
2075 /// The base URL to be used throughout the document for relative URLs. Absolute and relative
2076 /// URLs are allowed.
2077 href: String,
2078
2079 /// A keyword or author-defined name of the default browsing context to display the result
2080 /// when links or forms cause navigation, for `<a>` or `<form>` elements without an explicit
2081 /// target attribute. The attribute value targets a browsing context (such as a tab, window,
2082 /// or `<iframe>`).
2083 ///
2084 /// The following keywords have special meanings:
2085 ///
2086 /// * `_self`: Load the result into the same browsing context as the current one. (This is
2087 /// the default.)
2088 /// * `_blank`: Load the result into a new, unnamed browsing context.
2089 /// * `_parent`: Load the result into the parent browsing context of the current one. (If
2090 /// the current page is inside a frame.) If there is no parent, behaves the same way as
2091 /// _self.
2092 /// * `_top`: Load the result into the topmost browsing context (that is, the browsing
2093 /// context that is an ancestor of the current one, and has no parent). If there is no
2094 /// parent, behaves the same way as _self.
2095 target: String,
2096
2097 }
2098);
2099
2100dom_type!(base <dom::HtmlBaseElement>);
2101
2102html_element!(
2103 /// The [HTML `<head>` element][mdn] contains machine-readable information ([metadata]) about
2104 /// the document, like its [title], [scripts], and [style sheets].
2105 ///
2106 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head
2107 /// [metadata]: https://developer.mozilla.org/en-US/docs/Glossary/metadata
2108 /// [title]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title
2109 /// [scripts]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
2110 /// [style sheets]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style
2111 head {
2112 }
2113);
2114
2115dom_type!(head <dom::HtmlHeadElement>);
2116children_allowed!(head);
2117
2118html_element!(
2119 /// The [HTML External Resource Link element (`<link>`)][mdn] specifies relationships between
2120 /// the current document and an external resource. This element is most commonly used to link to
2121 /// [stylesheets], but is also used to establish site icons (both "favicon" style icons and
2122 /// icons for the home screen and apps on mobile devices) among other things.
2123 ///
2124 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link
2125 /// [stylesheets]: https://developer.mozilla.org/en-US/docs/Glossary/CSS
2126 link {
2127 /// This attribute is only used when rel="preload" or rel="prefetch" has been set on the
2128 /// `<link>` element. It specifies the type of content being loaded by the `<link>`, which is
2129 /// necessary for request matching, application of correct content security policy, and
2130 /// setting of correct Accept request header. Furthermore, rel="preload" uses this as a
2131 /// signal for request prioritization. The table below lists the valid values for this
2132 /// attribute and the elements or resources they apply to.
2133 ///
2134 /// | Value | Applies To |
2135 /// | -------- | ------------------------------------------------------------------------- |
2136 /// | audio | `<audio>` elements |
2137 /// | document | `<iframe>` and `<frame>` elements |
2138 /// | embed | `<embed>` elements |
2139 /// | fetch | fetch, XHR (also requires `<link>` to contain the crossorigin attribute.) |
2140 /// | font | CSS @font-face |
2141 /// | image | `<img>` and `<picture>` elements with srcset or imageset attributes, |
2142 /// | | SVG `<image>` elements, CSS *-image rules |
2143 /// | object | `<object>` elements |
2144 /// | script | `<script>` elements, Worker importScripts |
2145 /// | style | `<link rel=stylesheet>` elements, CSS @import |
2146 /// | track | `<track>` elements |
2147 /// | video | `<video>` elements |
2148 /// | worker | Worker, SharedWorker |
2149 as_: String,
2150
2151 /// This enumerated attribute indicates whether CORS must be used when fetching the
2152 /// resource. CORS-enabled images can be reused in the `<canvas>` element without being
2153 /// tainted. The allowed values are:
2154 ///
2155 /// * `anonymous`: A cross-origin request (i.e. with an Origin HTTP header) is performed,
2156 /// but no credential is sent (i.e. no cookie, X.509 certificate, or HTTP Basic
2157 /// authentication). If the server does not give credentials to the origin site (by not
2158 /// setting the Access-Control-Allow-Origin HTTP header) the resource will be tainted and
2159 /// its usage restricted.
2160 /// * `use-credentials`: A cross-origin request (i.e. with an Origin HTTP header) is
2161 /// performed along with a credential sent (i.e. a cookie, certificate, and/or HTTP Basic
2162 /// authentication is performed). If the server does not give credentials to the origin
2163 /// site (through Access-Control-Allow-Credentials HTTP header), the resource will be
2164 /// tainted and its usage restricted.
2165 ///
2166 /// If the attribute is not present, the resource is fetched without a CORS request (i.e.
2167 /// without sending the Origin HTTP header), preventing its non-tainted usage. If invalid,
2168 /// it is handled as if the enumerated keyword anonymous was used.
2169 crossorigin: String,
2170
2171 /// For rel="stylesheet" only, the disabled Boolean attribute indicates whether or not the
2172 /// described stylesheet should be loaded and applied to the document. If disabled is
2173 /// specified in the HTML when it is loaded, the stylesheet will not be loaded during page
2174 /// load. Instead, the stylesheet will be loaded on-demand, if and when the disabled
2175 /// attribute is changed to false or removed.
2176 ///
2177 /// Once the stylesheet has been loaded, however, changes made to the value of the disabled
2178 /// property no longer have any relationship to the value of the StyleSheet.disabled
2179 /// property. Changing the value of this property instead simply enables and disables the
2180 /// stylesheet form being applied to the document.
2181 ///
2182 /// This differs from StyleSheet's disabled property; changing it to true removes the
2183 /// stylesheet from the document's document.styleSheets list, and doesn't automatically
2184 /// reload the stylesheet when it's toggled back to false.
2185 disabled: String,
2186
2187 /// This attribute specifies the URL of the linked resource. A URL can be absolute or
2188 /// relative.
2189 href: String,
2190
2191 /// This attribute indicates the language of the linked resource. It is purely advisory.
2192 /// Allowed values are determined by BCP47. Use this attribute only if the href attribute is
2193 /// present.
2194 hreflang: String,
2195
2196 /// This attribute specifies the media that the linked resource applies to. Its value must
2197 /// be a media type / media query. This attribute is mainly useful when linking to external
2198 /// stylesheets — it allows the user agent to pick the best adapted one for the device it
2199 /// runs on.
2200 media: String,
2201
2202 /// This attribute names a relationship of the linked document to the current document. The
2203 /// attribute must be a space-separated list of link type values.
2204 rel: String,
2205
2206 /// This attribute defines the sizes of the icons for visual media contained in the
2207 /// resource. It must be present only if the rel contains a value of icon or a non-standard
2208 /// type such as Apple's apple-touch-icon. It may have the following values:
2209 ///
2210 /// * `any`, meaning that the icon can be scaled to any size as it is in a vector format,
2211 /// like image/svg+xml.
2212 /// * a white-space separated list of sizes, each in the format <width in pixels>x<height in
2213 /// pixels> or <width in pixels>X<height in pixels>. Each of these sizes must be contained
2214 /// in the resource.
2215 ///
2216 /// Note: Most icon formats are only able to store one single icon; therefore most of the
2217 /// time the sizes attribute contains only one entry. MS's ICO format does, as well as
2218 /// Apple's ICNS. ICO is more ubiquitous, so you should use this format if cross-browser
2219 /// support is a concern (especially for old IE versions).
2220 sizes: String,
2221
2222 /// The title attribute has special semantics on the `<link>` element. When used on a
2223 /// `<link rel="stylesheet">` it defines a preferred or an alternate stylesheet. Incorrectly
2224 /// using it may cause the stylesheet to be ignored.
2225 title: String,
2226
2227 /// This attribute is used to define the type of the content linked to. The value of the
2228 /// attribute should be a MIME type such as text/html, text/css, and so on. The common use
2229 /// of this attribute is to define the type of stylesheet being referenced (such as
2230 /// text/css), but given that CSS is the only stylesheet language used on the web, not only
2231 /// is it possible to omit the type attribute, but is actually now recommended practice. It
2232 /// is also used on rel="preload" link types, to make sure the browser only downloads file
2233 /// types that it supports.
2234 type_: String,
2235
2236 }
2237);
2238
2239dom_type!(link <dom::HtmlLinkElement>);
2240
2241html_element!(
2242 /// The [HTML `<meta>` element][mdn] represents [metadata] that cannot be represented by other
2243 /// HTML meta-related elements, like [`<base>`], [`<link>`], [`<script>`], [`<style>`] or
2244 /// [`<title>`].
2245 ///
2246 /// Note: the attribute `name` has a specific meaning for the `<meta>` element, and the
2247 /// `itemprop` attribute must not be set on the same `<meta>` element that has any existing
2248 /// name, `http-equiv` or `charset` attributes.
2249 ///
2250 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
2251 /// [metadata]: https://developer.mozilla.org/en-US/docs/Glossary/Metadata
2252 /// [`<base>`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
2253 /// [`<link>`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link
2254 /// [`<script>`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
2255 /// [`<style>`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style
2256 /// [`<title>`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title
2257 meta {
2258 /// This attribute declares the document's character encoding. If the attribute is present,
2259 /// its value must be an ASCII case-insensitive match for the string "utf-8".
2260 charset: String,
2261
2262 /// This attribute contains the value for the http-equiv or name attribute, depending on
2263 /// which is used.
2264 content: String,
2265
2266 /// Defines a pragma directive. The attribute is named http-equiv(alent) because all the
2267 /// allowed values are names of particular HTTP headers:
2268 ///
2269 /// * `content-security-policy`: Allows page authors to define a content policy for the
2270 /// current page. Content policies mostly specify allowed server origins and script
2271 /// endpoints which help guard against cross-site scripting attacks.
2272 /// * `content-type`: If specified, the content attribute must have the value
2273 /// `text/html; charset=utf-8`. Note: Can only be used in documents served with a
2274 /// text/html MIME type — not in documents served with an XML MIME type.
2275 /// * `default-style`: Sets the name of the default CSS style sheet set.
2276 /// * `x-ua-compatible`: If specified, the content attribute must have the value "IE=edge".
2277 /// User agents are required to ignore this pragma.
2278 /// * `refresh`: This instruction specifies:
2279 /// * The number of seconds until the page should be reloaded - only if the content
2280 /// attribute contains a positive integer.
2281 /// * The number of seconds until the page should redirect to another - only if the
2282 /// content attribute contains a positive integer followed by the string ';url=', and a
2283 /// valid URL.
2284 /// * Accessibility concerns: Pages set with a refresh value run the risk of having the
2285 /// time interval being too short. People navigating with the aid of assistive
2286 /// technology such as a screen reader may be unable to read through and understand the
2287 /// page's content before being automatically redirected. The abrupt, unannounced
2288 /// updating of the page content may also be disorienting for people experiencing low
2289 /// vision conditions.
2290 http_equiv: String,
2291
2292 /// The name and content attributes can be used together to provide document metadata in
2293 /// terms of name-value pairs, with the name attribute giving the metadata name, and the
2294 /// content attribute giving the value.
2295 ///
2296 /// See [standard metadata names] for details about the set of standard metadata names
2297 /// defined in the HTML specification.
2298 ///
2299 /// [standard metadata names]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name
2300 name: String,
2301
2302 }
2303);
2304
2305dom_type!(meta <dom::HtmlMetaElement>);
2306
2307html_element!(
2308 /// The [HTML `<style>` element][mdn] contains style information for a document, or part of a
2309 /// document.
2310 ///
2311 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style
2312 style {
2313 /// This attribute defines which media the style should be applied to. Its value is a media
2314 /// query, which defaults to all if the attribute is missing.
2315 media: String,
2316
2317 /// A cryptographic nonce (number used once) used to whitelist inline styles in a style-src
2318 /// Content-Security-Policy. The server must generate a unique nonce value each time it
2319 /// transmits a policy. It is critical to provide a nonce that cannot be guessed as
2320 /// bypassing a resource’s policy is otherwise trivial.
2321 nonce: String,
2322
2323 /// This attribute specifies alternative style sheet sets.
2324 title: String,
2325
2326 }
2327);
2328
2329dom_type!(style <dom::HtmlStyleElement>);
2330children_allowed!(style);
2331
2332html_element!(
2333 /// The [HTML Title element (`<title>`)][mdn] defines the document's title that is shown in a
2334 /// [browser]'s title bar or a page's tab.
2335 ///
2336 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title
2337 /// [browser]: https://developer.mozilla.org/en-US/docs/Glossary/Browser
2338 title {
2339 }
2340);
2341
2342dom_type!(title <dom::HtmlTitleElement>);
2343children_allowed!(title);
2344
2345html_element!(
2346 /// The [HTML `<button>` element][mdn] represents a clickable button, which can be used in
2347 /// [forms] or anywhere in a document that needs simple, standard button functionality.
2348 ///
2349 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button
2350 /// [forms]: https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms
2351 button {
2352 /// Specifies that the button should have input focus when the page loads. Only one element
2353 /// in a document can have this attribute.
2354 autofocus: bool,
2355
2356 /// Prevents the user from interacting with the button: it cannot be pressed or focused.
2357 disabled: bool,
2358
2359 /// The `<form>` element to associate the button with (its form owner). The value of this
2360 /// attribute must be the id of a `<form>` in the same document. (If this attribute is not
2361 /// set, the `<button>` is associated with its ancestor `<form>` element, if any.)
2362 ///
2363 /// This attribute lets you associate `<button>` elements to `<form>`s anywhere in the
2364 /// document, not just inside a `<form>`. It can also override an ancestor `<form>` element.
2365 form: String,
2366
2367 /// The URL that processes the information submitted by the button. Overrides the action
2368 /// attribute of the button's form owner. Does nothing if there is no form owner.
2369 formaction: String,
2370
2371 /// If the button is a submit button (it's inside/associated with a `<form>` and doesn't
2372 /// have type="button"), specifies how to encode the form data that is submitted. Possible
2373 /// values:
2374 ///
2375 /// * application/x-www-form-urlencoded: The default if the attribute is not used.
2376 /// * multipart/form-data: Use to submit `<input>` elements with their type attributes set
2377 /// to file.
2378 /// * text/plain: Specified as a debugging aid; shouldn’t be used for real form submission.
2379 ///
2380 /// If this attribute is specified, it overrides the enctype attribute of the button's form
2381 /// owner.
2382 formenctype: String,
2383
2384 /// If the button is a submit button (it's inside/associated with a `<form>` and doesn't
2385 /// have type="button"), this attribute specifies the HTTP method used to submit the form.
2386 /// Possible values:
2387 ///
2388 /// * post: The data from the form are included in the body of the HTTP request when sent to
2389 /// the server. Use when the form contains information that shouldn’t be public, like
2390 /// login credentials.
2391 /// * get: The form data are appended to the form's action URL, with a ? as a separator, and
2392 /// the resulting URL is sent to the server. Use this method when the form has no side
2393 /// effects, like search forms.
2394 ///
2395 /// If specified, this attribute overrides the method attribute of the button's form owner.
2396 formmethod: String,
2397
2398 /// If the button is a submit button, specifies that the form is not to be validated when it
2399 /// is submitted. If this attribute is specified, it overrides the novalidate attribute of
2400 /// the button's form owner.
2401 ///
2402 /// This attribute is also available on `<input type="image">` and `<input type="submit">`
2403 /// elements.
2404 formnovalidate: bool,
2405
2406 /// If the button is a submit button, this attribute is a author-defined name or
2407 /// standardized, underscore-prefixed keyword indicating where to display the response from
2408 /// submitting the form. This is the name of, or keyword for, a browsing context (a tab,
2409 /// window, or `<iframe>`). If this attribute is specified, it overrides the target
2410 /// attribute of the button's form owner. The following keywords have special meanings:
2411 ///
2412 /// * _self: Load the response into the same browsing context as the current one.
2413 /// This is the default if the attribute is not specified.
2414 /// * _blank: Load the response into a new unnamed browsing context — usually a new tab or
2415 /// window, depending on the user’s browser settings.
2416 /// * _parent: Load the response into the parent browsing context of the current one. If
2417 /// there is no parent, this option behaves the same way as _self.
2418 /// * _top: Load the response into the top-level browsing context (that is, the browsing
2419 /// context that is an ancestor of the current one, and has no parent). If there is no
2420 /// parent, this option behaves the same way as _self.
2421 formtarget: String,
2422
2423 /// The name of the button, submitted as a pair with the button’s value as part of the form
2424 /// data.
2425 name: String,
2426
2427 /// The default behavior of the button. Possible values are:
2428 ///
2429 /// * submit: The button submits the form data to the server. This is the default if the
2430 /// attribute is not specified for buttons associated with a `<form>`, or if the attribute
2431 /// is an empty or invalid value.
2432 /// * reset: The button resets all the controls to their initial values, like
2433 /// `<input type="reset">`. (This behavior tends to annoy users.)
2434 /// * button: The button has no default behavior, and does nothing when pressed by default.
2435 /// It can have client-side scripts listen to the element's events, which are triggered
2436 /// when the events occur.
2437 type_: String,
2438
2439 /// Defines the value associated with the button’s name when it’s submitted with the form
2440 /// data. This value is passed to the server in params when the form is submitted.
2441 value: String,
2442
2443 }
2444);
2445
2446dom_type!(button <dom::HtmlButtonElement>);
2447children_allowed!(button);
2448
2449html_element!(
2450 /// The [HTML `<datalist>` element][mdn] contains a set of [`<option>`][option] elements that
2451 /// represent the values available for other controls.
2452 ///
2453 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist
2454 /// [option]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option
2455 datalist {
2456 }
2457);
2458
2459dom_type!(datalist <dom::HtmlDataListElement>);
2460children_allowed!(datalist);
2461
2462html_element!(
2463 /// The [HTML `<fieldset>` element][mdn] is used to group several controls as well as labels
2464 /// ([`<label>`][label]) within a web form.
2465 ///
2466 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset
2467 /// [label]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label
2468 fieldset {
2469 /// If this Boolean attribute is set, all form controls that are descendants of the
2470 /// `<fieldset>` are disabled, meaning they are not editable and won't be submitted along
2471 /// with the `<form>`. They won't receive any browsing events, like mouse clicks or
2472 /// focus-related events. By default browsers display such controls grayed out. Note that
2473 /// form elements inside the `<legend>` element won't be disabled.
2474 disabled: String,
2475
2476 /// This attribute takes the value of the id attribute of a `<form>` element you want the
2477 /// `<fieldset>` to be part of, even if it is not inside the form.
2478 form: String,
2479
2480 /// The name associated with the group.
2481 ///
2482 /// Note: The caption for the fieldset is given by the first `<legend>` element inside it.
2483 name: String,
2484
2485 }
2486);
2487
2488dom_type!(fieldset <dom::HtmlFieldSetElement>);
2489children_allowed!(fieldset);
2490
2491html_element!(
2492 /// The [HTML `<form>` element][mdn] represents a document section that contains interactive
2493 /// controls for submitting information to a web server.
2494 ///
2495 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form
2496 form {
2497 /// Space-separated [character encodings] the server accepts. The browser uses
2498 /// them in the order in which they are listed. The default value means
2499 /// the same encoding as the page.
2500 ///
2501 /// [character encodings]: https://developer.mozilla.org/en-US/docs/Web/Guide/Localizations_and_character_encodings
2502 accept_charset: String,
2503
2504 /// The URI of a program that processes the information submitted via the form.
2505 action: String,
2506
2507 /// Indicates whether input elements can by default have their values automatically
2508 /// completed by the browser. autocomplete attributes on form elements override it on
2509 /// `<form>`. Possible values:
2510 ///
2511 /// * off: The browser may not automatically complete entries. (Browsers tend to ignore this
2512 /// for suspected login forms; see The autocomplete attribute and login fields.)
2513 /// * on: The browser may automatically complete entries.
2514 autocomplete: String,
2515
2516 /// If the value of the method attribute is post, enctype is the MIME type of the form
2517 /// submission. Possible values:
2518 ///
2519 /// * application/x-www-form-urlencoded: The default value.
2520 /// * multipart/form-data: Use this if the form contains `<input>` elements with type=file.
2521 /// * text/plain: Introduced by HTML5 for debugging purposes.
2522 ///
2523 /// This value can be overridden by formenctype attributes on `<button>`,
2524 /// `<input type="submit">`, or `<input type="image">` elements.
2525 enctype: String,
2526
2527 /// The HTTP method to submit the form with. Possible values:
2528 ///
2529 /// * post: The POST method; form data sent as the request body.
2530 /// * get: The GET method; form data appended to the action URL with a ? separator. Use this
2531 /// method when the form has no side-effects.
2532 /// * dialog: When the form is inside a `<dialog>`, closes the dialog on submission.
2533 ///
2534 /// This value is overridden by formmethod attributes on `<button>`,
2535 /// `<input type="submit">`, or `<input type="image">` elements.
2536 method: String,
2537
2538 /// Indicates that the form shouldn't be validated when submitted. If this attribute is not
2539 /// set (and therefore the form is validated), it can be overridden by a formnovalidate
2540 /// attribute on a `<button>`, `<input type="submit">`, or `<input type="image">` element
2541 /// belonging to the form.
2542 novalidate: bool,
2543
2544 /// Creates a hyperlink or annotation depending on the value.
2545 rel: String,
2546
2547 /// Indicates where to display the response after submitting the form. It is a name/keyword
2548 /// for a browsing context (for example, tab, window, or iframe). The following keywords
2549 /// have special meanings:
2550 ///
2551 /// * _self (default): Load into the same browsing context as the current one.
2552 /// * _blank: Load into a new unnamed browsing context.
2553 /// * _parent: Load into the parent browsing context of the current one. If no parent,
2554 /// behaves the same as _self.
2555 /// * _top: Load into the top-level browsing context (i.e., the browsing context that is an
2556 /// ancestor of the current one and has no parent). If no parent, behaves the same as
2557 /// _self.
2558 ///
2559 /// This value can be overridden by a formtarget attribute on a `<button>`,
2560 /// `<input type="submit">`, or `<input type="image">` element.
2561 target: String,
2562
2563 }
2564);
2565
2566dom_type!(form <dom::HtmlFormElement>);
2567children_allowed!(form);
2568
2569html_element!(
2570 /// The [HTML `<input>` element][mdn] is used to create interactive controls for web-based forms
2571 /// in order to accept data from the user; a wide variety of types of input data and control
2572 /// widgets are available, depending on the device and [user agent].
2573 ///
2574 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input
2575 /// [user agent]: https://developer.mozilla.org/en-US/docs/Glossary/user_agent
2576 input {
2577 /// Valid for the file input type only, the accept property defines which file types are
2578 /// selectable in a file upload control. See the file input type.
2579 accept: String,
2580
2581 /// Valid for the image button only, the alt attribute provides alternative text for the
2582 /// image, displaying the value of the attribute if the image src is missing or otherwise
2583 /// fails to load. See the image input type.
2584 alt: String,
2585
2586 /// The autocomplete attribute takes as its value a space-separated string that describes
2587 /// what, if any, type of autocomplete functionality the input should provide. A typical
2588 /// implementation of autocomplete simply recalls previous values entered in the same input
2589 /// field, but more complex forms of autocomplete can exist. For instance, a browser could
2590 /// integrate with a device's contacts list to autocomplete email addresses in an email
2591 /// input field. See Values in The HTML autocomplete attribute for permitted values.
2592 ///
2593 /// The autocomplete attribute is valid on hidden, text, search, url, tel, email, date,
2594 /// month, week, time, datetime-local, number, range, color, and password. This attribute
2595 /// has no effect on input types that do not return numeric or text data, being valid for
2596 /// all input types except checkbox, radio, file, or any of the button types.
2597 ///
2598 /// See The HTML autocomplete attribute for additional information, including information on
2599 /// password security and how autocomplete is slightly different for hidden than for other
2600 /// input types.
2601 autocomplete: String,
2602
2603 /// Indicates if present that the input should automatically have focus when the page has
2604 /// finished loading (or when the `<dialog>` containing the element has been displayed).
2605 ///
2606 /// Note: An element with the autofocus attribute may gain focus before the DOMContentLoaded
2607 /// event is fired.
2608 ///
2609 /// No more than one element in the document may have the autofocus attribute. The autofocus
2610 /// attribute cannot be used on inputs of type hidden, since hidden inputs cannot be
2611 /// focused.
2612 ///
2613 /// If put on more than one element, the first one with the attribute receives focus.
2614 ///
2615 /// Warning: Automatically focusing a form control can confuse visually-impaired people
2616 /// using screen-reading technology and people with cognitive impairments. When autofocus is
2617 /// assigned, screen-readers "teleport" their user to the form control without warning them
2618 /// beforehand.
2619 ///
2620 /// For better usability, avoid using autofocus. Automatically focusing on a form control
2621 /// can cause the page to scroll on load. The focus can also cause dynamic keyboards to
2622 /// display on some touch devices. While a screen reader will announce the label of the form
2623 /// control receiving focus, the screen reader will not announce anything before the label,
2624 /// and the sighted user on a small device will equally miss the context created by the
2625 /// preceding content.
2626 autofocus: bool,
2627
2628 /// Introduced in the HTML Media Capture specification and valid for the file input type
2629 /// only, the capture attribute defines which media—microphone, video, or camera—should be
2630 /// used to capture a new file for upload with file upload control in supporting scenarios.
2631 /// See the file input type.
2632 capture: String,
2633
2634 /// Valid for both radio and checkbox types, checked is a Boolean attribute. If present on a
2635 /// radio type, it indicates that that radio button is the currently selected one in the
2636 /// group of same-named radio buttons. If present on a checkbox type, it indicates that the
2637 /// checkbox is checked by default (when the page loads). It does not indicate whether this
2638 /// checkbox is currently checked: if the checkbox’s state is changed, this content
2639 /// attribute does not reflect the change. (Only the HTMLInputElement’s checked IDL
2640 /// attribute is updated.)
2641 ///
2642 /// Note: Unlike other input controls, a checkboxes and radio buttons value are only
2643 /// included in the submitted data if they are currently checked. If they are, the name and
2644 /// the value(s) of the checked controls are submitted.
2645 ///
2646 /// For example, if a checkbox whose name is fruit has a value of cherry, and the checkbox
2647 /// is checked, the form data submitted will include fruit=cherry. If the checkbox isn't
2648 /// active, it isn't listed in the form data at all. The default value for checkboxes and
2649 /// radio buttons is on.
2650 checked: bool,
2651
2652 /// Valid for text and search input types only, the dirname attribute enables the submission
2653 /// of the directionality of the element. When included, the form control will submit with
2654 /// two name/value pairs: the first being the name and value, the second being the value of
2655 /// the dirname as the name with the value of ltr or rtl being set by the browser.
2656 dirname: String,
2657
2658 /// If present indicates that the user should not be able to interact with the input.
2659 /// Disabled inputs are typically rendered with a dimmer color or using some other form of
2660 /// indication that the field is not available for use.
2661 ///
2662 /// Specifically, disabled inputs do not receive the click event, and disabled inputs are
2663 /// not submitted with the form.
2664 disabled: bool,
2665
2666 /// A string specifying the `<form>` element with which the input is associated (that is,
2667 /// its form owner). This string's value, if present, must match the id of a `<form>`
2668 /// element in the same document. If this attribute isn't specified, the `<input>` element
2669 /// is associated with the nearest containing form, if any.
2670 ///
2671 /// The form attribute lets you place an input anywhere in the document but have it included
2672 /// with a form elsewhere in the document.
2673 ///
2674 /// Note: An input can only be associated with one form.
2675 form: String,
2676
2677 /// Valid for the image and submit input types only. See the submit input type for more
2678 /// information.
2679 formaction: String,
2680
2681 /// Valid for the image and submit input types only. See the submit input type for more
2682 /// information.
2683 formenctype: String,
2684
2685 /// Valid for the image and submit input types only. See the submit input type for more
2686 /// information.
2687 formmethod: String,
2688
2689 /// Valid for the image and submit input types only. See the submit input type for more
2690 /// information.
2691 formnovalidate: String,
2692
2693 /// Valid for the image and submit input types only. See the submit input type for more
2694 /// information.
2695 formtarget: String,
2696
2697 /// Valid for the image input button only, the height is the height of the image file to
2698 /// display to represent the graphical submit button. See the image input type.
2699 height: String,
2700
2701 /// Global value valid for all elements, it provides a hint to browsers as to the type of
2702 /// virtual keyboard configuration to use when editing this element or its contents. Values
2703 /// include none, text, tel, url, email, numeric, decimal, and search.
2704 inputmode: String,
2705
2706 /// The values of the list attribute is the id of a `<datalist>` element located in the same
2707 /// document. The `<datalist>` provides a list of predefined values to suggest to the user
2708 /// for this input. Any values in the list that are not compatible with the type are not
2709 /// included in the suggested options. The values provided are suggestions, not
2710 /// requirements: users can select from this predefined list or provide a different value.
2711 ///
2712 /// It is valid on text, search, url, tel, email, date, month, week, time, datetime-local,
2713 /// number, range, and color.
2714 ///
2715 /// Per the specifications, the list attribute is not supported by the hidden, password,
2716 /// checkbox, radio, file, or any of the button types.
2717 ///
2718 /// Depending on the browser, the user may see a custom color palette suggested, tic marks
2719 /// along a range, or even a input that opens like a select but allows for non-listed
2720 /// values. Check out the browser compatibility table for the other input types.
2721 ///
2722 /// See the `<datalist>` element.
2723 list: String,
2724
2725 /// Valid for date, month, week, time, datetime-local, number, and range, it defines the
2726 /// greatest value in the range of permitted values. If the value entered into the element
2727 /// exceeds this, the element fails constraint validation. If the value of the max attribute
2728 /// isn't a number, then the element has no maximum value.
2729 ///
2730 /// There is a special case: if the data type is periodic (such as for dates or times), the
2731 /// value of max may be lower than the value of min, which indicates that the range may wrap
2732 /// around; for example, this allows you to specify a time range from 10 PM to 4 AM.
2733 max: String,
2734
2735 /// Valid for text, search, url, tel, email, and password, it defines the maximum number of
2736 /// characters (as UTF-16 code units) the user can enter into the field. This must be an
2737 /// integer value 0 or higher. If no maxlength is specified, or an invalid value is
2738 /// specified, the field has no maximum length. This value must also be greater than or
2739 /// equal to the value of minlength.
2740 ///
2741 /// The input will fail constraint validation if the length of the text entered into the
2742 /// field is greater than maxlength UTF-16 code units long. By default, browsers prevent
2743 /// users from entering more characters than allowed by the maxlength attribute.
2744 maxlength: String,
2745
2746 /// Valid for date, month, week, time, datetime-local, number, and range, it defines the
2747 /// most negative value in the range of permitted values. If the value entered into the
2748 /// element is less than this this, the element fails constraint validation. If the value of
2749 /// the min attribute isn't a number, then the element has no minimum value.
2750 ///
2751 /// This value must be less than or equal to the value of the max attribute. If the min
2752 /// attribute is present but is not specified or is invalid, no min value is applied. If the
2753 /// min attribute is valid and a non-empty value is less than the minimum allowed by the min
2754 /// attribute, constraint validation will prevent form submission.
2755 ///
2756 /// There is a special case: if the data type is periodic (such as for dates or times), the
2757 /// value of max may be lower than the value of min, which indicates that the range may wrap
2758 /// around; for example, this allows you to specify a time range from 10 PM to 4 AM.
2759 min: String,
2760
2761 /// Valid for text, search, url, tel, email, and password, it defines the minimum number of
2762 /// characters (as UTF-16 code units) the user can enter into the entry field. This must be
2763 /// an non-negative integer value smaller than or equal to the value specified by maxlength.
2764 /// If no minlength is specified, or an invalid value is specified, the input has no minimum
2765 /// length.
2766 ///
2767 /// The input will fail constraint validation if the length of the text entered into the
2768 /// field is fewer than minlength UTF-16 code units long, preventing form submission.
2769 minlength: String,
2770
2771 /// If set, means the user can enter comma separated email addresses in the email widget or
2772 /// can choose more than one file with the file input. See the email and file input type.
2773 multiple: bool,
2774
2775 /// A string specifying a name for the input control. This name is submitted along with the
2776 /// control's value when the form data is submitted.
2777 ///
2778 /// # What's in a name
2779 ///
2780 /// Consider the name a required attribute (even though it's not). If an input has no name
2781 /// specified, or name is empty, the input's value is not submitted with the form! (Disabled
2782 /// controls, unchecked radio buttons, unchecked checkboxes, and reset buttons are also not
2783 /// sent.)
2784 ///
2785 /// There are two special cases:
2786 ///
2787 /// * `_charset_`: If used as the name of an `<input>` element of type hidden, the input's
2788 /// value is automatically set by the user agent to the character encoding being used to
2789 /// submit the form.
2790 /// * `isindex`: For historical reasons, the name isindex is not allowed.
2791 ///
2792 /// # name and radio buttons
2793 ///
2794 /// The name attribute creates a unique behavior for radio buttons.
2795 ///
2796 /// Only one radio button in a same-named group of radio buttons can be checked at a time.
2797 /// Selecting any radio button in that group automatically deselects any currently-selected
2798 /// radio button in the same group. The value of that one checked radio button is sent along
2799 /// with the name if the form is submitted.
2800 ///
2801 /// When tabbing into a series of same-named group of radio buttons, if one is checked, that
2802 /// one will receive focus. If they aren't grouped together in source order, if one of the
2803 /// group is checked, tabbing into the group starts when the first one in the group is
2804 /// encountered, skipping all those that aren't checked. In other words, if one is checked,
2805 /// tabbing skips the unchecked radio buttons in the group. If none are checked, the radio
2806 /// button group receives focus when the first button in the same name group is reached.
2807 ///
2808 /// Once one of the radio buttons in a group has focus, using the arrow keys will navigate
2809 /// through all the radio buttons of the same name, even if the radio buttons are not
2810 /// grouped together in the source order.
2811 ///
2812 /// # HTMLFormElement.elements
2813 ///
2814 /// When an input element is given a name, that name becomes a property of the owning form
2815 /// element's HTMLFormElement.elements property.
2816 ///
2817 /// Warning: Avoid giving form elements a name that corresponds to a built-in property of
2818 /// the form, since you would then override the predefined property or method with this
2819 /// reference to the corresponding input.
2820 name: String,
2821
2822 /// The pattern attribute, when specified, is a regular expression that the input's value
2823 /// must match in order for the value to pass constraint validation. It must be a valid
2824 /// JavaScript regular expression, as used by the RegExp type, and as documented in our
2825 /// guide on regular expressions; the 'u' flag is specified when compiling the regular
2826 /// expression, so that the pattern is treated as a sequence of Unicode code points, instead
2827 /// of as ASCII. No forward slashes should be specified around the pattern text.
2828 ///
2829 /// If the pattern attribute is present but is not specified or is invalid, no regular
2830 /// expression is applied and this attribute is ignored completely. If the pattern attribute
2831 /// is valid and a non-empty value does not match the pattern, constraint validation will
2832 /// prevent form submission.
2833 ///
2834 /// Tip: If using the pattern attribute, inform the user about the expected format by
2835 /// including explanatory text nearby. You can also include a title attribute to explain
2836 /// what the requirements are to match the pattern; most browsers will display this title as
2837 /// a tooltip. The visible explanation is required for accessibility. The tooltip is an
2838 /// enhancement.
2839 pattern: String,
2840
2841 /// The placeholder attribute is a string that provides a brief hint to the user as to what
2842 /// kind of information is expected in the field. It should be a word or short phrase that
2843 /// demonstrates the expected type of data, rather than an explanatory message. The text
2844 /// must not include carriage returns or line feeds.
2845 ///
2846 /// Note: The placeholder attribute is not as semantically useful as other ways to explain
2847 /// your form, and can cause unexpected technical issues with your content.
2848 placeholder: String,
2849
2850 /// If present, indicates that the user should not be able to edit the value of the input.
2851 /// The readonly attribute is supported text, search, url, tel, email, date, month, week,
2852 /// time, datetime-local, number, and password input types.
2853 readonly: bool,
2854
2855 /// If present, indicates that the user must specify a value for the input before the owning
2856 /// form can be submitted. The required attribute is supported text, search, url, tel,
2857 /// email, date, month, week, time, datetime-local, number, password, checkbox, radio, and
2858 /// file.
2859 required: bool,
2860
2861 /// Valid for email, password, tel, and text input types only. Specifies how much of the
2862 /// input is shown. Basically creates same result as setting CSS width property with a few
2863 /// specialities. The actual unit of the value depends on the input type. For password and
2864 /// text it's number of characters (or em units) and pixels for others. CSS width takes
2865 /// precedence over size attribute.
2866 size: String,
2867
2868 /// Valid for the image input button only, the src is string specifying the URL of the image
2869 /// file to display to represent the graphical submit button. See the image input type.
2870 src: String,
2871
2872 /// Valid for the numeric input types, including number, date/time input types, and range,
2873 /// the step attribute is a number that specifies the granularity that the value must adhere
2874 /// to.
2875 ///
2876 /// If not explicitly included, step defaults to 1 for number and range, and 1 unit type
2877 /// (second, week, month, day) for the date/time input types. The value can must be a
2878 /// positive number—integer or float—or the special value any, which means no stepping is
2879 /// implied, and any value is allowed (barring other constraints, such as min and max).
2880 ///
2881 /// If any is not explicity set, valid values for the number, date/time input types, and
2882 /// range input types are equal to the basis for stepping - the min value and increments of
2883 /// the step value, up to the max value, if specified.
2884 ///
2885 /// For example, if you have `<input type="number" min="10" step="2">`, then any even
2886 /// integer, 10 or greater, is valid. If omitted, `<input type="number">`, any integer is
2887 /// valid, but floats (like 4.2) are not valid, because step defaults to 1. For 4.2 to be
2888 /// valid, step would have had to be set to any, 0.1, 0.2, or any the min value would have
2889 /// had to be a number ending in .2, such as `<input type="number" min="-5.2">`.
2890 ///
2891 /// Note: When the data entered by the user doesn't adhere to the stepping configuration,
2892 /// the value is considered invalid in contraint validation and will match the :invalid
2893 /// pseudoclass.
2894 ///
2895 /// The default stepping value for number inputs is 1, allowing only integers to be entered,
2896 /// unless the stepping base is not an integer. The default stepping value for time is 1
2897 /// second (with 900 being equal to 15 minutes).
2898 step: String,
2899
2900 /// Global attribute valid for all elements, including all the input types, an integer
2901 /// attribute indicating if the element can take input focus (is focusable), if it should
2902 /// participate to sequential keyboard navigation. As all input types except for input of
2903 /// type hidden are focusable, this attribute should not be used on form controls, because
2904 /// doing so would require the management of the focus order for all elements within the
2905 /// document with the risk of harming usability and accessibility if done incorrectly.
2906 tabindex: String,
2907
2908 /// Global attribute valid for all elements, including all input types, containing a text
2909 /// representing advisory information related to the element it belongs to. Such information
2910 /// can typically, but not necessarily, be presented to the user as a tooltip. The title
2911 /// should NOT be used as the primary explanation of the purpose of the form control.
2912 /// Instead, use the `<label>` element with a for attribute set to the form control's id
2913 /// attribute.
2914 title: String,
2915
2916 /// A string specifying the type of control to render. For example, to create a checkbox, a
2917 /// value of checkbox is used. If omitted (or an unknown value is specified), the input type
2918 /// text is used, creating a plaintext input field.
2919 ///
2920 /// Permitted values are listed in `<input>` types above.
2921 type_: String,
2922
2923 /// The input control's value. When specified in the HTML, this is the initial value, and
2924 /// from then on it can be altered or retrieved at any time using JavaScript to access the
2925 /// respective HTMLInputElement object's value property. The value attribute is always
2926 /// optional, though should be considered mandatory for checkbox, radio, and hidden.
2927 value: String,
2928
2929 /// Valid for the image input button only, the width is the width of the image file to
2930 /// display to represent the graphical submit button. See the image input type.
2931 width: String,
2932
2933 }
2934);
2935
2936dom_type!(input <dom::HtmlInputElement>);
2937
2938html_element!(
2939 /// The [HTML `<label>` element][mdn] represents a caption for an item in a user interface.
2940 ///
2941 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label
2942 label {
2943 /// The id of a labelable form-related element in the same document as the `<label>`
2944 /// element. The first element in the document with an id matching the value of the for
2945 /// attribute is the labeled control for this label element, if it is a labelable element.
2946 /// If it is not labelable then the for attribute has no effect. If there are other elements
2947 /// which also match the id value, later in the document, they are not considered.
2948 ///
2949 /// Note: A `<label>` element can have both a for attribute and a contained control element,
2950 /// as long as the for attribute points to the contained control element.
2951 for_: String,
2952
2953 /// The `<form>` element with which the label is associated (its form owner). If specified,
2954 /// the value of the attribute is the id of a `<form>` element in the same document. This
2955 /// lets you place label elements anywhere within a document, not just as descendants of
2956 /// their form elements.
2957 form: String,
2958
2959 }
2960);
2961
2962dom_type!(label <dom::HtmlLabelElement>);
2963children_allowed!(label);
2964
2965html_element!(
2966 /// The [HTML `<legend>` element][mdn] represents a caption for the content of its parent
2967 /// [`<fieldset>`][fieldset].
2968 ///
2969 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend
2970 /// [fieldset]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset
2971 legend {
2972 }
2973);
2974
2975dom_type!(legend <dom::HtmlLegendElement>);
2976children_allowed!(legend);
2977
2978html_element!(
2979 /// The [HTML `<meter>` element][mdn] represents either a scalar value within a known range or a
2980 /// fractional value.
2981 ///
2982 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter
2983 meter {
2984 /// The current numeric value. This must be between the minimum and maximum values (min
2985 /// attribute and max attribute) if they are specified. If unspecified or malformed, the
2986 /// value is 0. If specified, but not within the range given by the min attribute and max
2987 /// attribute, the value is equal to the nearest end of the range.
2988 ///
2989 /// Note: Unless the value attribute is between 0 and 1 (inclusive), the min and max
2990 /// attributes should define the range so that the value attribute's value is within it.
2991 value: String,
2992
2993 /// The lower numeric bound of the measured range. This must be less than the maximum value
2994 /// (max attribute), if specified. If unspecified, the minimum value is 0.
2995 min: String,
2996
2997 /// The upper numeric bound of the measured range. This must be greater than the minimum
2998 /// value (min attribute), if specified. If unspecified, the maximum value is 1.
2999 max: String,
3000
3001 /// The `<form>` element to associate the `<meter>` element with (its form owner). The value
3002 /// of this attribute must be the id of a `<form>` in the same document. If this attribute
3003 /// is not set, the `<button>` is associated with its ancestor `<form>` element, if any.
3004 /// This attribute is only used if the `<meter>` element is being used as a form-associated
3005 /// element, such as one displaying a range corresponding to an `<input type="number">`.
3006 form: String,
3007
3008 /// The upper numeric bound of the low end of the measured range. This must be greater than
3009 /// the minimum value (min attribute), and it also must be less than the high value and
3010 /// maximum value (high attribute and max attribute, respectively), if any are specified. If
3011 /// unspecified, or if less than the minimum value, the low value is equal to the minimum
3012 /// value.
3013 high: u32,
3014
3015 /// The lower numeric bound of the high end of the measured range. This must be less than
3016 /// the maximum value (max attribute), and it also must be greater than the low value and
3017 /// minimum value (low attribute and min attribute, respectively), if any are specified. If
3018 /// unspecified, or if greater than the maximum value, the high value is equal to the
3019 /// maximum value.
3020 low: u32,
3021
3022 /// This attribute indicates the optimal numeric value. It must be within the range (as
3023 /// defined by the min attribute and max attribute). When used with the low attribute and
3024 /// high attribute, it gives an indication where along the range is considered preferable.
3025 /// For example, if it is between the min attribute and the low attribute, then the lower
3026 /// range is considered preferred.
3027 optimum: u32,
3028
3029 }
3030);
3031
3032dom_type!(meter <dom::HtmlMeterElement>);
3033children_allowed!(meter);
3034
3035html_element!(
3036 /// The [HTML `<optgroup>` element][mdn] creates a grouping of options within a
3037 /// [`<select>`][select] element.
3038 ///
3039 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup
3040 /// [select]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select
3041 optgroup {
3042 /// If set, none of the items in this option group is selectable. Often browsers grey out
3043 /// such control and it won't receive any browsing events, like mouse clicks or
3044 /// focus-related ones.
3045 disabled: bool,
3046
3047 /// The name of the group of options, which the browser can use when labeling the options in
3048 /// the user interface. This attribute is mandatory if this element is used.
3049 label: String,
3050
3051 }
3052);
3053
3054dom_type!(optgroup <dom::HtmlOptGroupElement>);
3055children_allowed!(optgroup);
3056
3057html_element!(
3058 /// The [HTML `<option>` element][mdn] is used to define an item contained in a
3059 /// [`<select>`][select], an [`<optgroup>`][optgroup], or a [`<datalist>`][datalist] element. As
3060 /// such, `<option>` can represent menu items in popups and other lists of items in an HTML
3061 /// document.
3062 ///
3063 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option
3064 /// [select]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select
3065 /// [optgroup]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup
3066 /// [datalist]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist
3067 option {
3068 /// If set, this option is not checkable. Often browsers grey out such control and it won't
3069 /// receive any browsing event, like mouse clicks or focus-related ones. If this attribute
3070 /// is not set, the element can still be disabled if one of its ancestors is a disabled
3071 /// `<optgroup>` element.
3072 disabled: bool,
3073
3074 /// This attribute is text for the label indicating the meaning of the option. If the label
3075 /// attribute isn't defined, its value is that of the element text content.
3076 label: String,
3077
3078 /// If present, indicates that the option is initially selected. If the `<option>` element
3079 /// is the descendant of a `<select>` element whose multiple attribute is not set, only one
3080 /// single `<option>` of this `<select>` element may have the selected attribute.
3081 selected: bool,
3082
3083 /// The content of this attribute represents the value to be submitted with the form, should
3084 /// this option be selected. If this attribute is omitted, the value is taken from the text
3085 /// content of the option element.
3086 value: String,
3087
3088 }
3089);
3090
3091dom_type!(option <dom::HtmlOptionElement>);
3092children_allowed!(option);
3093
3094html_element!(
3095 /// The [HTML Output element (`<output>`)][mdn] is a container element into which a site or app
3096 /// can inject the results of a calculation or the outcome of a user action.
3097 ///
3098 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output
3099 output {
3100 /// A space-separated list of other elements’ ids, indicating that those elements
3101 /// contributed input values to (or otherwise affected) the calculation.
3102 for_: String,
3103
3104 /// The `<form>` element to associate the output with (its form owner). The value of this
3105 /// attribute must be the id of a `<form>` in the same document. (If this attribute is not
3106 /// set, the `<output>` is associated with its ancestor `<form>` element, if any.)
3107 ///
3108 /// This attribute lets you associate `<output>` elements to `<form>`s anywhere in the
3109 /// document, not just inside a `<form>`. It can also override an ancestor `<form>` element.
3110 form: String,
3111
3112 /// The element's name. Used in the form.elements API.
3113 name: String,
3114
3115 }
3116);
3117
3118dom_type!(output <dom::HtmlOutputElement>);
3119children_allowed!(output);
3120
3121html_element!(
3122 /// The [HTML `<progress>` element][progress] displays an indicator showing the completion
3123 /// progress of a task, typically displayed as a progress bar.
3124 ///
3125 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress
3126 progress {
3127 /// This attribute describes how much work the task indicated by the progress element
3128 /// requires. The max attribute, if present, must have a value greater than 0 and be a valid
3129 /// floating point number. The default value is 1.
3130 max: f32,
3131
3132 /// This attribute specifies how much of the task that has been completed. It must be a
3133 /// valid floating point number between 0 and max, or between 0 and 1 if max is omitted. If
3134 /// there is no value attribute, the progress bar is indeterminate; this indicates that an
3135 /// activity is ongoing with no indication of how long it is expected to take.
3136 value: f32,
3137
3138 }
3139);
3140
3141dom_type!(progress <dom::HtmlProgressElement>);
3142children_allowed!(progress);
3143
3144html_element!(
3145 /// The [HTML `<select>` element][mdn] represents a control that provides a menu of options.
3146 ///
3147 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select
3148 select {
3149 /// A DOMString providing a hint for a user agent's autocomplete feature.
3150 autocomplete: String,
3151
3152 /// Lets you specify that a form control should have input focus when the page loads. Only
3153 /// one form element in a document can have the autofocus attribute.
3154 autofocus: bool,
3155
3156 /// Indicates that the user cannot interact with the control. If this attribute is not
3157 /// specified, the control inherits its setting from the containing element, for example
3158 /// `<fieldset>`; if there is no containing element with the disabled attribute set, then
3159 /// the control is enabled.
3160 disabled: bool,
3161
3162 /// The `<form>` element to associate the `<select>` with (its form owner). The value of
3163 /// this attribute must be the id of a `<form>` in the same document. (If this attribute is
3164 /// not set, the `<select>` is associated with its ancestor `<form>` element, if any.)
3165 ///
3166 /// This attribute lets you associate `<select>` elements to `<form>`s anywhere in the
3167 /// document, not just inside a `<form>`. It can also override an ancestor `<form>` element.
3168 form: String,
3169
3170 /// Indicates that multiple options can be selected in the list. If it is not specified,
3171 /// then only one option can be selected at a time. When multiple is specified, most
3172 /// browsers will show a scrolling list box instead of a single line dropdown.
3173 multiple: bool,
3174
3175 /// This attribute is used to specify the name of the control.
3176 name: String,
3177
3178 /// Indicates that an option with a non-empty string value must be selected.
3179 required: bool,
3180
3181 /// If the control is presented as a scrolling list box (e.g. when multiple is specified),
3182 /// this attribute represents the number of rows in the list that should be visible at one
3183 /// time. Browsers are not required to present a select element as a scrolled list box. The
3184 /// default value is 0.
3185 size: String,
3186
3187 }
3188);
3189
3190dom_type!(select <dom::HtmlSelectElement>);
3191children_allowed!(select);
3192
3193html_element!(
3194 /// The [HTML `<textarea>` element][mdn] represents a multi-line plain-text editing control,
3195 /// useful when you want to allow users to enter a sizeable amount of free-form text, for
3196 /// example a comment on a review or feedback form.
3197 ///
3198 /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea
3199 textarea {
3200 /// This attribute indicates whether the value of the control can be automatically completed
3201 /// by the browser. Possible values are:
3202 ///
3203 /// * off: The user must explicitly enter a value into this field for every use, or the
3204 /// document provides its own auto-completion method; the browser does not automatically
3205 /// complete the entry.
3206 /// * on: The browser can automatically complete the value based on values that the user has
3207 /// entered during previous uses.
3208 ///
3209 /// If the autocomplete attribute is not specified on a `<textarea>` element, then the
3210 /// browser uses the autocomplete attribute value of the `<textarea>` element's form owner.
3211 /// The form owner is either the `<form>` element that this `<textarea>` element is a
3212 /// descendant of or the form element whose id is specified by the form attribute of the
3213 /// input element. For more information, see the autocomplete attribute in `<form>`.
3214 autocomplete: String,
3215
3216 /// Lets you specify that a form control should have input focus when the page loads. Only
3217 /// one form-associated element in a document can have this attribute specified.
3218 autofocus: bool,
3219
3220 /// The visible width of the text control, in average character widths. If it is not
3221 /// specified, the default value is 20.
3222 cols: u32,
3223
3224 /// Indicates that the user cannot interact with the control. If this attribute is not
3225 /// specified, the control inherits its setting from the containing element, for example
3226 /// `<fieldset>`; if there is no containing element when the disabled attribute is set, the
3227 /// control is enabled.
3228 disabled: bool,
3229
3230 /// The form element that the `<textarea>` element is associated with (its "form owner").
3231 /// The value of the attribute must be the id of a form element in the same document. If
3232 /// this attribute is not specified, the `<textarea>` element must be a descendant of a form
3233 /// element. This attribute enables you to place `<textarea>` elements anywhere within a
3234 /// document, not just as descendants of form elements.
3235 form: String,
3236
3237 /// The maximum number of characters (UTF-16 code units) that the user can enter. If this
3238 /// value isn't specified, the user can enter an unlimited number of characters.
3239 maxlength: u32,
3240
3241 /// The minimum number of characters (UTF-16 code units) required that the user should
3242 /// enter.
3243 minlength: u32,
3244
3245 /// The name of the control.
3246 name: String,
3247
3248 /// A hint to the user of what can be entered in the control. Carriage returns or line-feeds
3249 /// within the placeholder text must be treated as line breaks when rendering the hint.
3250 ///
3251 /// Note: Placeholders should only be used to show an example of the type of data that
3252 /// should be entered into a form; they are not a substitute for a proper `<label>` element
3253 /// tied to the input.
3254 placeholder: String,
3255
3256 /// Indicates that the user cannot modify the value of the control. Unlike the disabled
3257 /// attribute, the readonly attribute does not prevent the user from clicking or selecting
3258 /// in the control. The value of a read-only control is still submitted with the form.
3259 readonly: bool,
3260
3261 /// This attribute specifies that the user must fill in a value before submitting a form.
3262 required: String,
3263
3264 /// The number of visible text lines for the control.
3265 rows: String,
3266
3267 /// Specifies whether the `<textarea>` is subject to spell checking by the underlying
3268 /// browser/OS. the value can be:
3269 ///
3270 /// * true: Indicates that the element needs to have its spelling and grammar checked.
3271 /// * default : Indicates that the element is to act according to a default behavior,
3272 /// possibly based on the parent element's own spellcheck value.
3273 /// * false : Indicates that the element should not be spell checked.
3274 spellcheck: String,
3275
3276 /// Indicates how the control wraps text. Possible values are:
3277 ///
3278 /// * hard: The browser automatically inserts line breaks (CR+LF) so that each line has no
3279 /// more than the width of the control; the cols attribute must also be specified for this
3280 /// to take effect.
3281 /// * soft: The browser ensures that all line breaks in the value consist of a CR+LF pair,
3282 /// but does not insert any additional line breaks.
3283 ///
3284 /// If this attribute is not specified, soft is its default value.
3285 wrap: String,
3286
3287 }
3288);
3289
3290dom_type!(textarea <dom::HtmlTextAreaElement>);
3291children_allowed!(textarea);
3292