aboutsummaryrefslogtreecommitdiffstats
path: root/controls.md
diff options
context:
space:
mode:
Diffstat (limited to 'controls.md')
-rw-r--r--controls.md80
1 files changed, 80 insertions, 0 deletions
diff --git a/controls.md b/controls.md
new file mode 100644
index 00000000..fa4c7c35
--- /dev/null
+++ b/controls.md
@@ -0,0 +1,80 @@
+# Controls HTML
+
+This is the markup that is rendered for controls. It is a seperate option to allow full customisation of markup based on your needs. The default Plyr setup uses a Hogan template, this is to allow for localisation at a later date. If you check `controls.html` in `/src/templates` to get an idea of how the default html works.
+
+## Requirements
+
+The classes and data attributes used in your template should match the `selectors` option.
+
+You need to add two placeholders to your html template:
+
+- {id} for the dynamically generated ID for the player (for form controls)
+- {aria-label} for the dynamically generated play button label for screen readers
+- {seek-time} for the seek time specified in options for fast forward and rewind
+
+Currently all buttons and inputs need to be present for Plyr to work but later we'll make it more dynamic so if you omit a button or input, it'll still work.
+
+## Vanilla HTML template
+
+You can of course, just specify vanilla HTML. Here's an example snippet:
+
+```javascript
+var controls = [
+'<div class="player-controls">',
+ '<div class="player-progress">',
+ '<progress class="player-progress-played" max="100" value="0">',
+ '<span>0</span>% played',
+ '</progress>',
+ '<progress class="player-progress-buffer" max="100" value="0">',
+ '<span>0</span>% buffered',
+ '</progress>',
+ '</div>',
+ '<span class="player-controls-playback">',
+ '<button type="button" data-player="restart">',
+ '<span class="icon-restart" aria-hidden="true"></span>',
+ '<span class="sr-only">Restart</span>',
+ '</button>',
+ '<button type="button" data-player="rewind">',
+ '<span class="icon-rewind" aria-hidden="true"></span>',
+ '<span class="sr-only">Rewind <span class="player-seek-time">{seek_time}</span> seconds</span>',
+ '</button>',
+ '<button type="button" aria-label="{aria-label}" data-player="play">',
+ '<span class="icon-play" aria-hidden="true"></span>',
+ '<span class="sr-only">Play</span>',
+ '</button>',
+ '<button type="button" data-player="pause">',
+ '<span class="icon-pause" aria-hidden="true"></span>',
+ '<span class="sr-only">Pause</span>',
+ '</button>',
+ '<button type="button" data-player="fast-forward">',
+ '<span class="icon-forward" aria-hidden="true"></span>',
+ '<span class="sr-only">Fast forward <span class="player-seek-time">{seek_time}</span> seconds</span>',
+ '</button>',
+ '<span class="player-time">',
+ '<span class="sr-only">Time</span>',
+ '<span class="player-duration">00:00</span>',
+ '</span>',
+ '</span>',
+ '<span class="player-controls-sound">',
+ '<input class="inverted sr-only" id="mute{id}" type="checkbox" data-player="mute">',
+ '<label id="mute{id}" for="mute{id}">',
+ '<span class="icon-mute icon-muted" aria-hidden="true"></span>',
+ '<span class="icon-volume-up" aria-hidden="true"></span>',
+ '<span class="sr-only">Mute</span>',
+ '</label>',
+ '<label for="volume{id}" class="sr-only">Volume:</label>',
+ '<input id="volume{id}" class="player-volume" type="range" min="0" max="10" value="5" data-player="volume">',
+ '<input class="sr-only" id="captions{id}" type="checkbox" data-player="captions">',
+ '<label for="captions{id}">',
+ '<span class="icon-subtitles" aria-hidden="true"></span>',
+ '<span class="sr-only">Captions</span>',
+ '</label>',
+ '<button type="button" data-player="fullscreen">',
+ '<span class="icon-resize-small icon-exit-fullscreen" aria-hidden="true"></span>',
+ '<span class="icon-resize-full" aria-hidden="true"></span>',
+ '<span class="sr-only">Toggle fullscreen</span>',
+ '</button>',
+ '</span>',
+'</div>'
+].join("\n");
+``` \ No newline at end of file