Für eine optimale Darstellung dieser Website benötigen Sie einen modernen Webbrowser wie Mozilla Firefox, Apple Safari, Opera oder den Internet Explorer 8.


Hintergrundbild mit einem Linkbereich versehen

Möchte man auf einem grösseren CSS-Hintergrundbild einen Link anbringen, z.B. um den Bereich des Logos mit der Homepage zu verlinken, so muss man ein bisschen in die Trickkiste greifen, denn Imagemaps oder dergleichen lassen sich nur auf direkt im HTML platzierte Bilder anwenden.

Zudem scheint es sinnvoll, dass Link und Logotext auch im Quelltext sauber und mit semantischer Bedeutung aufgeführt sind, damit auch Suchmaschinen und Screenreader von dieser Information profitieren können.

Folgendes Bild soll im Kopfbereich einer Website als Hintergrundbild eingefügt werden:

Header-Bild

Dazu verwende ich folgenden Code:




und im CSS:


#header {
	background: url(/pictures/css_tut_header.jpg) no-repeat;
	height: 120px;
}

Nun soll der Bereich, wo das Logo im Bild steht verlinkt werden. In den div setzte ich deshalb eine Überschrift, in der ich einen sinnvollen, dem Logo entsprechenden Text verlinke.




Und schon fast geschafft; noch einige Zeilen CSS: Nun wird der div noch relativ positioniert, damit wir den h1 absolut dazu ausrichten können. Im h1 a Selektor nun noch den Link als Block definieren, die genaue Grösse des klickbaren Linksbereichs angeben und die Positionierung vornehmen. Zu guter Letzt bleibt uns nur noch den Text mit einem grossen negativen Wert aus dem Browser-Viewport schieben:


#header {
	background: url(/pictures/css_tut_header.jpg) no-repeat;
	height: 120px;
	position: relative;
}
#header h1 a {
	position: absolute;
	top: 15px;
	left: 14px;
	display: block;
	width: 238px;
	height: 45px;
	text-indent: -9999px;
}

Die fertige Version ist hier zu finden.

6 Reaktionen zu “Hintergrundbild mit einem Linkbereich versehen”

  1. santa

    cool. freue mich richtig, bis ich endlich wieder was mit css ausprobieren kann. momentan beschäftige ich mich mit einer lustigen datei namens „.htaccess“ in bezug zu permalinks. und ich bin am verzweifeln – echt. schreib doch was dazu 😉

  2. Clemens

    Klasse Tip! Danke.

    Allerdings, was mach ich bei einer zentriert (mit fixem Layout) neu angelegten CSS-Site? Da rutscht der klickbare Bereich ja, je nach dem wie groß das Browserfenster ist, unberechenbar herum und steht nicht immer über dem logo. Sicher, ich muss den nur groß anlegen und weit genug nach rechts laufen lassen, aber leider sieht man dann ja nach Browser diesen erweiterten Klickbereich beim Klick als dünnen Rahmen – sieht etwas unhübsch aus. Na, ist aber dennoch ne gute Idee! 🙂

    Übrigens: Was mich gerade noch mit Safari (3/Mac) nervt 😉 ist, das mein Header-Bild gar nicht erst angezeigt wird, heul. Ich hatte da schon mal einen funktionierenden Hack für mein WordPress, aber ich habs völlig vergessen, wie das noch ging. Hat du ne Idee?

    Grüße!

  3. Marion

    Vielen lieben Dank, ich steh zwar noch ziemlich am Anfang mit dem Thema css, aber der Beitrag hat mir unendlich weitergeholfen. Ich bin gerade dabei eine fremde Seite in css umzuarbeiten, ich hoffe, dass ich jetzt bald so weit bin, es fehlen noch 3 Seiten. Anschließend muss ich dann noch meine eigenen Seiten umsetzen. Der Weg sich selbst etwas beizubringen ist ziemlich zeitraubend und beschwerlich, aber dann sitzt es auch. Jedenfalls bin ich für solche Tipps sehr sehr dankbar und finde es toll, wenn Profis Anfängern weiterhelfen.

  4. Mat

    @Clemens: Hmm, ich versteh nicht ganz was du meinst. In meinem Beispiel wäre das Layout mit fixer Breite ja zentriert, oder?
    Wenn ich dem Eltern-Element #header eine relative Position gebe, dann wird das darin liegende Element #header h1 a ja absolut zum Elternelement positioniert. Somit sollte der Link immer an der korrekten Stelle stehen, auch bei einem Vergrössern des Fensters.
    Den dünnen Link-Rahmen aus Firefox bringst du über a:link { outline: none; } zum verschwinden.

  5. tiberius

    Hi,
    eine coole Sache.
    Was ich jedoch nicht schaffe damit ist den Linkbereich
    vertikal mittig, horizontal rechtsbündig zu bekommen.
    Hat jemand eine Idee?

  6. Mat

    @tiberius: Das wäre dann so? Beispiel mit flexibler Höhe

Einen Kommentar schreiben