4.2 KiB
4.2 KiB
id | title | challengeType | videoUrl |
---|---|---|---|
587d7789367417b2b2512aa4 | Improve Accessibility of Audio Content with the audio Element | 0 | https://scrimba.com/c/cVJVkcZ |
Description
audio
element gives semantic meaning when it wraps sound or audio stream content in your markup. Audio content also needs a text alternative to be accessible to people who are deaf or hard of hearing. This can be done with nearby text on the page or a link to a transcript.
The audio
tag supports the controls
attribute. This shows the browser default play, pause, and other controls, and supports keyboard functionality. This is a boolean attribute, meaning it doesn't need a value, its presence on the tag turns the setting on.
Here's an example:
<audio id="meowClip" controls>Note
<source src="audio/meow.mp3" type="audio/mpeg" />
<source src="audio/meow.ogg" type="audio/ogg" />
</audio>
Multimedia content usually has both visual and auditory components. It needs synchronized captions and a transcript so users with visual and/or auditory impairments can access it. Generally, a web developer is not responsible for creating the captions or transcript, but needs to know to include them.
Instructions
audio
element after the p
. Include the controls
attribute. Then place a source
tag inside the audio
tags with the src
attribute set to "https://s3.amazonaws.com/freecodecamp/screen-reader.mp3" and type
attribute set to "audio/mpeg".
NoteThe audio clip may sound fast and be difficult to understand, but that is a normal speed for screen reader users.
Tests
tests:
- text: Your code should have one <code>audio</code> tag.
testString: 'assert($(''audio'').length === 1, ''Your code should have one <code>audio</code> tag.'');'
- text: Make sure your <code>audio</code> element has a closing tag.
testString: 'assert(code.match(/<\/audio>/g).length === 1 && code.match(/<audio.*>[\s\S]*<\/audio>/g), ''Make sure your <code>audio</code> element has a closing tag.'');'
- text: The <code>audio</code> tag should have the <code>controls</code> attribute.
testString: 'assert($(''audio'').attr(''controls''), ''The <code>audio</code> tag should have the <code>controls</code> attribute.'');'
- text: Your code should have one <code>source</code> tag.
testString: 'assert($(''source'').length === 1, ''Your code should have one <code>source</code> tag.'');'
- text: Your <code>source</code> tag should be inside the <code>audio</code> tags.
testString: 'assert($(''audio'').children(''source'').length === 1, ''Your <code>source</code> tag should be inside the <code>audio</code> tags.'');'
- text: The value for the <code>src</code> attribute on the <code>source</code> tag should match the link in the instructions exactly.
testString: 'assert($(''source'').attr(''src'') === ''https://s3.amazonaws.com/freecodecamp/screen-reader.mp3'', ''The value for the <code>src</code> attribute on the <code>source</code> tag should match the link in the instructions exactly.'');'
- text: Your code should include a <code>type</code> attribute on the <code>source</code> tag with a value of audio/mpeg.
testString: 'assert($(''source'').attr(''type'') === ''audio/mpeg'', ''Your code should include a <code>type</code> attribute on the <code>source</code> tag with a value of audio/mpeg.'');'
Challenge Seed
<body>
<header>
<h1>Real Coding Ninjas</h1>
</header>
<main>
<p>A sound clip of Zersiax's screen reader in action.</p>
</main>
</body>
Solution
// solution required