Die neue CSS3-Eigenschaft border-image ist etwas knifflig, aber sie ermöglicht es Ihnen, flexible Boxen mit benutzerdefinierten Rändern (oder Schatten, falls Ihnen das gefällt) mit einem einzigen Div und einem einzigen Bild zu erstellen. In diesem Artikel erkläre ich, wie dieborder-imageKurzschreibweise in heutigen Browsern funktioniert.
Die Grundidee
Die Kurzschreibweise border-image hat 3 Teile
border-image: url(border-image.png) 25% repeat;

Im Wesentlichen ermöglichen diese Ihnen anzugeben
- Ein Bild, das als Rand verwendet werden soll
- Wo dieses Bild geschnitten werden soll, um das Bild in 9 Abschnitte zu unterteilen
- Wie der Browser diese Abschnitte auf die Kanten Ihres Elements anwenden soll
Die relevanten Details
Betrachten wir jeden Teil des Prozesses etwas detaillierter. Der erste Teil ist einfach und bekannt aus derbackground-imageEigenschaft. Zu Demonstrationszwecken verwende ich dieses Bild, das 100 x 100 Pixel groß ist.

Schneiden Ihres Bildes
Der zweite Teil kann, ähnlich wie bei derborder-widthEigenschaft, ein bis vier Werte haben und diese werden in derselben Reihenfolge angegeben: oben, rechts, unten, links. Sie können Prozente oder Pixel verwenden. Seltsamerweise erfordern die Prozente das "%", während Pixel *ohne "px"* aufgeführt werden sollten.
border-image: url(my-image.gif) 25% 30% 10% 20% repeat;
border-image: url(my-image.gif) 25 30 10 20 repeat;
In diesem Fall, da mein Bild 100 x 100 Pixel groß ist, sind die beiden obigen Regeln gleichwertig – sie schneiden das Bild an denselben Stellen. Ich habe einige Abmessungen auf meinem Bild hinzugefügt, um dies zu demonstrieren.

Wiederholen, Abrunden, Strecken
border-image platziert die Eckabschnitte Ihres Bildes immer in die entsprechenden Ecken Ihrer Elementbox, aber der dritte Teil der Kurzschreibweise sagt dem Browser, wie er die mittleren Abschnitte Ihres Bildes behandeln soll – diejenigen, die entlang der Kanten Ihres Elements verlaufen.
Repeat (das Bild wiederholen oder kacheln) und stretch (das Bild strecken oder skalieren) sind ziemlich selbsterklärend.
Round bedeutet, das Bild zu kacheln, aber nur so, dass eine ganze Anzahl von Kacheln passt, und ansonsten das Bild zu skalieren. Derzeit interpretieren Safari und Chrome round als repeat. Es kann bis zu zwei Werte geben: einen für die oberen und unteren Kanten des Elements und einen für die linken und rechten.
Hier ist ein Beispiel, bei dem der Wert für oben/unten auf repeat und der Wert für links/rechts auf stretch gesetzt ist.
#example-one {
border-width: 25px 30px 10px 20px;
border-image: url("border-image.png") 25 30 10 20 repeat stretch;
}

LIVE-DEMO, RSS-LESER BITTE HIER KLICKEN, UM SIE ANZUSEHEN. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu arcu non dui consequat vestibulum non vitae eros. Donec imperdiet lorem at mi rhoncus lacinia. Phasellus porttitor ligula eu justo condimentum eget placerat arcu pharetra. Proin fringilla vulputate eros in accumsan. Sed mi nibh, pulvinar eu sollicitudin ut, feugiat non ipsum. In ornare, quam sit amet tempor suscipit, erat odio suscipit nisi, eu gravida nisl orci ut arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Randbreite
border-image tut nichts, wenn Sie keine Breite für Ihren Rand angeben. Für Browser, dieborder-imageverstehen, werden Ihre Bildabschnitte auf die angegebene Breite skaliert. Wenn Sie dieborderKurzschreibweise verwenden, bietet dies einen schönen Fallback für Browser, die dies nicht tun
#example-two {
border: 50px double orange;
border-image: url("border-image.png") 25 30 10 20 repeat;
}

Oder Sie können jede Breite individuell angeben (in diesem Beispiel habe ich Breiten angegeben, sodass die Bildabschnitte überhaupt nicht skaliert werden).
#example-three {
border-color: orange;
border-style: double;
border-width: 25px 30px 10px 20px;
border-image: url("border-image.png") 25 30 10 20 repeat;
}

