Droped Shadows - Bilder-Schatten mit CSS simuliert

05.10.2005 | CSS | 19 Kommentare | Print

Droped Shadows - Bilder-Schattenwurf mit CSS-Schatten simuliert

Bilder mit einem automatisch generierten Schattenwurf stehen immer noch hoch im Kurs. Bedingt durch eine Safari-Bug fand ich zufällig bei meinem Redesign eine Lösung, die mit purer CSS auskommt und somit zusätzliche Bilder überflüssig macht.

Bilder mit automatischem CSS-Schatten haben in den letzten Jahren zu den unterschiedlichsten Artikeln und Veröffentlichungen inspiriert und Anlass gegeben. So war auch für mich neben anderen die Veröffentlichung von CSS Drop Shadows Inspiration und Anregung für die Bilder-Schatten. Ursprünglich war es nicht meine Absicht, diesen keinen weiteren Artikel hinzuzufügen. Zuschriften von Lesern belegen aber immer wieder, dass das Interesse an solchen Lösungen ungebrochen scheint.

Ausgangspunkt: ein Safari-Bug

Doch nach der Anschaffung meines iMac sah ich in der neuen Safari-Version 2.0 einen Bug, der mir gar nicht gefallen wollte. Auf der rechten Seite des Bildes zeigte sich ein zusätzlicher weißer Streifen. Der eigentlichen Ursache bin ich schlussendlich nicht auf den Grund gegangen. Im Rahmen des Redesigns hatte ich eine Idee, die auf die Grundidee abwandelte und ganz auf CSS setzt.

Feedback verfeinert Lösung

Im Eifer des Gefechtes war mir trotz aller Tests ein Detail aus dem Fokus geraten. Das Feedback von Robert zu diesem Thema machte mich nicht nur auf einen IE-Bug aufmerksam. Dank seinem Hinweis konnte ich die Lösungsmöglichkeit noch weiter verfeinern. Dieser Beitrag soll diesen kleinen Code-Schnipsel nun einfach vorstellen, einem Praxistest unterziehen und zur Diskussion stellen.

Grundidee: einfach vereinfachen

Ausgangspunkt war der Gedanke, den Perfektionsanspruch der Lösung zugunsten einer einfachen ballastfreien schlanken CSS-Lösung zurückzustellen. Statt zusätzliche Grafiken einzusetzen verwende ich einen hellen CSS-Schatten, der bewusst ohne Gradient in der Darstellung auskommen muss.

  1. <p class="ii r">
    <img src="http://domain.de/bild.jpg" alt="" /></p>

Kompatibel sollte die Lösung sein, einfach zu ändern per CSS. In meinem Weblog trägt jeder beliebiger Movable Type Beitrag ggf. auch den Bildcode. So wird er in einen Absatz eingebettet, der mit einer CSS-Anweisung den eigentlichen Bildschatten simuliert.

  1. * {
  2. margin:0;
  3. padding:0;
  4. }
  5. #content .ii{
  6. margin-left:4px;
  7. float:left;
  8. background:#efefef;
  9. }
  10. #content .ii img{
  11. position:relative;
  12. top:-4px;
  13. left:-4px;
  14. background:#fff;
  15. padding:4px;
  16. border:1px solid #ccc;
  17. }
  18. #content .r{
  19. margin:8px 0 10px 10px;
  20. float:right;
  21. }

Wer die Lösungen vergleicht, erkennt schnell das gleiche Grundmuster. Statt der Zusatzgrafik dient einfach ein hellgrauer Hintergrund. So einfach die Lösung zu Beginn war, sie stellte sich als trügerisch heraus.

Robert Hartl machte mich darauf aufmerksam, dass der IE mal wieder aus der Reihe tanzte. Er stellte den Schatten ohne Versatz dar. Die Lösung für den IE lag näher als vermutet.

  1. position:relative;

Die relative Positionierung des Bildes überredet den IE verbunden mit einer Anpassung der damals existenten margin-Anweisung die Bilder wie erwünscht darzustellen.

Fazit

Die beschriebene Variante steht derzeit im praktischen Test hier im Weblog. Aus Zeitgründen habe ich einen kompletten (modernen) Cross-Browser-Vergleich noch nicht abgeschlossen. Bereits gesehen und getestet im:

  • Internet Explorer 6 Win, Firefox 1.03 Win, Opera 8.02 Win, Netscape 7.02, Avant Browser 10 Win, Slimbrowser 4.00 Win
  • Firefox 1.04 Mac, Safari 2.0, Camino 0.9, Opera 8.5 Mac

Robert hat den Internet Explorer 5 getestet.

Alle hilfreichen Tests, Hinweise und Anregungen rund um die Alltagstauglichkeit dieser Detail-Lösung sind herzlich willkommen und ausdrücklich erwünscht. Ob Anregung, Idee zum Weiterdenken oder einfach nur Interesse am Nachnutzen – jeder mag es nehmen wie er es mag.

War der Artikel für Euch wertvoll? Wollt Ihr Euch den Beitrag als Bookmark merken?
Einfach RSS-Feed abonnieren oder das Lesezeichen mit anderen Menschen teilen:

Shiatsu Ausbildung Shiatsu Therapeut

Kommentare und verweisende Trackbacks

zum Beitrag: Droped Shadows - Bilder-Schatten mit CSS simuliert

Kommentare

1 | macx schreibt am 06.10.2005, 08:40:

Deine Lösung ist natürlich nicht die Variante mit der Softrundung, die ich beim Lesen der Überschrift erwartet hatte. Was mich generell an solchen Ansätzen stört, ist das zusätzliches Markup, welches ausschliesslich als Designelement genutzt wird. Ich hatte noch keine Zeit es auszuprobieren, aber sind :before und :after nicht dafür geeignet, Schatten - in welcher Form auch immer - zu werfen. Ich habe lieber ein schlankes Markup, als den Zwang, IE-Kompatibilität bei Gestaltungselementen herzustellen.
Dein Schatten sieht übrigens unter Firefox 1.5 Beta 2 auf dem Mac gut aus!

