This specification has been produced by the Open IPTV Forum (OIPF).
This specification provides multiple options for some features. The Open IPTV Forum Profiles specification complements the Release 2 specifications by defining the Open IPTV Forum implementation and deployment profiles.
The Open IPTV Forum Release 2 Solution specification consists of ten Volumes:
This document is a profile of HTML, CSS and other related web technologies aimed at connected TV services and devices. Its goal is to describe a common profile that can be relied on by content and service providers and implemented by manufacturers. It does not describe extensions or modification to any of the referenced technologies but only tries to define a subset of web standards that are suitable and useful for TV deployments and at the same time stable enough to provide a good degree of confidence that real interoperability can be achieved. It may add clarifications and/or additional constraints where these are needed due to the nature of target deployment environment.
This document only describes a minimum subset of web technology that a Terminal compliant with this profile is required to support. This does not preclude terminals to support more technologies than the ones described in this profile.
This document will be updated over time, as maturity of different standards (now works in progress) increase and/or new web standards are defined.
This specification is aimed at TV terminals that implement a browser based application environment. Applications running in such environment are authored using a set of languages commonly referred to as "web technologies" or "web standards". This document lists the minimum set of languages that shall be supported by a Terminal conforming to this specification. A terminal may support more languages than the ones listed in this document.
To avoid fragmentation and enhance interoperability with other web technologies-based devices and eco-systems, this specification tries not to diverge from any of the referenced specifications it relies on. In some exceptional cases though, this specification may decide to intentionally diverge from the referenced specifications. Such differences will be explicitly noted throughout the document.
This document is organized as follows: the main body includes a list of references to specifications that this profile relies on and that are considered necessary to enable an enhanced user experience. Annex contains instead a detailed list of which features for each specification are considered stable enough and therefore can be safely supported by terminals and used by application developers. Such tables will be updated in future revisions of this document as maturity of the various specifications evolve. Support tables are omitted for those specifications that are required to be fully supported.
The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL in this specification are to be interpreted as described in [[RFC2119]].
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
This document references specifications that some times are still works in progress. All features marked as "at risk" in such referenced specification SHALL be considered as OPTIONAL to support unless this profile explicitly mandate support for them.
Term | Definition |
---|---|
Terminal | a device running an interactive user-agent (browser) conformant to this specification. This is equivalent to the the OITF block as defined in [[.OIPF_ARCH2]]. |
Application | an interactive software authored using the set of languages defined by this profile and conformant with this profile. |
Authoring Tool | a software program used to edit applications. |
MB | 220 bytes. |
Abbreviation | Definition |
---|---|
API | Application Programming Interface |
CSS | Cascading Style Sheets |
DOM | Document Object Model |
WOFF | Web Open Font Format |
The HTML5 [[!HTML5-20130806]] specification defines conformance requirements for user-agents and documents. Applications and authoring tools SHALL comply with conformance requirements for documents unless differently specified in annex . Terminals SHALL comply with conformance requirements for user agents unless differently specified in annex ; in particular a terminal SHALL support the HTML syntax and the XHTML syntax for HTML documents as defined in [[!HTML5-20130806]].
Support for CSS as a whole is not required by HTML5, even though some features are defined in terms of specific CSS requirements. This section defines requirements for CSS and other style and/or graphic related technologies.
Terminals SHALL support CSS Basic User Interface [[!CSS3UI-20120117]] as profiled in annex .
Terminals SHALL support CSS 2.1 [[!CSS21-20110607]]. Although the CSS 2.1 specification includes a "tv"
media type, this has not been widely used in practice. Terminals MAY ignore the "tv"
media type and just use the "screen"
media type.
Terminals SHALL support CSS Color Module Level 3 [[!CSS3COLOR-20110607]].
Terminals SHALL support CSS Image Values and Replaced Content [[!CSS3-IMAGES-20120417]] as profiled in annex .
Terminals SHALL support CSS Backgrounds and Borders [[!CSS3-BG-20120724]] as profiled in annex .
Terminals SHALL support CSS Selectors Level 3 [[!SELECTORS-LEVEL-3-20110929]].
Terminals SHALL support CSS Media Queries [[!CSS3-MEDIAQUERIES-20120619]].
Terminals SHALL support CSS Multi-column Layout [[!CSS3COL-20110412]].
Terminals SHALL support CSS Flexible Box Layout [[!FLEXBOX-20120918]].
Terminals SHOULD support CSS Conditional Rules Module Level 3 [[!CSS3-CONDITIONAL-20130404]].
Terminals SHALL support the [[!CSS3-FONTS-20130212]] as profiled in annex .
Terminals SHALL support the Web Open Font Format (WOFF) [[!WOFF-20121213]]. Applications can link to [[!WOFF-20121213]] fonts via a @font-face
rule ([[!CSS3-FONTS-20130212]]).
Terminals SHALL support CSS Text [[!CSS3TEXT-20121113]] as profiled in annex .
Terminals SHALL support the CSS Transforms [[!CSS3-TRANSFORMS-20120911]] as profiled in annex .
Terminals SHALL support CSS Transitions [[!CSS3-TRANSITIONS-20130212]] as profiled in annex .
Terminals SHALL support CSS Animations [[!CSS3-ANIMATIONS-20130219]].
Terminals SHALL support Canvas 2D [[!CANVAS-2D-20121217]] as profiled in annex .
Scripts are small programs that can be embedded into applications. While defining features that rely on scripting, HTML5 does not mandate support for scripting for all user-agents. Furthermore scripting is defined using a syntax that in most cases is independent from the underlying scripting language. For such reasons, this specification has additional requirements as defined in this section.
In addition to the support for the DOM 3 events specification that is required by HTML5 [[!HTML5-20130806]], terminals SHALL support the focus and keyboard event types defined in section 5.2.2 and 5.2.5 respectively of [[!DOM-LEVEL-3-EVENTS-20120906]].
In order to support legacy content, Terminals SHALL support also the legacy attributes keyCode
and charCode
as defined in Appendix B of [[!DOM-LEVEL-3-EVENTS-20120906]].
Applications SHALL NOT rely on these attributes and SHALL use the new event model as defined in DOM3 Events. Values used for the keyCode
property are implementation specific, but SHALL be exposed to the application through the constants below, defined on the KeyboardEvent
interface. For each constant, an equivalent key value is given (as defined for KeyboardEvent.key
in DOM3, see section 6.2.7.1 of [[!DOM-LEVEL-3-EVENTS-20120906]]).
In order to support legacy content, these constants SHALL also be available via a KeyEvent interface
. For example VK_OK can be accessed as KeyEvent.VK_OK
.
Virtual Keycode Constants | Equivalent key value (in DOM3) |
---|---|
VK_UNDEFINED | 'Unidentified' |
VK_CANCEL | 'Cancel' |
VK_BACK_SPACE | 'Backspace' |
VK_TAB | 'Tab' |
VK_CLEAR | 'Clear' |
VK_ENTER | 'Enter' |
VK_SHIFT | 'Shift' |
VK_CONTROL | 'Control' |
VK_ALT | 'Alt' |
VK_PAUSE | 'Pause' |
VK_CAPS_LOCK | 'CapsLock' |
VK_KANA | 'KanaMode' |
VK_FINAL | 'FinalMode' |
VK_KANJI | 'KanjiMode' |
VK_ESCAPE | 'Esc' |
VK_CONVERT | 'Convert' |
VK_NONCONVERT | 'Nonconvert' |
VK_ACCEPT | 'Accept' |
VK_MODECHANGE | 'ModeChange' |
VK_SPACE | space character, fix |
VK_PAGE_UP | 'PageUp' |
VK_PAGE_DOWN | 'PageDown' |
VK_END | 'End' |
VK_HOME | 'Home' |
VK_LEFT | 'Left' |
VK_UP | 'Up' |
VK_RIGHT | 'Right' |
VK_DOWN | 'Down' |
VK_COMMA | ',' |
VK_PERIOD | '.' |
VK_SLASH | '/' |
VK_0 | '0' |
VK_1 | '1' |
VK_2 | '2' |
VK_3 | '3' |
VK_4 | '4' |
VK_5 | '5' |
VK_6 | '6' |
VK_7 | '7' |
VK_8 | '8' |
VK_9 | '9' |
VK_SEMICOLON | ';' |
VK_EQUALS | 'Equals' |
VK_A | 'A' |
VK_B | 'B' |
VK_C | 'C' |
VK_D | 'D' |
VK_E | 'E' |
VK_F | 'F' |
VK_G | 'G' |
VK_H | 'H' |
VK_I | 'I' |
VK_J | 'J' |
VK_K | 'K' |
VK_L | 'L' |
VK_M | 'M' |
VK_N | 'N' |
VK_O | 'O' |
VK_P | 'P' |
VK_Q | 'Q' |
VK_R | 'R' |
VK_S | 'S' |
VK_T | 'T' |
VK_U | 'U' |
VK_V | 'V' |
VK_W | 'W' |
VK_X | 'X' |
VK_Y | 'Y' |
VK_Z | 'Z' |
VK_OPEN_BRACKET | '[' |
VK_BACK_SLASH | '\' |
VK_CLOSE_BRACKET | ']' |
VK_NUMPAD0 | see NOTE below |
VK_NUMPAD1 | see NOTE below |
VK_NUMPAD2 | see NOTE below |
VK_NUMPAD3 | see NOTE below |
VK_NUMPAD4 | see NOTE below |
VK_NUMPAD5 | see NOTE below |
VK_NUMPAD6 | see NOTE below |
VK_NUMPAD7 | see NOTE below |
VK_NUMPAD8 | see NOTE below |
VK_NUMPAD9 | see NOTE below |
VK_MULTIPLY | 'Multiply' |
VK_ADD | 'Add' |
VK_SEPARATER | 'Separator' |
VK_SUBTRACT | 'Subtract' |
VK_DECIMAL | 'Decimal' |
VK_DIVIDE | 'Divide' |
VK_F1 | 'F1' |
VK_F2 | 'F2' |
VK_F3 | 'F3' |
VK_F4 | 'F4' |
VK_F5 | 'F5' |
VK_F6 | 'F6' |
VK_F7 | 'F7' |
VK_F8 | 'F8' |
VK_F9 | 'F9' |
VK_F10 | 'F10' |
VK_F11 | 'F11' |
VK_F12 | 'F12' |
VK_DELETE | 'Del' |
VK_NUM_LOCK | 'NumLock' |
VK_SCROLL_LOCK | 'Scroll' |
VK_PRINTSCREEN | 'PrintScreen' |
VK_INSERT | 'Insert' |
VK_HELP | 'Help' |
VK_META | 'Meta' |
VK_BACK_QUOTE | '`' |
VK_QUOTE | ''' |
VK_RED | 'Red' |
VK_GREEN | 'Green' |
VK_YELLOW | 'Yellow' |
VK_BLUE | 'Blue' |
VK_GREY | 'Grey' |
VK_BROWN | 'Brown' |
VK_POWER | 'Power' |
VK_DIMMER | 'Dimmer' |
VK_WINK | 'Wink' |
VK_REWIND | 'MediaRewind' |
VK_STOP | 'MediaStop' |
VK_EJECT_TOGGLE | 'Eject' |
VK_PLAY | 'MediaPlay' |
VK_RECORD | 'MediaRecord' |
VK_FAST_FWD | 'FastFwd' |
VK_PLAY_SPEED_UP | 'PlaySpeedUp' |
VK_PLAY_SPEED_DOWN | 'PlaySpeedDown' |
VK_PLAY_SPEED_RESET | 'PlaySpeedReset' |
VK_RECORD_SPEED_NEXT | 'RecordSpeedNext' |
VK_GO_TO_START | 'MediaTrackStart' |
VK_GO_TO_END | 'MediaTrackEnd' |
VK_TRACK_PREV | 'MediaPreviousTrack' |
VK_TRACK_NEXT | 'MediaNextTrack' |
VK_RANDOM_TOGGLE | 'RandomToggle' |
VK_CHANNEL_UP | 'ChannelUp' |
VK_CHANNEL_DOWN | 'ChannelDown' |
VK_STORE_FAVORITE_0 | 'StoreFavorite0' |
VK_STORE_FAVORITE_1 | 'StoreFavorite1' |
VK_STORE_FAVORITE_2 | 'StoreFavorite2' |
VK_STORE_FAVORITE_3 | 'StoreFavorite4' |
VK_RECALL_FAVORITE_0 | 'RecallFavorite0' |
VK_RECALL_FAVORITE_1 | 'RecallFavorite1' |
VK_RECALL_FAVORITE_2 | 'RecallFavorite2' |
VK_RECALL_FAVORITE_3 | 'RecallFavorite3' |
VK_CLEAR_FAVORITE_0 | 'ClearFavorite0' |
VK_CLEAR_FAVORITE_1 | 'ClearFavorite1' |
VK_CLEAR_FAVORITE_2 | 'ClearFavorite2' |
VK_CLEAR_FAVORITE_3 | 'ClearFavorite3' |
VK_SCAN_CHANNELS_TOGGLE | 'ScanChannelsToggle' |
VK_PINP_TOGGLE | 'PinPToggle' |
VK_SPLIT_SCREEN_TOGGLE | 'SplitScreenToggle' |
VK_DISPLAY_SWAP | 'DisplaySwap' |
VK_SCREEN_MODE_NEXT | 'ScreenModeNext' |
VK_VIDEO_MODE_NEXT | 'VideoModeNext' |
VK_VOLUME_UP | 'VolumeUp' |
VK_VOLUME_DOWN | 'VolumeDown' |
VK_MUTE | 'VolumeMute' |
VK_SURROUND_MODE_NEXT | 'AudioSurroundModeNext' |
VK_BALANCE_RIGHT | 'AudioBalanceRight' |
VK_BALANCE_LEFT | 'AudioBalanceLeft' |
VK_FADER_FRONT | 'AudioFaderFront' |
VK_FADER_REAR | 'AudioFaderRear' |
VK_BASS_BOOST_UP | 'AudioBassBoostUp' |
VK_BASS_BOOST_DOWN | 'AudioBassBoostDown' |
VK_INFO | 'Info' |
VK_GUIDE | 'Guide' |
VK_TELETEXT | 'Teletext' |
VK_SUBTITLE | 'Subtitle' |
VK_BACK | 'BrowserBack' |
VK_MENU | 'Menu' |
VK_PLAY_PAUSE | 'MediaPlayPause' |
Terminals SHALL support innerWidth
and innerHeight
properties of the Window
interface as defined in [[!CSSOM-VIEW]]. Terminals SHOULD support other features defined in [[!CSSOM-VIEW]].
A number of specifications from W3C or other organizations define APIs that provide additional functionalities to applications. This section lists which specifications SHALL be supported by a terminal. Note that the APIs defined as part of the HTML5 specification are not included in this section but can be found in annex .
Terminals SHALL support the XMLHttpRequest API [[!XHR-20121206]] as profiled in annex .
Terminals SHALL support the Web Messaging API [[!POSTMSG-20120501]].
Terminals SHALL support the Web Socket API [[!WEBSOCKETS-API-20120920]] with the protocol defined in [[!RFC6455]].
Terminals SHALL support the Web Workers API [[!WEBWORKERS-20120501]] as profiled in annex .
Terminals SHALL support the Server-Sent Events API [[!SSE-20121211]].
Terminals SHALL support the Web Storage API [[!WEBSTORAGE-20130730]].
Whenever an aApplication points to a media resource through a URI (e.g. via the src
attribute of the <video>
element), it MAY include a Fragment Identifier [[!RFC3986]]. The semantics of such fragments for resources of type audio/*, image/* and video/* are defined in [[!MEDIA-FRAGS-20120925]].
Terminals SHALL support temporal clipping based on Normal Play Time as defined in section 4.2.1 of the Media Fragments URI specification [[!MEDIA-FRAGS-20120925]].
This section provides some guidelines about the recommended minimum memory requirements of some of the specifications referenced by this document.
Feature | Memory Requirement | Comment |
---|---|---|
Downloadable fonts [[!WOFF-20121213]] |
|
It is recommended to cache WOFF packages for for a better user experience. |
Web Storage [[!WEBSTORAGE-20130730]] |
|
|
Cookies [[!COOKIES]] |
|
This section includes support tables for various specifications referenced by this profile. Each feature is given a short description and hyperlinked to its place within the related specification.
Terminals SHALL support all features marked as "Yes" in the "Mandatory" column; if restrictions apply, the feature support is indicated as "Partial" and the "Comment" column provides a description of the normative requirements. Support for all features marked as "No" is OPTIONAL.
Note that specifications that are required to be fully supported don't have a related support table in this section.
This section lists HTML elements that are either new HTML5 elements or elements already defined in HTML4 and now re-defined in HTML5. Some of the HTML4 elements have slightly modified meanings in HTML5 to better reflect how they are used on the Web or to make them more useful.
Attribute Name | Description | Mandatory | Comment |
---|---|---|---|
accesskey |
The accesskey attribute's value is used by the user agent as a guide for creating a keyboard shortcut that activates or focuses the element. | No | |
class |
Every HTML element may have a class attribute specified. The attribute, if specified, must have a value that is an unordered set of unique space-separated tokens representing the various classes that the element belongs to. The classes that an HTML element has assigned to it consist of all the classes returned when the value of the class attribute is split on spaces. | Yes | |
dir |
The dir attribute specifies the element's text directionality (left-to-right, or right-to-left). The attribute is an enumerated attribute with the keyword ltr (left-to-right) mapping to the state ltr , and the keyword rtl (right-to-left) mapping to the state rtl . The attribute has no default. |
Yes | |
id |
The id attribute represents its element's unique identifier. The value must be unique in the element's home subtree and must contain at least one character. The value must not contain any space characters. |
Yes | |
lang |
The lang attribute (in no namespace) specifies the primary language for the element's contents and for any of the element's attributes that contain text. Its value must be a valid BCP 47 language code, or the empty string. |
Yes | |
style |
All HTML elements may have the style content attribute set. If specified, the attribute must contain only a list of zero or more semicolon-separated (;) CSS declarations. In user agents that support CSS, the attribute's value must be parsed when the attribute is added or has its value changed, with its value treated as the body (the part inside the curly brackets) of a declaration block in a rule whose selector matches just the element on which the attribute is set. All URLs in the value must be resolved relative to the element when the attribute is parsed. For the purposes of the CSS cascade, the attribute must be considered to be a style attribute at the author level. Documents that use style attributes on any of their elements must still be comprehensible and usable if those attributes were removed. |
Yes | |
tabindex |
The tabindex content attribute specifies:
tab key to navigate through the focusable elements. The term "tabbing" refers to moving forward through the focusable elements that can be reached using sequential focus navigation. If it is specified, it must have a value that is a valid integer. |
Yes | |
title |
The
The value is text. |
Yes | |
contenteditable / isContentEditable |
The contenteditable attribute is an enumerated attribute whose keywords are the empty string , true , and false . The empty string and the true keyword map to the true state. The false keyword maps to the false state. In addition, there is a third state, the inherit state, which is the missing value default (and the invalid value default).
|
No | |
designMode |
Documents have a designMode, which can be either enabled or disabled. When enabled, the document is editable. | No | |
contextmenu |
The contextmenu attribute gives the element's context menu. The value must be the ID of a menu element in the DOM. If the node that would be obtained by the invoking the getElementById() method using the attribute's value as the only argument is null or not a menu element, then the element has no assigned context menu. Otherwise, the element's assigned context menu is the element so identified. |
No | |
data-* |
A custom data attribute is an attribute in no namespace whose name starts with the string "data- ", has at least one character after the hyphen, is XML-compatible, and contains no characters in the range U+0041 .. U+005A (LATIN CAPITAL LETTER A .. LATIN CAPITAL LETTER Z). Custom data attributes are intended to store custom data private to the page or application, for which there are no more appropriate attributes or elements. These attributes are not intended for use by software that is independent of the site that uses the attributes. Every HTML element may have any number of custom data attributes specified, with any value. They refer to the DOM Dataset API. |
Yes | |
draggable |
All HTML elements may have the draggable content attribute set. It is an enumerated attribute, and has three states:
|
No | |
dropzone |
All HTML elements may have the dropzone content attribute set. | No | |
hidden |
All HTML elements may have the hidden content attribute set. The hidden attribute is a boolean attribute. When specified on an element, it indicates that the element is not yet, or is no longer, relevant. User agents should not render elements that have the hidden attribute specified. |
Yes | |
spellcheck |
The spellcheck attribute is an enumerated attribute whose keywords are the empty string, true and false. The empty string and the true keyword map to the true state. The false keyword maps to the false state. Please note that the "default" state has been removed.
|
No |
Interface | Attribute Name | Mandatory | Comment |
---|---|---|---|
HTMLVideoElement |
width |
Yes | |
height |
Yes | ||
videoWidth |
Yes | ||
videoHeight |
Yes | ||
poster |
Yes | ||
HTMLAudioElement |
Yes | ||
HTMLSourceElement |
src |
Yes | |
type |
Yes | ||
media |
Yes | ||
HTMLTrackElement |
No | ||
HTMLMediaElement |
error |
Yes | |
src |
Yes | ||
currentSrc |
Yes | ||
crossOrigin |
No | ||
networkState |
Yes | ||
preload |
Yes | ||
buffered |
Yes | ||
load() |
Yes | ||
canPlayType() |
Yes | ||
readyState |
Yes | ||
seeking |
Yes | ||
currentTime |
Yes | ||
duration |
Yes | ||
startDate |
No | ||
paused |
Yes | ||
defaultPlaybackRate |
Yes | ||
playbackRate |
Yes | ||
played |
Yes | ||
seekable |
Yes | ||
ended |
Yes | ||
autoplay |
Yes | ||
loop |
Yes | ||
play() |
Yes | ||
pause() |
Yes | ||
mediaGroup |
No | ||
controller |
No | ||
controls |
No | ||
volume |
Yes | ||
muted |
Yes | ||
defaultMuted |
Yes | ||
videoTracks |
No | ||
audioTracks |
Yes | ||
textTracks |
Yes | Only support for in-band tracks is required | |
addTextTrack |
No | ||
MediaError |
code |
Yes | |
AudioTrackList |
length |
Yes | |
getter(index) |
Yes | ||
getTrackById() |
Yes | ||
onchange |
Yes | ||
onaddtrack |
No | ||
onremovetrack |
No | ||
AudioTrack |
id |
Yes | |
kind |
Yes | ||
label |
Yes | ||
language |
Yes | ||
enabled |
Yes | ||
VideoTrackList |
No | ||
VideoTrack |
No | ||
TextTrackList |
Yes | ||
TextTrack |
kind |
Yes | |
label |
Yes | ||
language |
Yes | ||
onMetadataTrackDispatchType |
Yes | ||
mode |
Yes | ||
cues |
No | ||
activeCues |
No | ||
addCue |
No | ||
removeCue |
No | ||
oncuechange |
No | ||
TextTrackCueList |
No | ||
TextTrackCue |
No | ||
MediaController |
No | ||
TimeRange |
length |
Yes | |
start |
Yes | ||
end |
Yes | ||
TrackEvent |
Yes |
Events | Mandatory |
---|---|
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
Yes | |
HbbTV says "Yes" | |
Yes |
This section contains support tables for various CSS specifications.
Property | Values | Description | Mandatory | Comment |
---|---|---|---|---|
appearance |
normal | <appearance> | inherit | This property can be used to make an element look like a standard user interface element on the platform. It is a shorthand for "appearance", "color", "font", and "cursor". | No | |
box-sizing |
padding-box | content-box | border-box | inherit | This property specifies a border/padding value in relation to a fluid length element. | Partial | Support for property value padding-box is OPTIONAL (marked as feature at risk in [[!HTML5-20130806]]) |
content |
icon | This property is used with the :before and :after pseudo-elements to generate content in a document. | No | Marked as feature at risk in [[!HTML5-20130806]] |
cursor |
[ [<uri> [<x> <y>]?,]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out ] ] | inherit | This property specifies the type of cursor to be displayed for the pointing device. | Yes | |
font |
<appearance> | status-bar | message-box | caption | small-caption | inherit | The shorthand "font" property has the effect of setting all of the elemental "font-*" properties. | Yes | |
icon |
auto | <uri> [, <uri>]* | inherit | The "icon" property give the author the ability to style any arbitrary element with an iconic equivalent. | No | Feature at risk in [[!HTML5-20130806]] |
nav-index |
auto | <number> | inherit | This property is an input-method-neutral way of specifying the sequential navigation order, also known as "tabbing order". | Yes | |
nav-up |
auto | <id> [ current | root | <target-name> ]? | inherit | This property allows User agents for devices with directional navigation keys to respond by navigating the nav-up focus. | Yes | |
nav-right |
auto | <id> [ current | root | <target-name> ]? | inherit | This property allows User agents for devices with directional navigation keys to respond by navigating the nav-right focus. | yes | |
nav-down |
auto | <id> [ current | root | <target-name> ]? | inherit | This property allows User agents for devices with directional navigation keys to respond by navigating the nav-down focus. | Yes | |
nav-left |
auto | <id> [ current | root | <target-name> ]? | inherit | This property allows User agents for devices with directional navigation keys to respond by navigating the nav-left focus. | Yes | |
outline |
[ <"outline-color"> || <"outline-style"> || <"outline-width"> ] | inherit | This property allows authors who want to create outlines around visual objects such as buttons, active form fields, image maps, etc., to make them stand out. | Yes | |
outline-color |
<color> | invert | inherit | This property controls the border color of a dynamic outline. | Yes | |
outline-offset |
<length> | inherit | This property controls the border offset of a v | Yes | |
outline-style |
auto | <border-style> | inherit | This property controls the border style of a dynamic outline. | Partial | At this time outline-style SHALL be supported as defined by CSS2.1 specification, so support for value auto is not required. |
outline-width |
<border-width> | inherit | This property controls the border width of a dynamic outline. | Yes | |
resize |
none | both | horizontal | vertical | inherit | This property allows an author to specify whether or not an element is resizable by the user, and if so, along which axis/axes. | No | |
ime-mode |
auto | normal | active | inactive | disabled | inherit | The 'ime-mode' CSS property controls the state of the input method editor for text fields. | No | Feature at risk in [[!HTML5-20130806]] |
text-overflow |
( clip | ellipsis | ){1,2} | inherit | This property specifies rendering when inline content overflows its block container element ("the block") in its inline progression direction that has 'overflow' other than 'visible' | Partial | Support for the text-overflow property value <string> and the text-overflow property 2-value syntax and definition is OPTIONAL (marked as feature at risk in [[!CSS3UI-20120117]]). |
Pseuso class | Mandatory | Comment |
---|---|---|
:active | Yes | |
:checked | Yes | |
:default | Yes | |
:disabled | Yes | |
:endabled | Yes | |
:focus | Yes | |
:hover | Yes | |
:in-range | Yes | |
:indeterminate | Yes | |
:invalid | Yes | |
:optional | Yes | |
:out-of-range | Yes | |
:read-only | Yes | |
:read-write | Yes | |
:required | Yes | |
:valid | Yes | |
:visited | Yes |
Terminals SHALL support Gradients as defined in CSS Image Values and Replaced Content [[!CSS3-IMAGES-20120417]]. Support for other features is OPTIONAL.
Terminals SHALL support all features in CSS Backgrounds and Borders [[!CSS3-BG-20120724]] with the exception of the border-image
set of properties.
font-family
, font-weight
, font-style
, font-size
and font
properties SHALL be supported. Support for other properties is OPTIONAL.
font
property is OPTIONAL.
@font-face
rule SHALL be supported. Support for other rules is OPTIONAL.
@font-face
rule SHALL be supported. Support for other descriptors is OPTIONAL.
text-shadow
.
transform
and transform-origin
properties is required
matrix()
, translate()
, translateX()
, translateY()
, scale()
, scaleX()
, scaleY()
, rotate()
, skewX()
, skewY()
transform functions is required.
Support for the pseudoElement
field on the TransitionEvent
interface is OPTIONAL.
Support for the pseudoElementArg
argument for the initTransitionEvent
method is OPTIONAL
The list of “animatable” properties in [[!CSS3-TRANSITIONS-20130212]] SHALL be profiled as indicated in the table below. For any other property not listed below, the following holds: if a property is supported by this profile and is defined to be "animatable" by the related CSS spec, than it SHALL be animatable, unless explicitly excluded by this specification.
Property Name | Type | Mandatory |
---|---|---|
background-color |
color | Yes |
background-image |
only gradients | No |
background-position |
percentage, length | No |
border-bottom-color |
color | No |
border-bottom-width |
length | Yes |
border-color |
color | No |
border-left-color |
color | No |
border-left-width |
length | Yes |
border-right-color |
color | No |
border-right-width |
length | Yes |
border-spacing |
length | Yes |
border-top-color |
color | No |
border-top-width |
length | Yes |
border-width |
length | Yes |
bottom |
length, percentage | Yes |
color |
color | Yes |
crop |
rectangle | No |
font-size |
length, percentage | Yes |
font-weight |
number | Yes |
grid-* |
various | No |
height |
length, percentage | Yes |
left |
length, percentage | Yes |
letter-spacing |
length | Yes |
line-height |
number, length, percentage | Yes |
margin-bottom |
length | Yes |
margin-left |
length | Yes |
margin-right |
length | Yes |
margin-top |
length | Yes |
max-height |
length, percentage | Yes |
nax-width |
length, percentage | Yes |
min-height |
length, percentage | Yes |
min-width |
length, percentage | Yes |
opacity |
number | Yes |
outline-color |
color | Yes |
outline-offset |
integer | Yes |
outline-width |
length | Yes |
padding-bottom |
length | Yes |
padding-left |
length | Yes |
padding-right |
length | Yes |
padding-top |
length | Yes |
right |
length, percentage | Yes |
text-indent |
length, percentage | Yes |
text-shadow |
shadow | No |
top |
length, percentage | Yes |
vertical-align |
keywords, length, percentage | Yes |
visibility |
visibility | Yes |
width |
length, percentage | Yes |
word-spacing |
length, percentage | Yes |
z-index |
integer | Yes |
zoom |
number | No |
Support for Document
response type is OPTIONAL. All other features SHALL be supported.
Support for Shared Workers is OPTIONAL.
Path
DrawingStyle
HitRegionOptions
All the others SHALL be supported as profiled below
Member | Mandatory | Comment |
---|---|---|
width | Yes | |
height | Yes | |
toDataURL() | Yes | |
getContext(context) | Yes |
Member | Mandatory | Comment |
---|---|---|
width | Yes | |
actualBoundingBoxLeft | No | |
actualBoundingBoxRight | No | |
fontBoundingBoxAscent | No | |
fontBoundingBoxDescent | No | |
actualBoundingBoxAscent | No | |
actualBoundingBoxDescent | No | |
emHeightAscent | No | |
emHeightDescent | No | |
hangingBaseline | No | |
alphabeticBaseline | No | |
ideographicBaseline | No |
Member | Mandatory | Comment |
---|---|---|
addColorStop(offset, color) | Yes |
Member | Mandatory | Comment |
---|---|---|
canvas | Yes | |
save() | Yes | |
restore() | Yes | |
scale(x, y) | Yes | |
rotate(angle) | Yes | |
translate(x, y) | Yes | |
transform(m11, m12, m21, m22, dx, dy) | No | |
setTransform(m11, m12, m21, m22, dx, dy) | No | |
globalAlpha | Yes | |
globalCompositeOperation | Yes | The value source-over for this property SHALL be supported. Support for other values is OPTIONAL. |
strokeStyle | Yes | |
fillStyle | Yes | |
createImageData(sw, sh) | Yes | |
createImageData(imagedata) | Yes | |
createLinearGradient(x0, y0, x1, y1) | Yes | If this feature is not hardware accelerated, performance will be limited |
createRadialGradient(x0, y0, r0, x1, y1, r1) | Yes | If this feature is not hardware accelerated, performance will be limited |
createPattern(image, repetition) | Yes | |
lineWidth | Yes | |
lineCap | Yes | If this feature is not hardware accelerated, performance will be limited |
lineJoin | Yes | |
miterLimit | Yes | |
shadowOffsetX | Yes | |
shadowOffsetY | Yes | |
shadowBlur | Yes | If this feature is not hardware accelerated, performance will be limited |
shadowColor | Yes | |
clearRect(x, y, w, h) | Yes | |
fillRect(x, y, w, h) | Yes | |
strokeRect(x, y, w, h) | Yes | If this feature is not hardware accelerated, performance will be limited |
beginPath() | Yes | |
closePath() | Yes | |
moveTo(x, y) | Yes | |
lineTo(x, y) | Yes | |
quadraticCurveTo(cpx, cpy, x, y) | No | |
bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) | No | |
arcTo(x1, y1, x2, y2, radius) | No | |
rect(x, y, w, h) | Yes | |
arc(x, y, radius, startAngle, endAngle, anticlockwise) | No | |
ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) | No | |
fill() | Yes | |
fill(path) | No | |
stroke() | Yes | |
stroke(path) | No | |
clip() | No | |
clip(path) | No | |
isPointInPath(x, y) | Yes | |
isPointInPath(path, x, y) | No | |
drawImage(image, dx, dy) | Yes | |
drawImage(image, dx, dy, dw, dh) | Yes | |
drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) | Yes | |
getImageData(sx, sy, sw, sh) | Yes | |
putImageData(image, dx, dy) | Yes | |
putImageData(image, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) | No | |
font | Yes | |
textAlign | Yes | |
textBaseline | Yes | |
fillText | Yes | |
strokeText | Yes | |
measureText | Yes | |
setLineDash(segments) | No | |
getLineDash() | No | |
lineDashOffset | No | |
drawSystemFocusRing(element) | No | |
drawSystemFocusRing(path, element) | No | |
drawCustomFocusRing(element) | No | |
drawCustomFocusRing(path, element) | No | |
scrollPathIntoView | No | |
scrollPathIntoView(path) | No | |
addHitRegion(options) | No | |
removeHitRegion(options) | No |