Typography sets default styles for headings, paragraphs, semantic text, blockquote and lists elements.


H1 Title 5rem

H2 Title 4rem

H3 Title 3rem

H4 Title 2.4rem

H5 Title 2rem
H6 Title 1.6rem
<h1>H1 Title</h1>
<h2>H2 Title <small class="label">4rem</small></h2>


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent risus leo, dictum in vehicula sit amet, feugiat tempus tellus. Duis quis sodales risus. Etiam euismod ornare consequat.

Climb leg rub face on everything give attitude nap all day for under the bed. Chase mice attack feet but rub face on everything hopped up on goofballs.

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent risus leo, <a href="#">dictum in vehicula sit amet</a>, feugiat tempus tellus. Duis quis sodales risus. Etiam euismod ornare consequat.</p>

Semantic text elements

I18N <abbr>
Bold <strong> <b>
Citation <cite>
Hello World! <code>
Deleted <del>
Emphasis <em>
Italic <i>
Inserted <ins>
Ctrl + S <kbd>
Highlighted <mark>
kanji <ruby>
Strikethrough <s>
Sample <samp>
Text Subscripted <sub>
Text Superscripted <sup>
Underline <u>
x = y + 2 <var>

Optimized for east asian fonts

你好, こんにちは, 안녕하세요

Chinese (Simplified)


Chinese (Tranditional)





나라말이 중국과 달라, 한문・한자와 서로 통하지 아니하므로, 어리석은 백성들이 말하고자 하는 바가 있어도, 끝내 제 뜻을 펴지 못하는 사람이 많다. 내가 이를 불쌍히 여겨, 새로 스물 여덟 글자를 만드니, 사람마다 하여금 쉽게 익혀, 날마다 씀에 편하게 하고자 할 따름이다.

Use the lang attribute or add the cjk class to the container element to have better Asian CJK (Chinese, Japanese and Korean) support.

<p class="cjk">祇園精舎の鐘の声、諸行無常の響きあり。……</p>
<p lang="ja">祇園精舎の鐘の声、諸行無常の響きあり。……</p>


The advance of technology is based on making it fit in so that you don't really even notice it, so it's part of everyday life.

- Bill Gates
  <p>The advance of technology is based on making it fit in so that you don't really even notice it, so it's part of everyday life. </p>
  <cite>- Bill Gates</cite>


  • list item 1
  • list item 2
    • list item 2.1
    • list item 2.2
    • list item 2.3
  • list item 3
  1. list item 1
  2. list item 2
    1. list item 2.1
    2. list item 2.2
    3. list item 2.3
  3. list item 3
description list term 1
description list description 1
description list term 2
description list description 2
description list term 3
description list description 3
<!-- unordered list -->
  <li>list item 1</li>
  <li>list item 2
      <li>list item 2.1</li>
      <li>list item 2.2</li>
      <li>list item 2.3</li>
  <li>list item 3</li>

<!-- description list -->
  <dt>description list term</dt>
  <dd>description list description</dd>


Tables include default styles for tables and data sets.

Name Genre Release date
The Shawshank Redemption Crime, Drama 14 October 1994
The Godfather Crime, Drama 24 March 1972
Schindler's List Biography, Drama, History 4 February 1994
Se7en Crime, Drama, Mystery 22 September 1995

Add the table class to any <table> element. The class will add padding, border and emphasized table header. Use the table-striped class to <table> to add zebra striped style. For hoverable table rows, you can add the table-hover class to enable hover style.

Use the active class to make <tr> element highlighted.

<table class="table table-striped table-hover">
      <th>release date</th>
    <tr class="active">
      <td>The Shawshank Redemption</td>
      <td>Crime, Drama</td>
      <td>14 October 1994</td>


Buttons include simple button styles for actions in different types and sizes.

Add the btn class to <a>, <input> or <button> elements for a default button. There are classes btn-primary and btn-link for predefined primary and link buttons. A button with the loading class can show loading indicator.

