Ich versuche zu vermeiden, ein Hintergrundbild (oder eine bildbasierte Lösung) zu verwenden, um dies effektiv zu erstellen:
Hinweis: Der rote Pfeil zeigt nur auf die betreffende Grenze. Der Pfeil sollte in Ihrer Antwort nicht enthalten sein.
Wie kann ich diesen unregelmäßig geformten Rand mit reinem CSS erstellen (keine Bilder)? Wenn Bilder unvermeidlich sind, wird die prägnanteste und lesbarste Antwort bewertet und akzeptiert.
:before
und:after
Ihrehtml
"sauber" halten. Das:before
wäre das linke Dreieck,:after
das rechte.Yiselas Antwort ist eindeutig, aber ich dachte, ich würde diese Alternative anbieten: Polygon oder eine Bild-URI mit CSS-Formen und Clip-Pfad. Hier ist ein kurzes Tutorial .
Beachten Sie, dass diese Methode derzeit mit noch weniger Browsern als dem Trick mit dem Dreiecksrahmen funktioniert. Wenn Sie jedoch eine komplexere Form verwenden oder Ihren Text in die Form einbetten möchten, ist dies der richtige Weg.
quelle
vw
Einheit. Klingt das möglichEine andere Methode, die möglicherweise auch nur eingeschränkte Unterstützung bietet, ist "eingebettetes SVG in CSS". Ich habe dies selbst nicht ausprobiert, aber die Idee ist, dass Sie eine Bildressource als URL in der CSS-Deklaration für das Objekt bereitstellen und eine ordnungsgemäß ausgeblendete URL übergeben, die die Daten enthält.
SVG ist ein Nur-Text / XML-Format. Ein Beispielpolygon (von w3schools ):
Ein Beispiel für Inline (eingebettet) SVG (vereinfacht) (von Stackoverflow ):
Beachten Sie, dass die SVG-Daten für die Inline-Verwendung ordnungsgemäß "maskiert" werden müssen, was sie etwas weniger attraktiv macht als das bloße Verknüpfen einer SVG-Datei.
Es gibt einige Diskussionen bezüglich der Durchführbarkeit der Methode in dem oben verlinkten Thread. Ich denke, dass es eine einfache Entscheidung ist, etwas so Einfaches wie ein weißes Dreieck einzubetten, vorausgesetzt, es gibt Unterstützung. Komplexe Daten im SVG-Format sollten nicht inline, sondern als SVG-Datei gespeichert werden.
SVG-Dateien sind Vektoren und können im Gegensatz zur "Rahmen" -Methode prozentual skaliert werden. Sie haben (derzeit) auch eine bessere (zumindest nicht inline) Unterstützung als die aufgeführte Beschneidungspfadmethode. SVG kann als reiner Text sogar direkt mit PHP oder anderen serverseitigen Skripten ausgegeben werden.
quelle
Wenn Ihr blauer Bereich im Bild ein transparenter PNG-Bereich ist und der weiße Bereich transparent, müssen Sie diesen HTML-Code einfügen, damit er Schatten wirft:
Und benutze diese CSS für das Bild:
Dies ist eine vollkommen browserübergreifende Lösung.
quelle