Gunnar Bittersmann: Zwei Grafiken klickbar machen

Beitrag lesen

@@Achot

Derzeit habe ich es so

<?php if($object->layout == "raster"): ?>
  
  <a class="aktuell" href="<?php echo $_SERVER['PHP_SELF']; ?>?l=raster">Raster</a> - 
  <a href="<?php echo $_SERVER['PHP_SELF']; ?>?l=liste">Liste</a>

<?php else: ?>

  <a href="<?php echo $_SERVER['PHP_SELF']; ?>?l=raster">Raster</a> - 
  <a class="aktuell" href="<?php echo $_SERVER['PHP_SELF']; ?>?l=liste">Liste</a>

<?php endif; ?>

Die aktuelle Seite solltest du mit dem ARIA-Attribut <a aria-current="page" href=""> kennzeichnen, dann haben auch Screenreader-Nutzer was davon. Die Klasse "aktuell" brauchst du dann nicht mehr. Zum Stylen kannst du statt des Klassenselektors .aktuell den Attributselektor [aria-current="page"] verwenden.

Den Pfad zur aktuellen Seite $_SERVER['PHP_SELF'] musst du auch nicht reinschreiben; die Links kannst du relativ angeben: <a href="?l=liste"> bzw. <a href="?l=raster">.

Es macht auch wenig Sinn, die aktuelle Ansicht zu verlinken. Da einfach das href-Attribut weglassen. Sähe dann so aus:

<?php if($object->layout == "raster"): ?>
  
  <a aria-current="page">Raster</a> - 
  <a href="?l=liste">Liste</a>

<?php else: ?>

  <a href="?l=raster">Raster</a> - 
  <a aria-current="page">Liste</a>

<?php endif; ?>

Eine andere Möglichkeit, dasselbe HTML zu generieren:

  <a
<?php if($object->layout == "raster"): ?>
    aria-current="page"
<?php else: ?>
    href="?l=raster"
<?php endif; ?>
  >Raster</a> - 
  <a
<?php if($object->layout == "liste"): ?>
    aria-current="page"
<?php else: ?>
    href="?l=liste"
<?php endif; ?>
  >Liste</a>

(Kaputte Syntax-Highlighter sind kaputt.)

LLAP 🖖

--
“When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory