WMP Webstandards

CSS Imagemap

Nach oben

Imagemap als Seitennavigation - ein Unding

Die Inspiration für diesen Beitrag war für mich der Missbrauch von Imagemaps als Seitennavigation, was man bei graphischen Layouts häufig sieht, die für einige Menschen mit Behinderungen nicht besonders zugänglich sind..

Zur Zugänglichkeit von Imagemaps: Als Testobjekt dient ein Beispiel zu Imagemaps von SELFHTML. Man kann neben der Bedienung durch die Maus auch die Tastatur mit der Tabulatortaste benutzen und von Link zu Link "tabben" (springen). Auch die erlaubten Attribute "tabindex" und "accesskey" ermöglichen die gezielte Ansteuerung einzelner Verweise per Tastatur.

Doch wie sieht eine Imagemap im Textbrowser aus? Ich habe mal zum Test ein die Seite von SELFHTML in Lynx 2.7.1 aufgerufen:

lynx_view.jpg

Ansicht in Lynx 2.7.1

Wie man sehen kann, sind die Informationen, die die Karte bzw. Imagemap transportieren soll, nicht zugänglich. Auch die darin enthaltenen Verweise werden nicht aufgeführt. Somit ist diese Seite für die Benutzer von Textbrowsern nicht zu gebrauchen und daher allgemein nicht als Seitennavigation geeignet.

Nach oben

Listennavigation & CSS: eine Alternative?

In diesem Artikel soll eine Alternative zu Imagemaps aufgezeigt werden, bei der prägnates Markup zum Einsatz kommt und zugleich zugänglich (Textbrowser) ist.

Die Intension dieses Artikels soll jedoch nicht sein, Imagemaps nicht mehr zu verwenden - sie sind zur Illustration immer noch sehr sinnvoll - sondern eine CSS-Variate der Imagemap für Seitennavigationen aufzeigen.

Die einzige Einschränkung im Vergleich zur Imagemap ist, dass man nur rechteckige Verweise definieren kann, was aber in den meisten Fällen ausreicht.

Nach oben

So funktioniert es:

Grundlage für die CSS Imagemap ist eine ungeordnete Liste mit Verweisen, die über ein (Hintergrund-)Bild gelegt werden. Alle Links bekommen eine ID zugewiesen, damit man individuell Breite, Höhe, Hintergrund(-bild), Rahmen, Schriftfarbe, etc. festlegen kann. Mit Hilfe der Eigenschaft position werden die Links beliebig innerhalb eines Bereichs angeordnet.

Bei diesem Beispiel wurde einfach das Bild als Hintergrund für die ungeordnete Liste definiert, möglich wäre aber auch einfach ein Bild innerhalb eines Bereichs (div-Element).

HTML-Grundgerüst

<ul id="navi">
  <li id="button1"><a href="#">Button 1</a></li>
  <li id="button2"><a href="#">Button 2</a></li>
  <li id="button3"><a href="#">Button 3</a></li>
  <li id="button4"><a href="#">Button 4</a></li>
</ul>

Formatierungen

Zunächst wird für das ul-Element die passende Höhe und Breite für das Hintergrundbild festgelegt und relativ positioniert, damit sich die anschließenden absoluten Angaben auf die Liste beziehen und nicht auf den ganzen Bildschirm.

#navi{
  position:relative;
  list-style:none;
  width:400px;
  height:266px;
  border:10px solid white;
  background:url(css_imagemap.jpg);
}

Die Links innerhalb der Listenelemente werden zu Blockelementen gewandelt, damit man wirksam Höhe und Breite festlegen kann. Anschließend werden alle Links der Liste absolut positioniert. Die Textlinks, die für die Zugänglichkeit eine große Rolle spielen, werden hier durch eine große negative Texteinrückung ausgeblendet (text-indent), da sie in einer Imagemap nicht gebraucht werden. Eventuell könnte man Sie zur Information bei Hover einblenden lassen, indem man text-indent wieder auf Null stellt.

#navi li a{
  position:absolute;
  text-indent:-9999px;
  display:block;
  text-decoration:none;
  width:70px;
  height:70px;
  background:none;
}

Nun kann man für die einzelnen Links nach Lust und Laune die Größe und Position festlegen.

#button1 a{
  top:27px;
  left:137px;
  border:4px solid green;
}
#button2 a{
  top:132px;
  left:145px;
  border:4px solid red;
}
#button3 a{
  top:35px;
  left:220px;
  border:4px solid blue;
}
#button4 a{
  top:90px;
  left:250px;
  border:4px solid yellow;
}
Nach oben

Beispiel

Unser Beispiel ist durch einen Textbrowser wesentlich besser zu gebrauchen. So sieht das ganze in Lynx 2.7.1 aus:

lynx_view_2.jpg

Ansicht in Lynx 2.7.1

Im Gegensatz zu einer Imagemap sind jetzt Verweise aufgeführt, also ist die Funktionalität und Zugänglichkeit erhalten geblieben.

Nach oben

Maximale Zugänglichkeit

Wie im ersten Abschnitt schon erläutert, sind die Informationen, die in Imagemaps enthalten sind, für einige Browser nicht zugänglich. Um dies zu beseitigen, könnte man einfach Alternativinhalte in Form einer Liste anbieten, die per CSS ausgeblendet wird. Empfehlenswert sind auch die Attribute tabindex, accesskey und title für das <area>-Element.

Wenn man XHTML 1.0 transitional oder eine Variante darunter verwendet, die das name-Attribute noch zulässt, ist das Markup der Imagemap auch valide.

<div id="navigation">
            <img src="http://www.google.de/intl/de_de/images/logo.gif" usemap="#navigationMap" alt="Navigation" />
            <map name="navigationMap" id="navigationMap">
                <area shape="rect" coords="0,0,100,100" href="#1" alt="Foo" tabindex="1" accesskey="a" title="Foo" />
                <area shape="rect" coords="100,0,200,100" href="#2" alt="Foo" tabindex="2" accesskey="b" title="Foo" />
                <area shape="rect" coords="0,100,100,200" href="#3" alt="Foo" tabindex="3" accesskey="c" title="Foo" />
            </map>
             
            <h2>Navigation</h2>
            <ul>
                <li><a href="#1" title="Foo" tabindex="1" accesskey="a">Bar</a></li>
                <li><a href="#2" title="Foo" tabindex="2" accesskey="b">Baz</a></li>
                <li><a href="#3" title="Foo" tabindex="3" accesskey="c">Qux</a></li>
            </ul>
        </div>

Das CSS zum ausblenden der Alternativinhalte ist simpel.

#navigation h2, #navigation ul{
display:none;
}

Kommentare







09.06.2007 Löschen

Wilfried

Super! Vielen Dank und weiter so!

11.12.2008 Löschen

xxx

nur leider auch mal wieder im IE nicht zu verwenden.

11.12.2008 Löschen

xxx

nur ein schreibfehler gewesen.sry

03.04.2011 Löschen

sven

wer keine lust und zeit hat auf www.image-maps.de gibt es das schon fertig

Von paul. Letzte Änderung am 13.09.2005