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.
... aber natürlich gibt es ein paar Nachteile:
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: Ссылка
Schauen Sie sich Ссылка
anDamit 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.
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.
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.