Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

corner-shape CSS-Eigenschaft

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die corner-shape CSS Shorthand Eigenschaft legt die Form der Ecken eines Kastens innerhalb des durch den Wert der border-radius definierten Bereichs fest.

Zusammensetzende Eigenschaften

Diese Eigenschaft ist eine Shorthand für die folgenden physikalischen Eigenschaften:

Syntax

css
/* Single value set for all four corners */
corner-shape: bevel;

/* top-left and bottom-right, top-right and bottom-left */
corner-shape: notch superellipse(0.6);

/* top-left, top-right and bottom-left, bottom-right */
corner-shape: superellipse(-1.2) square squircle;

/* top-left, top-right, bottom-right, bottom-left */
corner-shape: scoop superellipse(-1.6) superellipse(-2.2) round;

/* Global values */
corner-shape: inherit;
corner-shape: initial;
corner-shape: revert;
corner-shape: revert-layer;
corner-shape: unset;

Die corner-shape Eigenschaft kann mit einem, zwei, drei oder vier <corner-shape-value> Werten spezifiziert werden:

  • Wenn ein Wert verwendet wird, spezifiziert er die Form aller vier Ecken.
  • Wenn zwei Werte verwendet werden, wird die erste Form auf die oben links und unten rechts Ecken angewandt, und die zweite auf die oben rechts und unten links Ecken.
  • Wenn drei Werte verwendet werden, spezifiziert der erste Wert die Form der oben links Ecke, der zweite die der oben rechts und unten links Ecken, und der dritte die der unten rechts Ecke.
  • Wenn vier Werte verwendet werden, spezifizieren sie die Form der oben links, oben rechts, unten rechts und unten links Ecken in dieser Reihenfolge (im Uhrzeigersinn).

Werte

<corner-shape-value>

Ein superellipse() oder ein Schlüsselwortäquivalent, das die Form der Ecke beschreibt.

Beschreibung

Die corner-shape Eigenschaft wird verwendet, um die Form von abgerundeten Ecken zu ändern, die durch die border-radius Eigenschaft und ihre zugehörigen Longhands erstellt wurden. Bereits abgerundete Ecken können hinsichtlich des angewandten Rundungsgrades weiter angepasst werden, was die Erstellung von z. B. abgeschrägten, gekerbten und "Squircle" Ecken ermöglicht. An den Container angewandte Rahmen, Umrisse, Schatten und Hintergrundeffekte folgen der definierten Eckenform.

Wenn kein border-radius auf einen Container angewendet wird oder wenn der border-radius zu 0 aufgelöst wird, hat corner-shape keine Wirkung.

Die corner-shape Shorthand-Eigenschaft und ihre zugehörigen corner-*-shape Shorthands und Longhands akzeptieren ein bis vier <corner-shape-value> Werte. Jeder wird direkt als eine superellipse() Funktion oder ein Schlüsselwort, das eine häufige Form beschreibt, spezifiziert. Jedes Schlüsselwort ist einem bestimmten superellipse() Wert äquivalent.

Der Standard-(Initial-)Wert von corner-shape ist round, was denselben Effekt hat, als würde man border-radius alleine verwenden, ohne corner-shape. Es gibt auch einen Schlüsselwortwert square, der denselben Effekt wie die standardmäßigen quadratischen Ecken hat und effektiv jeglichen angewandten border-radius entfernt. Der Wert bevel hat den Effekt, eine gerade Linie zwischen den beiden Enden eines border-radius zu zeichnen.

Verschiedene corner-shape Werte können sanft animiert werden, da die superellipse() Äquivalente der Schlüsselwortwerte als Interpolationswerte verwendet werden.

Die corner-shape Shorthand ist besonders nützlich, wenn Sie alle vier Ränder gleich haben möchten oder unterschiedliche Werte mit einer einzigen Deklaration festlegen möchten. Um nur eine oder zwei Eckenformen gleichzeitig festzulegen, verwenden Sie die corner-*-shape Shorthands und Longhands.

corner-*-shape Shorthands und Longhands

Die corner-shape Shorthand definiert die Formen aller vier Ecken in einer Deklaration.

Um nur eine Eckenform gleichzeitig festzulegen, verwenden Sie die langen Eckenform-Eigenschaften:

Um zwei Eckenformen gleichzeitig festzulegen, verwenden Sie die seitlichen Shorthands:

Einschränken von gegenüberliegenden Eckenform-Radien

Wenn gegenüberliegende Ecken border-radius und corner-shape Werte haben, die dazu führen würden, dass sich die Formen überlappen, beschränkt der Browser die Werte, um die Überlappung zu verhindern.

Zum Beispiel würden folgende Werte dazu führen, dass sich die oben links und unten rechts Ecken überlappen, daher passt der Browser die erste border-radius Komponente an einen Wert an, der dies vermeidet.

css
div {
  width: 480px;
  height: 200px;
  background-color: goldenrod;
  border-radius: 80% 20px;
  corner-shape: scoop;
}

