Des de fa uns anys vaig implementar, a poc a poc, diferents funcions d'accessibilitat a la meua web per a intentar aconseguir una navegació accessible volent adaptar-me i actualitzar-me al Reial decret 1112/2018, de 7 de setembre, sobre accessibilitat dels llocs web i aplicacions per a dispositius mòbils del sector públic. i la veritat és que aquest és un camí sense retorn, perquè una volta eleves la consciència i acceptes que hi ha diversitat funcional al món i, per tant, també a internet, comprens que els desenvolupadors d'Apps i de webs hem de conèixer i apostar per l'Accessibilitat, sí o sí. Ací tens algunes dades sobre l'Accessibilitat en el món.
Des de fa un temps vaig implementar distintes grandàries de fonts, també diferents contrastos de colors per a facilitar bé la lectura, també vaig implementar una navegació amb teclat sense necessitar el ratolí, cosa que, no nomès amb un navegador visual, sinó també amb lynx o elinks pots comprovar fàcilment des de la terminal.
També vaig afegir tres distintes portades (a les que podem accedir des de la combinació de tecles Alt+1, Alt+2 i Alt+3 les quals mostren els continguts de tres maneres distintes. Açò és molt fàcil de fer a Drupal amb el mòdul Views.
I per últim, cal saber que des dels RSS podem llegir la web sense necessitat d'un monitor, simplement amb lectors de pantalla els quals llegeixen el text i "parlen" el que escrius a la web.
Aleshores com podem comprovar, l'Accessibilitat no nomès beneficia a persones amb diversitat funcional, sinó que en realitat és una ventaja global per a totes les persones, ja que encara que no tingues necessitat de navegar amb distints contrastos de colors o sense un ratolí, a tu no et molestarà res perquè la informació estarà molt ben estructurada, amb bon codi HTML i elements clars en la navegació.
I la meua última utilitat ha segut també codi javascript que converteix el cursor en un punt de mira, que es pot activar en color negre o en color roig. Aquest cursor en format línea vertical/horitzontal qual facilita la localització del ratolí en la meua web.
Cursor color negre:
Cursor color roig:
Hackers del món, programeu per l'accessibilitat i per a una WWW universal :-) Ací compartisc el codi que crea este punt de mira que es creua on està el cursor:
// PROVA 1 CURSOR A L'ARRANCAR LA PAGINA I DESPRES MODIFICANT CSS AL VOL AMB LOCALSTORAGE
function arrancaCursorCreu() {
//
const cursorVT1 = document.querySelector('.vt1');
const cursorHL1 = document.querySelector('.hl1');
const cursorVT2 = document.querySelector('.vt2');
const cursorHL2 = document.querySelector('.hl2');
const cursorVT0 = document.querySelector('.vt0');
const cursorHL0 = document.querySelector('.hl0');
//
document.addEventListener('mousemove', e => {
cursorVT1.setAttribute('style', `left: ${e.clientX}px;`)
cursorHL1.setAttribute('style', `top: ${e.clientY}px;`)
cursorVT2.setAttribute('style', `left: ${e.clientX}px;`)
cursorHL2.setAttribute('style', `top: ${e.clientY}px;`)
cursorVT0.setAttribute('style', `left: ${e.clientX}px;`)
cursorHL0.setAttribute('style', `top: ${e.clientY}px;`)
})
}
//
if (localStorage.getItem("vt0") === null) {
window.onload = fons_Resetejat;
localStorage.setItem('vt0', '.vt0 {background: transparent !important;}');
} else {
window.onload = arrancaCursorCreu;
}
//
<..div class="cursor">
<..div class="vt1"><../div>
<..div class="hl1"><../div>
<..div class="vt2"><../div>
<..div class="hl2"><../div>
<..div class="vt0"><../div>
<..div class="hl0"><../div>
<../div>
Els 3 tipus de cursors (color negre, color roig i transparent) ho faig amb:
// CURSOR NEGRE
function CursorCreu1() {
const cursorVT1 = document.querySelector('.vt1');
const cursorHL1 = document.querySelector('.hl1');
const cursorVT2 = document.querySelector('.vt2');
const cursorHL2 = document.querySelector('.hl2');
const cursorVT0 = document.querySelector('.vt0');
const cursorHL0 = document.querySelector('.hl0');
//
document.addEventListener('mousemove', e => {
cursorVT1.setAttribute('style', `left: ${e.clientX}px;`)
cursorHL1.setAttribute('style', `top: ${e.clientY}px;`)
cursorVT0.setAttribute('style', `left: 0px;`)
cursorHL0.setAttribute('style', `top: 0px;`)
cursorVT2.setAttribute('style', `left: 0px;`)
cursorHL2.setAttribute('style', `top: 0px;`)
});
//
localStorage.setItem('vt2', '.vt2 {background: #000 !important;}');
localStorage.setItem('hl2', '.hl2 {background: #000 !important;}');
localStorage.setItem('vt1', '.vt1 {background: #000 !important;}');
localStorage.setItem('hl1', '.hl1 {background: #000 !important;}');
localStorage.setItem('vt0', '.vt0 {background: #000 !important;}');
localStorage.setItem('hl0', '.hl0 {background: #000 !important;}');
location.href = "{{ url('') }}";
}
//
// CURSOR ROIG
function CursorCreu2() {
const cursorVT1 = document.querySelector('.vt1');
const cursorHL1 = document.querySelector('.hl1');
const cursorVT2 = document.querySelector('.vt2');
const cursorHL2 = document.querySelector('.hl2');
const cursorVT0 = document.querySelector('.vt0');
const cursorHL0 = document.querySelector('.hl0');
//
document.addEventListener('mousemove', e => {
cursorVT2.setAttribute('style', `left: ${e.clientX}px;`)
cursorHL2.setAttribute('style', `top: ${e.clientY}px;`)
cursorVT0.setAttribute('style', `left: 0px;`)
cursorHL0.setAttribute('style', `top: 0px;`)
cursorVT1.setAttribute('style', `left: 0px;`)
cursorHL1.setAttribute('style', `top: 0px;`)
})
//
localStorage.setItem('vt2', '.vt2 {background: #ff0000 !important;}');
localStorage.setItem('hl2', '.hl2 {background: #ff0000 !important;}');
localStorage.setItem('vt1', '.vt1 {background: transparent !important;}');
localStorage.setItem('hl1', '.hl1 {background: transparent !important;}');
localStorage.setItem('vt0', '.vt0 {background: transparent !important;}');
localStorage.setItem('hl0', '.hl0 {background: transparent !important;}');
location.href = "{{ url('') }}";
}
//
// CURSOR TRANSPARENT
function CursorCreuNeta() {
const cursorVT1 = document.querySelector('.vt1');
const cursorHL1 = document.querySelector('.hl1');
const cursorVT2 = document.querySelector('.vt2');
const cursorHL2 = document.querySelector('.hl2');
const cursorVT0 = document.querySelector('.vt0');
const cursorHL0 = document.querySelector('.hl0');
//
document.addEventListener('mousemove', e => {
cursorVT0.setAttribute('style', `left: ${e.clientX}px;`)
cursorHL0.setAttribute('style', `top: ${e.clientY}px;`)
cursorVT1.setAttribute('style', `left: 0px;`)
cursorHL1.setAttribute('style', `top: 0px;`)
cursorVT2.setAttribute('style', `left: 0px;`)
cursorHL2.setAttribute('style', `top: 0px;`)
})
//
localStorage.setItem('vt0', '.vt0 {background: transparent !important;}');
localStorage.setItem('hl0', '.hl0 {background: transparent !important;}');
localStorage.setItem('vt2', '.vt2 {background: transparent !important;}');
localStorage.setItem('hl2', '.hl2 {background: transparent !important;}');
localStorage.setItem('vt1', '.vt1 {background: transparent !important;}');
localStorage.setItem('hl1', '.hl1 {background: transparent !important;}');
location.href = "{{ url('') }}";
}
I finalment el CSS és el següent:
.cursor {
position: relative;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
pointer-events: none;
height: 100%;
width: 100%;
z-index:30;
background: #cccccc;
}
//
.vt0 {
position: fixed;
top: 0;
bottom: 0;
width: 4px;
z-index:0;
}
//
.hl0 {
position: fixed;
height: 4px;
left: 0;
right: 0;
z-index:0;
}
//
.vt1 {
position: fixed;
top: 0;
bottom: 0;
width: 4px;
z-index:0;
}
//
.hl1 {
position: fixed;
height: 4px;
left: 0;
right: 0;
z-index:0;
}
//
.vt2 {
position: fixed;
top: 0;
bottom: 0;
width: 4px;
z-index:0;
}
//
.hl2{
position: fixed;
height: 4px;
left: 0;
right: 0;
z-index:0;
}





