Die border-Kurzschreibweise
border zeichnet eine Linie um ein Element, zwischen seinem Padding und seinem Margin. Die Kurzschreibweise nimmt drei Teile in beliebiger Reihenfolge: eine Breite, einen Stil und eine Farbe.
| Teil | Einzeleigenschaft | Werte | Standard |
|---|---|---|---|
| Breite | border-width | 1px, 0.2em, thin, medium, thick | medium |
| Stil | border-style | solid, dashed, dotted, double und weitere | none |
| Farbe | border-color | Jede Farbe | currentColor (die Textfarbe) |
Den Stil darfst du nicht weglassen. Sein Standardwert ist none, also zeichnet border: 2px #2563eb; gar nichts. Lässt du die Farbe weg, übernimmt der Rahmen die Textfarbe des Elements.
Rahmenstile
double braucht mindestens 3px, um zwei Linien zu zeigen. groove, ridge, inset und outset schattieren die Farbe für einen 3D-Look und sehen je nach Browser leicht anders aus. hidden sieht aus wie none; die beiden unterscheiden sich nur in Tabellen mit zusammengefassten Rahmen, die die Seite zu HTML-Tabellenrahmen behandelt.
Eine Seite nach der anderen
Jede Seite hat ihre eigene Kurzschreibweise (border-top, border-right, border-bottom, border-left), und jeder Teil hat Einzeleigenschaften pro Seite wie border-top-color. Die logischen Varianten, border-inline-start und border-block-end, folgen der Textrichtung:
border-color, border-width und border-style nehmen ein bis vier Werte in derselben Reihenfolge im Uhrzeigersinn wie Padding: oben, rechts, unten, links.
Abgerundete Ecken mit border-radius
border-radius rundet die Ecken des Rahmens und des Hintergrunds ab, funktioniert also auch an Elementen ganz ohne Rahmen.
| Wert | Ergebnis |
|---|---|
border-radius: 8px | Alle Ecken um 8px abgerundet |
border-radius: 50% | Ein Kreis an einem quadratischen Element, eine Ellipse an einem Rechteck |
border-radius: 999px | Eine Pille: Die kurzen Seiten werden zu vollen Halbkreisen |
border-radius: 8px 0 | Oben links und unten rechts 8px, die anderen beiden eckig |
border-top-left-radius: 12px | Nur eine Ecke |
border-radius: 50% / 25% | Elliptische Ecken: horizontaler Radius / vertikaler Radius |
Ein Kind mit Hintergrund kann über die abgerundeten Ecken seines Elternelements hinausragen. overflow: hidden am Elternelement schneidet es an der Rundung ab.
Border vs. Outline
Eine Outline sieht aus wie ein Rahmen, wird aber außerhalb davon gezeichnet und nimmt keinen Platz ein, verschiebt also beim Hinzufügen nie etwas. Deshalb verwenden Browser Outlines für Fokusringe.
| Border | Outline | |
|---|---|---|
| Nimmt Platz ein | Ja, Teil der Boxgröße | Nein |
| Pro Seite | Ja (border-top, ...) | Nein, rundherum |
Folgt border-radius | Ja | Ja, in aktuellen Browsern |
| Abstand zur Box | Nein | Ja, outline-offset |
| Typischer Einsatz | Design | Fokusanzeigen, Debugging |
Häufige Fehler
- Kein Rahmenstil.
border: 1px #111827;undborder-color: red;zeichnen nichts. Gibsolid(oder einen anderen Stil) an. - Ein Rahmen, der das Layout beim Hovern springen lässt. Reserviere den Platz mit einem transparenten Rahmen oder nimm eine Outline oder
box-shadow. - Den Rahmen in der Breite vergessen. Ein Element mit
width: 100%und Rahmen läuft untercontent-boxaus seinem Container heraus. Nimmbox-sizing: border-box. border-radiusmit einem Kind, das aus den Ecken ragt. Gib dem abgerundeten Elternelementoverflow: hidden.- Fokus-Outlines mit
outline: noneentfernen. Tastaturnutzer brauchen sie; gestalte die Outline um, statt sie zu löschen.
Häufig gestellte Fragen
Wie füge ich in CSS einen Rahmen hinzu?
Nimm die Kurzschreibweise mit Breite, Stil und Farbe: border: 2px solid #2563eb;. Der Stil ist der wichtigste Teil: Ohne ihn ist der Rahmenstil none, und es wird kein Rahmen gezeichnet.
Warum wird mein CSS-Rahmen nicht angezeigt?
Fast immer, weil kein Rahmenstil gesetzt ist. border: 2px #2563eb; oder border-color: red; allein zeichnen nichts, weil der Standardwert von border-style none ist. Füge solid, dashed oder einen anderen Stil hinzu.
Wie mache ich abgerundete Ecken in CSS?
Mit border-radius: border-radius: 8px; rundet alle vier Ecken ab. border-radius: 50%; an einem Quadrat ergibt einen Kreis, und ein großer Wert wie 999px eine Pillenform. Es rundet auch den Hintergrund ab, sogar ohne Rahmen.
Wie setze ich einen Rahmen nur auf einer Seite?
Mit einer Seiten-Eigenschaft: border-bottom: 2px solid #e5e7eb;, oder border-inline-start für die Seite, an der der Text beginnt. Das funktioniert auch für Sprachen, die von rechts nach links laufen.
Was ist der Unterschied zwischen border und outline?
Ein Rahmen gehört zur Box: Er nimmt Platz ein und ändert die Größe des Elements. Eine Outline wird außerhalb des Rahmens gezeichnet, ohne Platz einzunehmen, lässt sich nicht pro Seite setzen und ist das, was Browser für Fokusringe verwenden. Beide folgen in aktuellen Browsern border-radius.