Accessible Div Button
How to make a div as accessible as a native button
by KeepingUpToDate
HTML
<main class="flex-parent">
<div>
<h1>Accessible Div Button</h1>
<div class="btn" id="divButton" tabindex="0" role="button">Download</div>
</div>
</main>
CSS
body {
font-family: Arial, Helvetica, sans-serif;
}
.flex-parent {
display: flex;
justify-content: center;
flex-wrap: wrap;
}
.btn {
cursor: default;
display: inline-block;
font-size: 1em;
border: none;
border-radius: 0.25em;
padding: 0.5em 1em;
color: white;
background-color: #4050B0;
}
JavaScript
const divButton = document.getElementById('divButton');
divButton.addEventListener('click', downloadStuff);
divButton.addEventListener('keydown', (event) => {
if (event.code === 'Space' || event.code === 'Enter') {
divButton.click();
}
});
function downloadStuff() {
alert('Time to start downloading');
}