Eigenschaften, die der corner-shape folgen

Die folgenden Eigenschaften folgen alle der Form der Ecke, wenn sie auf den Container angewendet werden:

Siehe Demonstration von Eigenschaften, die der corner-shape folgen für einige Beispiele.

Interaktion mit border-shape

Die corner-shape Eigenschaft hat keinen Effekt, wenn die border-shape Eigenschaft auf einem Element gesetzt ist. Dies liegt daran, dass border-shape nicht mit border-radius kompatibel ist: Wenn border-shape gesetzt ist, wird jeder angegebene border-radius ignoriert; corner-shape hängt von border-radius ab und hat daher ebenfalls keine Wirkung.

Wenn Sie geformte Ecken in einem border-shape verwenden möchten, müssen Sie sie direkt als Teil der Form zeichnen.

Formale Definition

Anfangswertwie die jeweiligen Kurzschreibweisen:
Anwendbar aufalle Elemente. Auch anwendbar auf ::first-letter.
VererbtNein
Berechneter Wertwie die jeweiligen Kurzschreibweisen:
Animationstypwie die jeweiligen Kurzschreibweisen:

Formale Syntax

corner-shape = 
<'corner-top-left-shape'>{1,4}

<corner-top-left-shape> =
<corner-shape-value>

<corner-shape-value> =
round |
scoop |
bevel |
notch |
square |
squircle |
<superellipse()>

<superellipse()> =
superellipse( <number> |
infinity |
-infinity )

Beispiele

Grundlegende Verwendung von corner-shape

HTML

Das Markup für dieses Beispiel enthält ein einzelnes <div> Element.

html
<div>Nice scooped corners</div>

CSS

Wir geben der Box eine feste height, einen box-shadow, einen border-radius von 30 Pixeln und eine corner-shape von scoop, zusammen mit einigen zusätzlichen, der Übersichtlichkeit halber ausgeblendeten, Styles.

css
div {
  height: 180px;
  box-shadow: 1px 1px 3px gray;
  border-radius: 30px;
  corner-shape: scoop;
}

Ergebnis

Das gerenderte Ergebnis sieht so aus:

Beachten Sie, wie der corner-shape Wert von scoop dem Container konkave Ecken gibt — die Kurve ist eine Umkehrung der standardmäßigen border-radius Kurve. Beachten Sie auch, wie der Hintergrund, der Rand und der Box-Schatten der Kurvenform folgen.

Demonstration von Eigenschaften, die der corner-shape folgen

HTML

Das Markup für dieses Beispiel enthält ein einzelnes <div> Element mit etwas Textinhalt darin.

html
<div>
  Some styles follow the corner shape, such as border, outline, box-shadow,
  overflow, and backdrop-filter. This is useful for helping various aspects of
  your design to not clash. As shown, it can result in some interesting visual
  effects, so you should test your design carefully.
</div>

CSS

Um zu demonstrieren, wie einige Styles der Form der Ecken eines Containers folgen, wenden wir ein background-image auf den Dokumenten <body> an, dann einen border-radius von 40px und eine corner-shape von scoop notch auf das <div>.

Wir wenden dann das folgende auf das <div> an:

  • Eine halbtransparente background-color.
  • Eine unterschiedliche Farbe und ein Stil des border auf jedem Rand.
  • Einen backdrop-filter, der das auf das <body> gesetzte background-image invertiert.
  • Einen :hover Stil, damit Sie sehen können, dass der klickbare Inhaltsbereich außerhalb der Eckenform fällt.

Zusätzliche Einrichtungsstile sind der Übersichtlichkeit halber ausgeblendet.

css
body {
  background: url("https://mdn.github.io/shared-assets/images/examples/leopard.jpg")
    no-repeat;
  background-size: cover;
}

div {
  border-radius: 40px;
  corner-shape: scoop notch;
  background-color: rgb(255 255 255 / 0.2);
  border-top: 3px solid blue;
  border-left: 6px dashed red;
  border-bottom: 9px solid yellow;
  border-right: 12px double green;
  backdrop-filter: invert(100%);
}

div:hover {
  background-color: white;
}

Ergebnis

Das gerenderte Ergebnis sieht so aus:

Beachten Sie, wie die meisten der gesetzten Styles der Form des <div> folgen, die aus ihren corner-shape Styles resultieren, aber nicht alle. Der Inhalt wird relativ zum ursprünglichen Kasten angezeigt, und der Hover-Effekt wird noch angewandt, wenn Sie über den Text, der aus den oberen und unteren linken Ecken herausragt, schweben.

Vergleich der corner-shape Werte

In dieser Demonstration können Sie verschiedene corner-shape Werte auswählen und unterschiedliche border-radius Werte auf einen Container setzen und die Effekte vergleichen.

HTML

