Benutzerdefinierter grafischer Rahmen für DIV mit CSS

9

Ok, das ist ein Problem, das mich schon seit einiger Zeit quält und ich habe ein paar gute und schlechte Lösungen gesehen. Aber was ist die beste Lösung, und was sind die Fallstricke, Nachteile und großen "Nein, nein" .

Ich möchte dynamische, flexible DIV-Blöcke mit einem benutzerdefinierten grafischen Rahmen erstellen. Für Beispiel eine DIV-Box mit Schatten, aber nicht unbedingt Schatten .

AKTUALISIERT: Wie @ Jeroen in einem Kommentar sagte, ich frage nicht nur nach "der beste Weg, um Schatten zu machen". Jeder verrückte benutzerdefinierte grafische Rahmen .

Ich weiß, dass es einige Lösungen mit CSS3 gibt ( box-shadow , border-image und border-radius ), aber es ist nicht 100% browserübergreifend , besonders nicht, wenn Sie arbeiten müssen ein oder zwei Versionen alter Browser.

Beispielbild von dem, was ich erreichen möchte:

oder

Das obige Beispiel ist tatsächlich mit einer Methode gemacht, die ich häufig benutze. Es erfüllt seine Aufgabe und erfüllt alle Anforderungen.

  • Es passt sich an unterschiedlich große DIV-Blöcke an.
  • Es verwendet benutzerdefinierte Grafiken.
  • Es funktioniert browserübergreifend und Versionen.
  • Es ist ziemlich einfach und schnell anzuwenden.
  • Es ist JavaScript kostenlos, 100% CSS / HTML.

... aber natürlich gibt es ein paar Nachteile:

  • Es erfordert 8 Bilder.
  • Es benötigt 8 zusätzliche DIV-Blöcke ohne echten Inhalt .
  • Nicht sehr hübsch in der Quelle.

HTML-DIV-Block Beispiel:

%Vor%

CSS-Beispiel:

%Vor%

Wie Sie sehen können, ist es vielleicht keine optimale Lösung. Aber gibt es einen besseren Weg?

AKTUALISIERT: In den meisten Browsern und Versionen wird Schatten unterstützt, auch wenn es sich nicht um einen Standard handelt. Quelle mit CSS-Schatten: Ссылка Aber meine Frage bezieht sich nicht nur auf Schatten.

Vollständiger Quellcode: Ссылка

    
jamietelin 08.05.2012, 13:39
quelle

3 Antworten

3

Schauen Sie sich Ссылка

an

Damit können Sie CSS 3-Elemente in älteren Browsern verwenden und sollten hoffentlich dazu beitragen, dass Ihr Markup sauberer bleibt.

Sie könnten auch eine zusätzliche Logik einfügen, die CSS 3 für Browser, die es unterstützen, verwendet und für andere Browser auf die CSS-Kreis-Funktionalität zurückgreift.

    
Stef Robinson 08.05.2012 13:58
quelle
2

Sie könnten so etwas ausprobieren: Ссылка

Ich denke, es gibt viel mehr Bibliotheken - JavaScript, .htc Dinge, was auch immer ... - um dasselbe zu erreichen.

Bearbeiten: Ich denke, du wirst nicht mit acht verschiedenen Bildern umgehen. Aber Sie könnten ein Javascript schreiben, das die erforderlichen DIVs spontan hinzufügt, z. für jedes DIV mit Klassenrahmen.

Das würde Ihr HTML-Markup bereinigen - aber das DOM bleibt komplex.

    
flooooo 08.05.2012 13:44
quelle
0

Vielleicht ist dieser Artikel auf css-tricks mit border-image genau das Richtige für Sie? Die interaktive Demo , auf die sie verweist, scheint zu tun, wonach Sie fragen.

Natürlich ist diese Lösung nur in Browsern verfügbar, die css3 border-image unterstützen. Die obige Demo funktionierte für mich in FF und Chrome, aber nicht in IE9. Laut der Modernizr-Dokumentation kann es verwendet werden, um Unterstützung für border-image hinzuzufügen, aber ich habe das nicht versucht mich selber. Sollte das funktionieren, dann wäre das eine relativ saubere Lösung.

    
Jeroen 08.05.2012 18:29
quelle

Tags und Links