... Websites, Apps, Intranets, Extranets und elektronische Verwaltungsabläufe sind von öffentlichen Stellen barrierefrei zu gestalten.
"Google ist der größte blinde und gehörlose User."
"Ich sehe was, was du nicht siehst."
(Was heißt eigentlich "barrierefrei"?)
Web Content Accessibility Guidelines (WCAG) 2.1
Wahrnehmbar
Bedienbar
Verständlich
Robust
Tools:
Wenn man per Tabulator durch die Seite tappt ...
Interaktive Elemente:
Zusätzliche Elemente kann man mit tabindex interaktiv machen. Wichtig werden dann weitere Attribute.
https://www.html5accessibility.com
https://html.spec.whatwg.org/
Tastatureinstellungen:
Zentrale Verwaltung von Alternativ-Text, Bild-Title, Bildunterschrift und Verlinkung.
Mehrere Wege
Unterschiedliche Bedienung
Bei unklarem Hintergrund z.B. auf Sliderbildern outline:inset; outline:outset; outline:invert;
Bedienung Tabulator-Taste
Ziel:
Skiplinks sichtbar machen
Skiplinks sind versteckt.
Skiplinks werden sichtbar,
wenn sie den Focus haben.
class="invisible"
layout.min.css
.invisible {
border:0;
clip:rect(0 0 0 0);
height:1px;
margin:-1px;
overflow:hidden;
padding:0;
position:absolute;
width:1px
}
a[href*="#skip"].invisible:focus,{
display: inline-block;
color: #25baba;
clip: auto;
outline: 2px dotted #25baba;
width:auto;
height:auto;
margin:0;
position:relative;
}
Sinvolle Beschriftung der Skiplinks
Nutzen des Modul-Titels
Template Anpassung mod_navigation.html
<a href="<?= $this->request ?>#<?= $this->skipId ?>" class="invisible">
<?= $this->name ?> - <?= $this->skipNavigation ?></a>
<a href="<?= $this->request ?>#<?= $this->skipId ?>" class="invisible">
<?= $this->skipNavigation ?></a>
Ausgabe: Navigation überspringen
*Ausgabe: Hauptmenü - Navigation überspringen
Zusätzliche Skiplinks
"Direkt zum Inhalt"
<a class="invisible" href="{{env::request}}#main" title="Direkt zum Seitentext springen">
Direkt zum Inhalt</a>
Zusätzliche Skiplinks
*"Direkt zum Submenü"
<?php foreach ($this->items as $item): ?>
<?php if (strpos($item['class'],'submenu')!==false && strpos($item['class'],'trail')!==false):?>
<a href="{{env::request}}#skip2subnav" class="invisible">Direkt zum Submenü</a>
<?php endif; ?>
<?php endforeach; ?>
<ul class="<?= $this->level ?>">
<?php elseif ($item['class']== 'submenu trail'): ?>
<li class="<?= $item['class'] ?>">
<a href="<?= $item['href'] ?: './' ?>" title="<?= $item['pageTitle'] ?: $item['title'] ?>"<?php if ($item['class']) echo ' class="' . $item['class'] . '"'; ?>
<?php if ($item['accesskey'] !== '') echo ' accesskey="' . $item['accesskey'] . '"'; ?>
<?php if ($item['tabindex']) echo ' tabindex="' . $item['tabindex'] . '"'; ?>
<?php if ($item['nofollow']) echo ' rel="nofollow"'; ?>
<?= $item['target'] ?>
<?php if (!empty($item['subitems'])) echo ' aria-haspopup="true"'; ?> itemprop="url">
<span itemprop="name"><?= $item['link'] ?></span></a>
<a id="skip2subnav" class="invisible"></a>
<?= $item['subitems'] ?>
</li>
nav_default.html
z.B. auch Mobiles Menü - Trigger
#mm_toggler {
position:relative;
margin-top:.4em;
padding-left:0;
text-align:center;
border:0;
font-size:.9em;
color:#fff;
text-transform:uppercase;
background:transparent;
z-index:1001;
cursor:pointer;
outline:none;
}
#main .mejs__container :focus {
background-color:#702856;
border:0;
outline-offset:0;
}
#main .mejs__container.mejs__video:focus {
border:4px solid #b01778;
}
longdesc="beschreibung.html"
longdesc="#beschreibung"
Anpassung der Popup-Fehlermeldungen
über die Contraint Validation API (HTML5, Browser)
var firstname = document.getElementById("ctrl_13");
firstname.addEventListener('input', () => {
firstname.setCustomValidity('');
firstname.checkValidity();
});
firstname.addEventListener("invalid", function (event) {
if(firstname.value === ''){
firstname.setCustomValidity('Bitte geben Sie Ihren Vornamen ein!');
} else {
firstname.setCustomValidity("Ihr Vornamen muss aus mindestens 2 Buchstaben bestehen.");
}
});
Anpassung der Popup-Fehlermeldungen
über die Contraint Validation API (HTML5, Browser)
Im Quelltext:
Contao Inhaltslelement Tabelle:
Pi.1415926535 [CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)]
http://wave.webaim.org/
https://addons.mozilla.org/de/firefox/addon/wave-accessibility-tool/
https://addons.mozilla.org/de/firefox/addon/headingsmap/
https://addons.mozilla.org/de/firefox/addon/tota11y-accessibility-toolkit/
Screenreader
https://www.nvaccess.org/download/
Buttons
https://www.w3.org/TR/wai-aria-practices/examples/menu-button/menu-button-links.html
https://www.smashingmagazine.com/2017/11/building-accessible-menu-systems/
Tabellen
https://www.w3.org/WAI/tutorials/tables/
https://www.einfach-fuer-alle.de/artikel/barrierefreie-datentabellen/komplexe-tabellen/
Videos
https://www.digitala11y.com/accessible-jquery-html5-media-players/
https://bik-fuer-alle.de/leitfaden-barrierefreie-online-videos.html
https://www.3playmedia.com/2017/11/29/test-video-players-accessibility/
https://judithsteiner.tv/srt-untertitel-erstellen-8-moeglichkeiten/
http://www.aegisub.org/
https://praxistipps.chip.de/video-untertitel-einfuegen-so-klappts_51510
Constraint Validation API
https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-constraint-validation-api
https://developer.mozilla.org/en-US/docs/Web/API/Constraint_validation
https://www.html5rocks.com/en/tutorials/forms/constraintvalidation/
https://www.sitepoint.com/html5-forms-javascript-constraint-validation-api/
Vielen Dank für das Interesse!
@vienneva