<button class="btn">default button</button>
<button class="btn btn-primary">primary button</button>
<button class="btn btn-link">link button</button>

<!-- a button with loading state -->
<button class="btn loading">button</button>

Add the disabled class or the disabled attribute for a disabled button.

Button sizes

Add the btn-sm or btn-lg class for small or large button size. Also, you can add the btn-block class for a full-width button.

Please note that you could use the btn-action class for a square button, or add another circle class for a round button, which is often used as a Float Action Button (FAB).

<button class="btn btn-lg">large button</button>
<button class="btn btn-sm">small button</button>

<button class="btn btn-block">block button</button>

<button class="btn btn-action"><i class="icon icon-arrow-left"></i></button>
<button class="btn btn-action circle"><i class="icon icon-arrow-left"></i></button>
<button class="btn btn-primary btn-lg"><i class="icon icon-arrow-left"></i> large</button>
<button class="btn btn-primary"><i class="icon icon-arrow-left"></i> normal</button>
<button class="btn btn-primary btn-sm"><i class="icon icon-arrow-left"></i> small</button>

Button groups

If you want to use buttons as a group, add the btn-group class to the container. You can add the btn-group-block class for a full-width button group.

<div class="btn-group btn-group-block">
  <button class="btn">first button</button>
  <button class="btn">second button</button>
  <button class="btn">third button</button>


Forms provide the most common control styles used in forms, including input, textarea, select, checkbox, radio and switch.

  <!-- form input control -->
  <div class="form-group">
    <label class="form-label" for="input-example-1">Name</label>
    <input class="form-input" type="text" id="input-example-1" placeholder="Name" />
  <!-- form radio control -->
  <div class="form-group">
    <label class="form-label">Gender</label>
    <label class="form-radio">
      <input type="radio" name="gender" />
      <i class="form-icon"></i> Male
    <label class="form-radio">
      <input type="radio" name="gender" checked />
      <i class="form-icon"></i> Female
  <!-- form select control -->
  <div class="form-group">
    <select class="form-select">
      <option>Choose an option</option>
  <!-- form switch control -->
  <div class="form-group">
    <label class="form-switch">
      <input type="checkbox" />
      <i class="form-icon"></i> Send me emails with news and tips
  <!-- form textarea control -->
  <div class="form-group">
    <label class="form-label" for="input-example-3">Message</label>
    <textarea class="form-input" id="input-example-3" placeholder="Textarea" rows="3"></textarea>
  <!-- form checkbox control -->
  <div class="form-group">
    <label class="form-checkbox">
      <input type="checkbox" />
      <i class="form-icon"></i> Remember me

You can use :indeterminate pseudo class for indeterminate state of checkboxes.

If you want to have a horizontal form, add the form-horizontal class to the <form> container. And add the col-[1-12] class to the child elements for form row layout.

<form class="form-horizontal">
  <div class="form-group">
    <div class="col-3">
      <label class="form-label" for="input-example-1">Name</label>
    <div class="col-9">
      <input class="form-input" type="text" id="input-example-1" placeholder="Name" />
  <!-- form structure -->

Form sizes

For smaller or larger input and select controls, you could add the input-sm/input-lg, select-sm/select-lg and label-sm/label-lg classes to the elements.

Form icons

Add a wrapper with the has-icon-left/has-icon-right class to <input> element. And add the icon with form-icon class next to the <input>.

<!-- form input with Spectre icon -->
<div class="has-icon-left">
  <input type="text" class="form-input" placeholder="..." />
  <i class="form-icon icon icon-check"></i>

You can use the loading class for loading or posting state.

<!-- form input with loading icon -->
<div class="has-icon-right">
  <input type="text" class="form-input" placeholder="..." />
  <i class="form-icon loading"></i>

Input types

Input groups


If you want to attach text and button along with an input, add the input-group class to the input container. And add the input-group-addon class to the text element and input-group-btn to the button element.

<!-- normal input group -->
<div class="input-group">
  <span class="input-group-addon">...</span>
  <input type="text" class="form-input" placeholder="..." />