Die Verwendung eines einfachen Rands mit denselben Breiten wie Ihr border-image ist jedoch nicht immer ideal. Daher möchten Sie möglicherweise bedingte Stylesheets verwenden, um IE ganz andere Randstile zu geben.
Browser-Eigenheiten
Vorhersehbar versteht IE nichts vonborder-image. Browser, die border-image unterstützen, unterstützen nur die Kurzschreibweise, nicht alle einzelnen Eigenschaften, die in der Spezifikation beschrieben sind. Einige potenziell nützliche Eigenschaften werden überhaupt nicht unterstützt, insbesondereborder-image-outset, was dieses Problem lösen würde.
Außerdem ist das Standardverhalten, den mittleren Abschnitt des Bildes zu verwerfen und das Schlüsselwort ‘fill’ auf derborder-image-sliceEigenschaft zu verwenden, um ihn zu erhalten.
Das Schlüsselwort
fillbewirkt, wenn es vorhanden ist, dass der mittlere Teil des border-image erhalten bleibt. (Standardmäßig wird er verworfen, d. h. als leer behandelt.) (Spezifikation lesen)
Aber das aktuelle Browserverhalten ist, die Mitte zu erhalten, und es gibt keine Möglichkeit, dies abzuschalten. Wenn Sie also nicht möchten, dass der Inhaltsbereich Ihres Elements einen Hintergrund hat, muss der mittlere Abschnitt Ihres Bildes leer sein. Sie können dieses Füllverhalten jedoch zu Ihrem Vorteil nutzen, um einen Kasten mit einem schicken Rand und Hintergrund mit nur einem Bild zu erstellen.
Interaktive Demo
Ich habe eine border-image Demo-Seite erstellt, um mir zu helfen, diese komplizierten neuen CSS3-Eigenschaften zu verstehen. Sie können ein Bild auswählen, repeat, round oder stretch angeben und die Randbreite und das Slicing anpassen. Viel Spaß!

