Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
superellipse()
Limited availability
Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.
Expérimental:Il s'agit d'unetechnologie expérimentale.
Vérifiez attentivement letableau de compatibilité des navigateurs avant de l'utiliser en production.
LafonctionCSSsuperellipse() permet de définir la courbure d'une ellipse, et sert à spécifier lesformes de coins soit directement, soit via les mots-clés<corner-shape-value>.
Dans cet article
Syntaxe
superellipse(infinity)superellipse(4)superellipse(1.7)superellipse(0)superellipse(-2.8)superellipse(-3)superellipse(-infinity)Paramètres
<number>Un nombre compris entre
-infinityetinfinityinclus.
Valeur de retour
Une forme de superellipse.
Description
La fonctionsuperellipse() retourne une forme de superellipse, utilisée pour définir les valeurs decorner-shape. Une superellipse est une courbe fermée symétrique, intermédiaire entre un rectangle et une ellipse. Elle ressemble à une ellipse qui conserve les caractéristiques géométriques de ses deux axes.
La forme de superellipse est calculée à partir d'une version modifiée de l'ellipse. L'équation suivante définit une ellipse centrée à l'origine :
Les variablesa etb correspondent aux rayons de l'ellipse, tandis que les coordonnéesx ety sont des points sur la circonférence de l'ellipse.
Un cercle est une ellipse dont les rayonsa etb sont de même longueur. Sia etb valent tous deuxr, l'équation du cercle s'écrit :
Dans cette équation,x ety sont les coordonnées des points sur la circonférence du cercle, etr est le rayon du cercle, le centre étant(0, 0). L'ellipse est obtenue en étirant la forme du cercle selon l'axex et/ouy.
Une superellipse est créée en remplaçant l'exposant2 dans chaque cas par 2K, oùK est l'argument passé à la fonctionsuperellipse(), ce qui modifie la courbure de l'ellipse :
Le schéma suivant illustre différentes valeurs desuperellipse() pour le coin supérieur droit d'un conteneur :infinity,1,0,-1 et-infinity :
- Une valeur de
Kégale à0crée une ligne droite. Cette valeur permet de créer des coins biseautés et correspond au mot-clébevelde<corner-shape-value>. - Une valeur de
Kégale à1crée une ellipse ordinaire, correspondant au mot-cléround. - Une valeur de
Ksupérieure à1rend la forme plus carrée ;2correspond au mot-clésquircle. - Une valeur de
Kégale àinfinitycrée un carré parfait (correspondant au mot-clésquare), bien que des valeurs deKsupérieures ou égales à10soient pratiquement indiscernables d'un carré. - Des valeurs négatives de
Kproduisent une courbe concave, donnant des coins incurvés vers l'intérieur (« creusés »). Une valeur deKégale à-1correspond au mot-cléscoopet-infinityau mot-clénotch.
Une superellipse négative ou positive sera symétrique à une superellipse de valeur inverse.
Note :Pour toute valeur du paramètreK passée, la fonctionsuperellipse() retournera toujours la même forme pour cette valeur. Lorsque cette valeur est appliquée à deux éléments, l'apparence du coin peut différer si la taille de la boîte ou la valeur deborder-radius diffère.
Syntaxe formelle
<superellipse()> =
superellipse(<number>|
infinity|
-infinity)
Exemples
>Comparaison des valeurssuperellipse()
Dans cet exemple, deux curseurs<input type="range"> permettent de parcourir différentes valeurssuperellipse() pourcorner-shape et différentes valeurs deborder-radius, afin de comparer leurs effets sur un conteneur. Le code est masqué pour plus de clarté, mais l'explication complète de lacomparaison des valeurs superellipse est disponible sur la page de référencecorner-shape.
<form> <div> <label for="superellipse-slider">Choose a superellipse() value:</label> <input type="range" min="-5" value="0" max="5" step="0.1" /> </div> <div> <label for="radius-slider">Choose a border-radius value:</label> <input type="range" min="0" value="45" max="90" /> </div></form><section></section>html { font-family: Arial, Helvetica, sans-serif;}body { width: fit-content; margin: 20px auto;}section { display: flex; justify-content: center; align-items: center; flex: 100%; margin-top: 20px;}form div { margin-top: 5px; display: flex;}section { width: 100%; height: 180px; background-color: orange; background-image: linear-gradient( to bottom, rgb(255 255 255 / 0), rgb(255 255 255 / 0.5) );}section { box-shadow: 1px 1px 3px gray;}const rectangle = document.querySelector("section");const superEllipseRange = document.getElementById("superellipse-slider");const borderRadiusRange = document.getElementById("radius-slider");function setCorners() { const seValue = `superellipse(${superEllipseRange.value})`; rectangle.style.cornerShape = seValue; const brValue = `${borderRadiusRange.value}px`; rectangle.style.borderRadius = brValue; rectangle.innerHTML = `<div><code>corner-shape: ${seValue};</code><br><code>border-radius: ${brValue};</code></div>`;}superEllipseRange.addEventListener("input", setCorners);borderRadiusRange.addEventListener("input", setCorners);setCorners();Note :Voir aussi l'exemple decomparaison des valeurs<corner-shape-value>.
Spécifications
| Specification |
|---|
| CSS Borders and Box Decorations Module Level 4> # funcdef-superellipse> |
Compatibilité des navigateurs
Voir aussi
- La propriété
corner-shape - Le type de donnée
<corner-shape-value> - Le modulebordures et décorations de boîte CSS