Das Markup für dieses Beispiel enthält einen <select> Picker, aus dem unterschiedliche corner-shape Werte ausgewählt werden können, ein <input type="range"> Schieberegler zur Auswahl verschiedener border-radius Werte, und ein <section> Element, um diese Werte darauf anzuwenden. Die select <option> Elemente bieten mehrere Schlüsselwort- und superellipse() Wertoptionen, unterteilt in zwei Gruppen mittels <optgroup> Elementen. Im Fall der Schlüsselwortwerte haben wir auch den superellipse() Wertäquivalenten für jeden hinzugefügt, getrennt durch ein Pipe-Zeichen.

html
<form>
  <div>
    <label for="corner-shape-choice">Choose a corner-shape value:</label>
    <select id="corner-shape-choice">
      <optgroup label="Keywords">
        <option value="square">square | superellipse(infinity)</option>
        <option selected value="squircle">squircle | superellipse(2)</option>
        <option value="round">round | superellipse(1)</option>
        <option value="bevel">bevel | superellipse(0)</option>
        <option value="scoop">scoop | superellipse(-1)</option>
        <option value="notch">notch | superellipse(-infinity)</option>
      </optgroup>
      <optgroup label="Functions">
        <option>superellipse(3)</option>
        <option>superellipse(1.5)</option>
        <option>superellipse(0.5)</option>
        <option>superellipse(-0.5)</option>
        <option>superellipse(-1.5)</option>
        <option>superellipse(-3)</option>
      </optgroup>
    </select>
  </div>
  <div>
    <label for="radius-slider">Choose a border-radius value:</label>
    <input
      type="range"
      id="radius-slider"
      min="0"
      value="45"
      max="90"
      step="1" />
  </div>
</form>
<section></section>

CSS

Wir wenden einen box-shadow auf das <section> an. Wir geben den <section> und Formularelementen auch einige grundlegende Stile, die wir der Übersichtlichkeit halber ausgeblendet haben.

css
section {
  box-shadow: 1px 1px 3px gray;
}

Das JavaScript, das die vom Benutzer ausgewählten Werte auf das <section> anwendet, ist der Übersichtlichkeit halber ausgeblendet.

Ergebnis

Das gerenderte Ergebnis sieht so aus:

Versuchen Sie, unterschiedliche Werte auszuwählen, um zu sehen, wie dies die Form der Ecken beeinflusst.

superellipse() Wertvergleich

In diesem Beispiel bieten wir zwei <input type="range"> Schieberegler, die es Ihnen ermöglichen, durch viele verschiedene corner-shape superellipse() Werte und border-radius Werte zu schalten, um die Effekte von jedem auf einen Container zu vergleichen.

HTML

Das Markup für dieses Beispiel enthält zwei <input type="range"> Elemente, aus denen unterschiedliche corner-shape superellipse() und border-radius Werte ausgewählt werden können, und ein <section> Element, um diese Werte darauf anzuwenden.

html
<form>
  <div>
    <label for="superellipse-slider">Choose a superellipse() value:</label>
    <input
      type="range"
      id="superellipse-slider"
      min="-5"
      value="0"
      max="5"
      step="0.1" />
  </div>
  <div>
    <label for="radius-slider">Choose a border-radius value:</label>
    <input
      type="range"
      id="radius-slider"
      min="0"
      value="45"
      max="90"
      step="1" />
  </div>
</form>
<section></section>

CSS

Wir wenden einen box-shadow auf das <section> Element an. Zusätzliche grundlegende Stile sind der Übersichtlichkeit halber ausgeblendet.

css
section {
  box-shadow: 1px 1px 3px gray;
}

Das JavaScript, das die vom Benutzer ausgewählten Werte auf das <section> anwendet, ist der Übersichtlichkeit halber ausgeblendet.

Ergebnis

Das gerenderte Ergebnis sieht so aus:

Versuchen Sie, unterschiedliche Werte auszuwählen, um zu sehen, wie dies die Form der Ecken beeinflusst.

Animieren von corner-shape

In diesem Beispiel demonstrieren wir, wie die corner-shape Eigenschaft animiert werden kann.

HTML

html
<div></div>

CSS

Wir erstellen ein Satz von @keyframes, die sanft zwischen den corner-shape Werten von square und notch animieren. Wir wenden dann eine animation basierend auf diesen @keyframes auf das <div> an, wenn sein enthaltendes <html> Element überfahren oder fokussiert wird. Zusätzliche grundlegende <div> Stile sind der Übersichtlichkeit halber ausgeblendet.

css
@keyframes corner-pulse {
  0% {
    corner-shape: square;
  }

  /* To make the starting point apparent, let us keep
  the shape the same for a small duration. */
  20% {
    corner-shape: square;
  }

  100% {
    corner-shape: notch;
  }
}

div {
  animation: corner-pulse infinite alternate 4s linear;
}

Ergebnis

Das gerenderte Ergebnis sieht so aus:

Spezifikationen

Spezifikation
CSS Borders and Box Decorations Module Level 4
# propdef-corner-shape

Browser-Kompatibilität

Siehe auch