Beispiele in Aktion
- Chris Spooner nutzt es sehr gut, um seinen Bildern einen benutzerdefinierten Rand zu geben.
- Auf dem Reiseblog Go Pink Boots (Update: jetzt offline), den ich kürzlich erstellt habe, habe ich es verwendet, um Bildern einen zerrissenen Papierhintergrund hinzuzufügen.
- Ich verwende es auf meiner Website The Web Designers’ Review of Books (Update: jetzt offline), um Blockzitate hervorzuheben.
Wenn Sie weitere Beispiele auf Live-Websites haben, würde ich sie gerne sehen. Hinterlassen Sie einen Link in den Kommentaren!
Diese Dinge kannte ich noch nicht. Vielen Dank, dass Sie uns helfen, uns anzubieten.
Sehr nützlicher Artikel
Sehr hilfreich dieser Beitrag
Chris, du fängst an, mir unheimlich zu werden. Und das meine ich im besten Sinne... es ist erstaunlich, wie aktuell deine Artikel sind. Ich habe gestern gerade daran geforscht, aber nicht viel Erfolg gehabt.
Danke!
Danke. Sehr informativ.
Sehr nützlicher Artikel.
macht weiter so
Ich weiß nicht warum, aber das ist für mich viel verwirrender als lineare und radiale Verläufe. Ich muss diesen Artikel noch 4-5 Mal lesen und immer wieder durchgehen, um ihn wirklich zu verstehen. Und natürlich so viel wie möglich damit spielen. Danke für eine weitere großartige Ressource/Referenz.
Vielen Dank für die Klärung einer Eigenschaft, die etwas schwer zu verstehen ist.
O.T.: Beim Durchsuchen von „Go pink boots“ ist mir aufgefallen, dass die Tag-Seiten nicht funktionieren. Da Sie sie erstellt haben, denke ich, dass diese Information Ihnen helfen könnte.
Vielen Dank, Elisa. Diese Seite ist noch etwas in Arbeit. Ich werde mich sofort um den Tag-Fehler kümmern!
Gern geschehen! Jedenfalls gute Arbeit. Mir gefällt, wie Sie die border-image-Eigenschaft verwendet haben, ich werde versuchen, sie in meinen nächsten Projekten zu implementieren, und Ihre Anleitung wird es einfacher machen...
Elisa, bist du Albanerin? :-) Nur so eine Idee...
Übrigens, toller Artikel...
Nein, ich bin Italienerin :-)
Wow, ich bin so daran gewöhnt, Randeffekte mit einem Hintergrundbild zu erstellen, dass das fast unintuitiv erscheint.
Danke für deinen Kommentar, Tom. Wenn IE dies unterstützt und andere Browser ihre Unterstützung erweitern, werden wir alle Arten von Multi-Div-, Multi-Hintergrundbild-Sliding-Doors-ähnlichen Dingen durch ein einzelnes border-image ersetzen können. Ich kann es kaum erwarten!
Wahnsinn. Gut, dass es Leute wie dich gibt, die ehrgeizig genug sind, sich dem zu stellen und es der Community zu erklären.
Guter Artikel. Chris, du solltest vielleicht Nora erwähnen, wo oben „Gastautor“ steht.
Schöner Artikel.
Vielleicht schauen Sie sich : http://css3pie.com/ an, das versucht, CSS3-Unterstützung für IE anzubieten.
Wow, das http://css3pie.com/ sieht erstaunlich aus! Ich werde es ausprobieren :)
Das ist *die* Lösung für IE. Ich bin wirklich so aufgeregt.
Gute Erklärung. Ich denke, das wird mir helfen :-)
Wow, das ging mir viel zu schnell, aber Sie haben hier ein sehr detailliertes Tutorial erstellt, und ich ziehe meinen Hut.
Ich denke, ich werde mir das in kleinen Häppchen ansehen müssen, damit ich es verstehe!
Vielen Dank, silvers. Melden Sie sich, wenn Sie Fragen haben, vielleicht kann ich helfen! (Finden Sie meine E-Mail auf meiner Website: norabrowndesign.com).
Oh wow, toller Artikel.
Es hat mir definitiv geholfen, eine der härtesten, verwirrendsten (meiner Meinung nach) CSS3-Eigenschaften zu verstehen. Mach auf jeden Fall weiter so!
Übrigens, ich wollte Ihnen, Nora, zu einem sehr eleganten Webseitendesign gratulieren.
Danke, Amit – ich schätze das Kompliment sehr. Ich stimme zu, border-image ist einer der verwirrendsten neuen Teile in CSS3, aber auch einer mit viel Potenzial!
Schöner Bericht. Ich habe vor einiger Zeit eine Demo mit einem „abgerundeten“ border-image erstellt, indem ich mit einem abgerundeten Bild für den Rand begonnen und eine border-radius-Deklaration zum Div hinzugefügt habe.
http://blog.darkcrimson.com/samples/css3/
Hey, tolle Demo-Seite. Ich liebe die Option „CSS anzeigen“... perfekt, um die implementierten Funktionen zu erklären. Hast du dazu irgendwo ein Tutorial?
Danke, Nora, mag auch die interaktive Demo.
Ok, outset wäre großartig, aber kannst du nicht einfach die Rand- und border-image-Breiten auf z. B. 80px reduzieren, anstatt auf 213px, um den Weißraum zu reduzieren? Um das erwähnte zu lösen
dieses Problem
Vielen Dank dafür, ich stimme dem Typen zu, der sagte, dass dies schwieriger ist als die Verläufe (und das kommt von einer Person, die auch Probleme mit Verläufen in PS und Illy hat!)
Außerdem ist das ein schicker Reiseblog, wunderbares Design.
Das war sehr interessant für mich zu lesen und heute zu erfahren. Vielen Dank dafür. Ich frage mich nur, wie oft dies verwendet werden kann/wird?
Danke, alpaproductions. Ich würde border-image in die ständig wachsende Kategorie von Dingen einordnen, die als „progressive enhancements“ implementiert werden können – Dinge, die man als nette Extras für Browser hinzufügen kann, die sie verstehen.
Ich schätze, das stimmt. Ich verwende runde Ecken auf die gleiche Weise, wie Sie es gerade erwähnt haben.
Sie können auch einen Trick mit :before und :after verwenden und Hintergrundbilder für diese mit absoluter Positionierung festlegen. Natürlich kenne ich nicht die genaue Kompatibilität dafür, aber ich bin sicher, sie ist besser als border-image.
Nette Erklärung, ich werde darauf zurückkommen, wenn das üblicher wird.
Das ist *das* beste border-image-Tutorial, das ich online gefunden habe! Ich hatte mich gefragt, wie Chris Spooners diesen coolen Effekt auf seinen Bildern erzielt hat. Gut, dass ich das gelernt habe!
Ist CSS nicht cool?
Danke, dass Sie es so klar erklärt haben.
Noch ein toller Beitrag! Viel Spaß... aber eine Anmerkung: (mir scheint, dass) es die Anwendung von Gradientenrändern auf Elemente mit nicht-Gradienten-Hintergrund einschränkt. Was ist, wenn man ein Element mit einem Gradientenhintergrund haben und ihm Ränder mit einem anderen Gradienten hinzufügen möchte...? Dann würde es nicht funktionieren, oder? Oder habe ich das alles falsch verstanden?