3 | Manuela schreibt am 06.10.2005, 11:29:

Danke für das kleine Tutorial, Jörg. Der Schattenwurf gefällt mir ehrlich gesagt besser als der des Originals. Noch schöner und schlanker wäre es, wenn die Klassen auf das Bild selbst angewendet werden könnten:

<img src="http://domain.de/bild.jpg" alt="" class="ii r" />

Ich habe nicht probiert, ob das geht, würde aber den Absatz sparen.

4 | macx schreibt am 06.10.2005, 11:34:

Ups, mit dem verhunzten Markup meinte ich natürlich die verschachtelten DIV-Beispiele für weiche Schatten, die du hier nicht ansprichst. Nein, dein Markup ist sehr schmal, ausgezeichnet.
Ich habe dein Beispiel mal aufgegriffen und mit mit :after experimentiert. Da sich :after aber nicht auf das img selbst, sondern nur auf den Paragraphen anwenden lässt, ist dein Vorschlag schon die bessere Lösung.

5 | macx schreibt am 06.10.2005, 11:36:

@Manuela: Den Paragraphen können "wir" uns nicht sparen, da Jörg mit dem weißen Abstand vom Bild zum Rahmen arbeitet.

7 | Manuela schreibt am 06.10.2005, 18:00:

@Jörg: Jetzt hast Du mich neugierig gemacht: Wie stellst Du denn Deine Bilder in MT ein? So wie sich das anhört, speicherst Du sie ja nicht "einfach so" im Beitrag mit, oder? Dank im Voraus!

9 | Manuela schreibt am 06.10.2005, 18:39:

Danke Dir für die Erläuterungen, Jörg. Ich dachte mir schon sowas. Da ich meine Bilder in HTML einbinde, ist das für mich steuerbar, was MT daraus macht. Allerdings hast Du Recht damit, dass HTML sehr unübersichtlich aussschaut im Admin-Interface. Da ich fast nur mittels Mars Edit poste und so eine HTML-Farbkodierung habe, ist das jedoch nicht so ein Problem.

10 | Verena schreibt am 11.01.2006, 00:11:

@Jörg: Ich habe das Ganze auch einmal ausprobiert, jedoch in einem Tabellenlayout. Im Firefox sieht es wunderbar aus. Jedoch fehlt im IE 6.0 der weiße Rahmen. Ich bin nur Laie, vlt hast du ja daher eine Lösung für mich. Bin sehr beeindruckt von dieser Form, da es doch sehr einfach eingebunden wird.

12 | Peter schreibt am 21.05.2006, 15:44:

Hallo,

wollte euer probeweise mal benutzen, jedoch funzt es weder im FF 1.5.0.3 noch mit IE7b2.

komisch

14 | Christian schreibt am 28.06.2006, 17:47:

Hallo,

toll was du da programmiert hast. In Safari unter MacOS X 10.4.6 funktioniert es prächtig.
Nun wollte ich es unter FF 1.5.0.4 probieren, da läuft es leider nicht. Der Rahmen und der Shadow wird zwar angezeigt, aber darin befindet sich kein Bild. Es sieht so aus, als wenn er nicht checkt, dass er das Bild umschliessen soll.

Was kann ich da machen?

Gruß
Christian

16 | Maex schreibt am 30.07.2006, 21:08:

Hoi! Habe unterschiedliche Bilder, also manche portrait und manche landscape. Bei dem Versuch die in eine Tabelle (4×4 Bilder) einzubinden, habe ich das Problem, dass die portrait Bilder links an den Rand klatschen. Ich schaffe es jedoch nicht, die Bilder in die Mitte zu bekommen (wohl wegen dem float:left im DIV, das den drop shadow realisiert).

Hast Du da auch einen Trick fuer mich? Danke!

17 | Susanne schreibt am 21.08.2006, 16:49:

Hallo!
Ein grosses Dankeschön für diesen schönen CSS-Code!

Ich habe das ganze noch mit einem hover-Effekt kombiniert und es funktioniert wunderbar. Getestet mit IE6, Opera9, Firefox 1.5.06, Mozilla 1.7.11. Für den Hover-Effekt benötigt der IE allerdings das wunderbare Script csshover.htc.

Herzliche Grüsse!

Susanne

18 | Alexander schreibt am 26.11.2006, 17:19:

Hallo. Bei meiner google Suche nach meinem kleinen Problemchen bin ich auf die obrige Lösung gestoßen. Mein Problem ist wesentlich simpler - dennoch bisher ungelöst. Ich möchte einfach nur einen 1px rahmen um meine Bilder haben.

Ansatz:
img {

padding: 2px;

border: 1px #999 solid;}

Der FF macht das wunderbar, dem IE6 ist es egal und pappt den Rahmen direkt ans Bild.

Kennt vielleicht hier jemand die Lösung?

Thx,
Alex

19 | Christoph Hautzinger schreibt am 23.12.2007, 13:06:

Also im FF 2 unter Linux sieht es super aus!

Trackback-URL: http://www.einfach-persoenlich.de/m33/etb.cgi/340

Einfach persönlich kommentieren:




Info speichern?


Bei der Formatierung hilft Textile2. - (Du kannst auch HTML verwenden)

(Achtung! Sende-Button im Vorschau-Fenster!)

Kommentare des Beitrages per RSS-Feed verfolgen?

Mit dem RSS-Kommentar-Feed kannst Du die Kommentare dieses Beitrages einfach persönlich verfolgen und im Blick behalten, einfach: