Please note, this is a STATIC archive of website www.graccem.com from 20 Jul 2022, cach3.com does not collect or store any user information, there is no "phishing" involved.

Schatten mit CSS und PNGs

Bei einem Entwurf einer Webseite wird sehr häufig mit Schatten gearbeitet. Das Problem besteht jetzt darin, dass man die Schatten mit ins HTML-Dokument nimmt. Hierfür gibt es viele verschiedene Möglichkeiten, dieses zu realisieren.

Im Zeitalter des Tabellendesigns hat man sich einfach ein paar Schattenbilder erzeugt und diese dann mittels einer Tabelle um das gewünschte Objekt gelegt. Dadurch hatte man dann einen Schatten, den man vom Grafikprogramm kannte. Da aber Tabellen nicht für das Layouten verwendet werden sollen, fällt diese Lösung flach.

Es muss also eine Lösung für ein „CSS-Design” her. Hierfür gibt es verschiedene Wege, dieses zu realisieren. Zum einen hat man die Möglichkeit, den Schatten mit einigen Divs zu realisieren. Diese Lösung finde ich persönlich nicht so toll. Ich habe mich lieber für die einfach Variante des Schatten entschieden.

Für diese einfache Variante benötige ich nur 2 verschachtelte Divs und ein PNG, welches die Transparenz enthält.

Dies ist eine Box mit einem Schatten, welcher mittels CSS und einem PNG erzeugt wird.

Durch die Verwendung des PNGs mit der Alpha-Transparenz hat man den Vorteil, dass der Schatten auf jeglichem Hintergrund funktioniert und man dafür nicht immer wieder neue Bilder und Klassen benötigt. Bei dem PNG muss man allerdings folgende Einschränkung beachten: Ältere Browser können die Tranparenz nicht darstellen.

  1. .schattenbox {
  2.    width: 15em;
  3.    background-image: url(images/schatten.png);
  4. }
  5. * html .schattenbox {
  6.    bac\kground-image: none;
  7.    filter: progid: DXImageTransform.Microsoft.
  8.    AlphaImageLoader(src = 'layout/images/schatten.png',
  9.    sizingMethod='scale');
  10. }
  11. .schattenbox div {
  12.    padding: 0.2em;
  13.    background-color: #f00;
  14.    position: relative;
  15.    top: -5px;
  16.    left: -5px;
  17. }