<!-- large input group -->
<div class="input-group">
  <span class="input-group-addon addon-lg">...</span>
  <input type="text" class="form-input input-lg" placeholder="..." />

<!-- normal input group with button -->
<div class="input-group">
  <span class="input-group-addon">...</span>
  <input type="text" class="form-input" placeholder="..." />
  <button class="btn btn-primary input-group-btn">Submit</button>

Form validation styles

To use form validation styles, add is-success or is-error class to the controls or add has-success or has-error class to parent elements. You can use the form-input-hint class to provide form validation success and error messages.

The name is invalid.

The email is available.

The option is invalid.

The option is available.

The name is invalid.

  <!-- form validation class: has-success -->
  <div class="form-group has-success">
    <label class="form-label" for="input-example-1">Name</label>
    <input class="form-input" type="text" id="input-example-1" placeholder="..." />
    <p class="form-input-hint">The name is invalid.</p>

  <!-- form validation class: is-success -->
  <div class="form-group">
    <label class="form-label" for="input-example-1">Name</label>
    <input class="form-input is-success" type="text" id="input-example-1" placeholder="..." />
    <p class="form-input-hint">The name is invalid.</p>

Form disabled styles

Add the disabled attribute to the element or <fieldset> for a disabled form components style.

Icons experimental

Icons are single-element, responsive and pure CSS icons. You can include spectre-icons.css located in the dist folder to your web <head> to have these CSS icons.










































<i class="icon icon-menu"></i>


Labels are formatted text tags for highlighted, informative information.

default label primary label success label warning label error label

Add the label class to <span> or <small> elements. You can add another class label-primary, label-success, label-warning and label-error for a primary colored label.

<span class="label">default label</span>
<span class="label label-primary">primary label</span>


Codes are inline and multiline code snippets.

For inline code, you can use the element <code>. For multiline code snippet blocks, you can use <pre> with the code class as a container, and add <code> inside it. The data-lang attribute is rendered as the language name in the top right.

<!-- code snippets -->
<button class="btn">
<pre class="code" data-lang="HTML"><code><span class="com">&lt;!-- code snippets --&gt;</span>
&lt;<span class="tag">button</span> <span class="atn">class</span>=<span class="atv">&quot;btn&quot;</span>&gt;
&lt;<span class="tag">/button</span>&gt;


Media includes responsive images, figures and video classes.

Add the img-responsive class to <img> elements. The images will scale with the parent sizes.

macOS El Capitan Wallpaper

Add the img-fit-contain or img-fit-cover class to <img> or <video> elements. The media will crop itself to fit inside the element (and you don't need another container). This feature can replace the background image trick. Microsoft Edge support is in development.

macOS Yosemite Wallpaper
macOS Yosemite Wallpaper
<img src="img/osx-el-capitan.jpg" class="img-responsive ..." alt="..." />
<img src="img/osx-el-capitan.jpg" class="img-fit-contain ..." alt="..." />
<img src="img/osx-el-capitan.jpg" class="img-fit-cover ..." alt="..." />

You can use the element <figure> for an image with a caption. Add the figure class to <figure> element. The images with the img-responsive class will be responsive. And the included class figure-caption will provide basic style for caption. Also, you can use text-left, text-center and text-right for caption alignment.

macOS Yosemite Wallpaper
macOS Yosemite wallpaper
<figure class="figure">
  <img src="img/osx-yosemite-2.jpg" class="img-responsive ..." alt="..." />
  <figcaption class="figure-caption text-center">macOS Yosemite wallpaper</figcaption>

For responsive video, add a container with the video-responsive class. Insert any YouTube, Youku or other iframe/embed video inside the container. The ratio is 16:9 by default. You may add video-responsive-4-3 for 4:3 ratio video container or video-responsive-1-1 for 1:1 ratio.

<div class="video-responsive video-responsive-4-3">
  <iframe src="..." width="..." height="..." frameborder="0" allowfullscreen></iframe>