Tutorials References Exercises Bootcamps Videos Menu
Sign Up Create Website Get Certified Upgrade

HTML <slot> Tag


Example

The template element holds HTML code without displaying it:

<template>
  <div>Name:
    <slot name="username"></slot>
  </div>
  <div>Birthday:
    <slot name="birthday"></slot>
  </div>
</template>
Try it Yourself »

Definition and Usage

The <slot> tag is a placeholder .....

Content inside a <template> tag will not be rendered.

The content can be made visible and rendered later by using JavaScript.

Use the <template> tag when you have HTML code you want to use over and over again, but not until you ask for it.


Browser Support

Element
<slot> 53.0 79.0 63.0 10.0 40.0

Attributes

Attribute Value Description
name   Specifies the name of the slot

Global Attributes

The <slot> tag supports the Global Attributes in HTML.


More Examples

Example

Use JavaScript to get the content from a template, and add it to the page:

function showContent() {
  let temp = document.getElementsByTagName("template")[0];
  let clon = temp.content.cloneNode(true);
  document.body.appendChild(clon);
}
Try it Yourself »

Example

Use the content of a template for each item in an array:

<template>
  <div class="myClass">I like: </div>
</template>

<script>
let myArr = ["Audi", "BMW", "Ford", "Honda", "Jaguar", "Nissan"];

function showContent() {
  let temp, item, a, i;
  // Get the template element:
  temp = document.getElementsByTagName("template")[0];
  // Get the DIV element from the template:
  item = temp.content.querySelector("div");
  // For each item in the array:
  for (i = 0; i < myArr.length; i++) {
    // Create a new node, based on the template:
    a = document.importNode(item, true);
    // Add data from the array:
    a.textContent += myArr[i];
    // Append the new node wherever you like:
    document.body.appendChild(a);
  }
}
</script>
Try it Yourself »

Example

Test browser support for the template element::

if (document.createElement("template").content) {
  /*Code for browsers that supports the TEMPLATE element*/
} else {
  /*Alternative code for browsers that do not support the TEMPLATE element*/
}
Try it Yourself »