---
layout: doc
title: "Cobalt Support Quick Reference"
---

## HTML elements

*   `<body>`
*   `<br>`
*   `<div>`
*   `<head>`
*   `<html>`
*   `<link>` (with `type="text/css"`)
*   `<meta>`
*   `<script>`
*   `<span>`
*   `<style>`
*   `<video>`

## CSS properties

*   [animation](
    https://www.w3.org/TR/css3-animations/#animation-shorthand-property)
*   [background](https://www.w3.org/TR/css3-background/#the-background),
    [background-color](
    https://www.w3.org/TR/css3-background/#the-background-color),
    [background-image](
    https://www.w3.org/TR/css3-background/#the-background-image)
*   [border](https://www.w3.org/TR/css3-background/#the-border-shorthands),
    [border-top](
    https://www.w3.org/TR/css3-background/#the-border-shorthands),
    [border-bottom](
    https://www.w3.org/TR/css3-background/#the-border-shorthands),
    [border-left](
    https://www.w3.org/TR/css3-background/#the-border-shorthands),
    [border-right](
    https://www.w3.org/TR/css3-background/#the-border-shorthands)
*   [border-radius](https://www.w3.org/TR/css3-background/#the-border-radius)
*   [border-style](https://www.w3.org/TR/css3-background/#the-border-style)
*   [border-width](https://www.w3.org/TR/css3-background/#the-border-width)
*   [box-shadow](https://www.w3.org/TR/css3-background/#the-box-shadow)
*   [color](https://www.w3.org/TR/css3-color/#foreground)
*   [content](https://www.w3.org/TR/CSS21/generate.html#content)
*   [display](https://www.w3.org/TR/CSS21/visuren.html#propdef-display)
*   [font](https://www.w3.org/TR/css-fonts-3/#font-prop)
*   [@font-face](https://www.w3.org/TR/css-fonts-3/#font-face-rule)
*   [font-family](https://www.w3.org/TR/css-fonts-3/#propdef-font-family)
*   [font-size](https://www.w3.org/TR/css-fonts-3/#font-size-prop)
*   [font-style](https://www.w3.org/TR/css-fonts-3/#font-style-prop)
*   [font-weight](https://www.w3.org/TR/css-fonts-3/#font-weight-prop)
*   [line-height](https://www.w3.org/TR/CSS2/visudet.html#propdef-line-height)
*   [margin](https://www.w3.org/TR/CSS21/box.html#margin-properties),
    [margin-top](https://www.w3.org/TR/CSS21/box.html#margin-properties),
    [margin-bottom](https://www.w3.org/TR/CSS21/box.html#margin-properties),
    [margin-left](https://www.w3.org/TR/CSS21/box.html#margin-properties),
    [margin-right](https://www.w3.org/TR/CSS21/box.html#margin-properties)
*   [max-height](https://www.w3.org/TR/CSS2/visudet.html#min-max-heights),
    [max-width](https://www.w3.org/TR/CSS2/visudet.html#min-max-widths)
*   [@media](https://www.w3.org/TR/css3-mediaqueries/)
*   [opacity](https://www.w3.org/TR/css3-color/#transparency)
*   [overflow](https://www.w3.org/TR/CSS2/visufx.html#overflow)
*   [padding](https://www.w3.org/TR/CSS21/box.html#padding-properties),
    [padding-top](https://www.w3.org/TR/CSS21/box.html#padding-properties),
    [padding-bottom](https://www.w3.org/TR/CSS21/box.html#padding-properties),
    [padding-left](https://www.w3.org/TR/CSS21/box.html#padding-properties),
    [padding-right](https://www.w3.org/TR/CSS21/box.html#padding-properties)
*   [position](https://www.w3.org/TR/CSS21/visuren.html#propdef-position)
*   [top](https://www.w3.org/TR/CSS21/visuren.html#position-props),
    [bottom](https://www.w3.org/TR/CSS21/visuren.html#position-props),
    [left](https://www.w3.org/TR/CSS21/visuren.html#position-props),
    [right](https://www.w3.org/TR/CSS21/visuren.html#position-props)
*   [transform](https://www.w3.org/TR/css-transforms-1/#transform-property)
*   [transform-origin](
    https://www.w3.org/TR/css-transforms-1/#propdef-transform-origin)
*   [transition](
    https://www.w3.org/TR/css3-transitions/#transition-shorthand-property)
*   [transition-delay](
    https://www.w3.org/TR/css3-transitions/#transition-delay-property)
*   [transition-duration](
    https://www.w3.org/TR/css3-transitions/#transition-duration-property)
*   [transition-property](
    https://www.w3.org/TR/css3-transitions/#transition-property-property)
*   [transition-timing-function](
    https://www.w3.org/TR/css3-transitions/#transition-timing-function-property)
*   [text-align](https://www.w3.org/TR/css-text-3/#text-align)
*   [text-indent](https://www.w3.org/TR/css-text-3/#text-indent-property)
*   [text-overflow](https://www.w3.org/TR/css3-ui/#propdef-text-overflow)
*   [text-shadow](https://www.w3.org/TR/css-text-decor-3/#text-shadow-property)
*   [text-transform](https://www.w3.org/TR/css-text-3/#text-transform-property)
*   [vertical-align](
    https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align)
    (supported values: `top`, `bottom`, `middle`, `baseline`)
*   [visibility](https://www.w3.org/TR/CSS21/visufx.html#visibility)
*   [white-space](https://www.w3.org/TR/css-text-3/#white-space-property)
*   [z-index](https://www.w3.org/TR/CSS21/visuren.html#propdef-z-index)

## CSS selectors

*   Simple selectors:
    ['*'](https://www.w3.org/TR/selectors4/#universal-selector),
    [type](https://www.w3.org/TR/selectors4/#type-selectors),
    [.class](https://www.w3.org/TR/selectors4/#class-html),
    [#id](https://www.w3.org/TR/selectors4/#id-selectors),
    [:empty](https://www.w3.org/TR/selectors4/#empty-pseudo),
    [:focus](https://www.w3.org/TR/selectors4/#focus-pseudo),
    [:not()](https://www.w3.org/TR/selectors4/#negation-pseudo)
*   Pseudo elements:
    [:before](https://www.w3.org/TR/selectors4/#pseudo-element),
    [:after](https://www.w3.org/TR/selectors4/#pseudo-element),
*   Combinators:
    [' '](https://www.w3.org/TR/selectors4/#descendant-combinators),
    ['>'](https://www.w3.org/TR/selectors4/#child-combinators),
    ['+'](https://www.w3.org/TR/selectors4/#adjacent-sibling-combinators),
    ['~'](https://www.w3.org/TR/selectors4/#general-sibling-combinators)
*   [Grouping with ','](https://www.w3.org/TR/selectors4/#grouping)

## JavaScript Web APIs

*   [`Crypto.getRandomValues`](
    https://www.w3.org/TR/WebCryptoAPI/#crypto-interface)
*   [CSSOM](
    http://www.w3.org/TR/cssom/) (partial)
*   [CSSOM View](https://www.w3.org/TR/cssom-view-1/)
    (no scrolling, moving, resizing)
*   `Console.log`
*   [DOM4](http://www.w3.org/TR/dom/) (partial)
*   [EncryptedMedia Extensions v0.1b](
    https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1b/encrypted-media/encrypted-media.html) (unprefixed)
*   `Image` (for preloading and caching only)
*   [Media Source Extensions, Editor's Draft 09 August 2012](
    https://rawgit.com/w3c/media-source/6747ed7a3206f646963d760100b0f37e2fc7e47e/media-source.html)
*   [Typed Arrays](
    https://www.khronos.org/registry/typedarray/specs/latest/) (partial)
*   [URL](https://url.spec.whatwg.org/#api) (partial)
*   [Web Audio API](https://www.w3.org/TR/webaudio/) (partial)
*   [Web Storage API](https://www.w3.org/TR/webstorage/)
*   [XMLHttpRequest Level 1](http://www.w3.org/TR/XMLHttpRequest/)

## Protocols

*   https:
*   h5vcc-embedded: (for embedded resources)
*   [Content Security Policy Level 2](https://www.w3.org/TR/CSP2/)
    in HTTP headers is _required_, and report-only is disabled.

## Media formats

### Containers

*   FLV
*   MKV (for WebM)
*   MP4/FMP4
*   WAV

### Encodings (depending on platform support)

*   AAC
*   AVC (H.264) at 1080p/60fps ([Level
    4.2](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels))
*   VP8/Vorbis
*   VP9/Opus
*   16-bit stereo PCM audio (for sound effects)

### Images

*   JPEG
*   PNG
*   WebP (including animated)
