112 of 313 menu

Propriété border-image

La propriété border-image définit une image pour la bordure, c'est une propriété raccourcie pour les propriétés border-image-source, border-image-slice, border-image-repeat, border-image-width et border-image-outset. La propriété raccourcie est apparue dans CSS avant les propriétés détaillées et donc est supportée par un plus grand nombre d'anciens navigateurs.

Syntaxe

sélecteur { border-image: url(chemin vers l'image) décalage/épaisseur/décalage_extérieur répétition; }

Description

L'image que nous souhaitons appliquer à la bordure doit être conçue de manière spéciale : 4 mini-images pour les coins et 4 images pour les côtés. Exemple d'une telle image :

Dans ce cas, la partie centrale est laissée blanche (car nous ne voulons pas qu'elle apparaisse sur le fond de l'élément). Exemple d'image avec une partie centrale remplie :

La valeur slice indique au navigateur quelles parties de l'image iront dans les coins, et lesquelles iront sur les côtés (et quelle partie sera centrale). Les coins reçoivent 4 parties, les côtés reçoivent 4 parties et une partie (centrale) va sur le fond de l'élément (optionnellement, mot-clé fill).

L'image est "découpée" en morceaux de la manière suivante : pour la valeur slice, on spécifie une à quatre valeurs. Analysons avec un exemple. Supposons les valeurs suivantes : 10 20 30 40 (les pixels px ne sont pas spécifiés, car l'image peut être aussi bien matricielle que vectorielle). Les valeurs indiquent ceci : 10 à couper en haut, 20 à couper à droite, 30 à couper en bas, 40 à couper à gauche. Quelle partie de l'image ira dans le coin supérieur gauche ? Ce sera le morceau : 10 en haut, 40 à gauche. Dans le coin supérieur droit ira 10 en haut, 20 à droite. Et ainsi de suite.

Le plus souvent, l'image est symétrique (comme les losanges ci-dessus) et nous devons couper des morceaux égaux pour les coins. Dans ce cas, une seule valeur est spécifiée, qui définira les mêmes décalages de tous les côtés. Pour couper les losanges oranges, nous indiquerons slice à 26 (car le losange orange a une taille de 26px sur 26px). Les losanges jaunes iront sur les lignes de la bordure et il leur arrivera ceci : ils seront soit étirés sur tout le bloc, soit répétés le long de la bordure (cela dépend de la valeur repeat) :

<div id="elem"></div> #elem { border-image-source: url("image.png"); border-image-slice: 26; border-image-repeat: stretch; border-style: solid; border-width: 26px; width: 200px; height: 200px; background: green; margin: 0 auto; }

:

<div id="elem"></div> #elem { border-image-source: url("image.png"); border-image-slice: 26; border-image-repeat: repeat; border-style: solid; border-width: 26px; width: 200px; height: 200px; background: green; margin: 0 auto; }

:

La propriété border-image ne permet pas de spécifier l'épaisseur de la bordure de l'élément. Le navigateur étire simplement l'image le long de la bordure avec la largeur déjà existante. Il faut donc la définir via la propriété border.

Les utilisateurs de navigateurs anciens (ou avec les images désactivées) verront le cadre standard, défini dans border, il est donc judicieux de lui définir un style et une couleur appropriés.

Valeurs

Valeur Description
url(Chemin vers l'image) Chemin vers l'image. Pour plus de détails, voir border-image-source.
décalage Indique au navigateur quelles parties de l'image iront dans les coins, lesquelles iront sur les côtés (et quelle partie sera centrale). Valeurs possibles : de 1 à 4 nombres | de 1 à 4 pourcentages. Un espace peut permettre de spécifier le mot-clé fill en plus des nombres ou pourcentages. Pour plus de détails, voir border-image-slice.
épaisseur Cette propriété contrôle la largeur visible du cadre, la met à l'échelle. Si cette valeur est supérieure à la largeur de border-width, l'image du cadre empiétera sur le contenu. Valeurs possibles : unités CSS | pourcentages | nombre | auto. Pour plus de détails, voir border-image-width.
décalage_extérieur Propriété intéressante, permettant de déplacer le cadre en dehors des limites de l'élément. Les valeurs négatives ne sont pas supportées. Valeurs possibles : unités CSS (sauf % (?)) | nombre positif | auto. Pour plus de détails, voir border-image-outset.
répétition Indique comment répéter l'image sur les bordures (pas sur les coins) : carreler ou étirer.
Valeurs possibles : stretch | repeat | round | space.
Pour plus de détails, voir border-image-repeat.

Valeur par défaut : none 100%/1/0 stretch (url(chemin vers l'image) décalage/épaisseur/décalage_extérieur répétition).

Exemple . border-image-repeat: valeur repeat

<div id="elem"></div> #elem { border-style: solid; border-width: 26px; border-image: url("image.png") 26 repeat; width: 200px; height: 200px; background: green; margin: 0 auto; }

:

Exemple . border-image-repeat: valeur stretch

<div id="elem"></div> #elem { border-style: solid; border-width: 26px; border-image: url("image.png") 26 stretch; width: 200px; height: 200px; background: green; margin: 0 auto; }

:

Exemple . border-image-repeat: valeur round

Actuellement, à l'état normal, la valeur repeat est définie, et au survol - round. Remarquez qu'avant le survol la bordure ne contient pas un nombre entier de losanges, alors qu'après le survol - si. C'est ainsi que fonctionne round :

<div id="elem"></div> #elem:hover { border-image: url("image.png") 26 round; } #elem { border-style: solid; border-width: 42px; border-image: url("image.png") 26 repeat; width: 200px; height: 200px; background: green; margin: 0 auto; }

:

Exemple . border-image-repeat: deux mots

Valeur repeat pour la largeur et stretch pour la hauteur :

<div id="elem"></div> #elem { border-style: solid; border-width: 26px; border-image: url("image.png") 26 repeat stretch; width: 200px; height: 200px; background: green; margin: 0 auto; }

:

Exemple . Correspondance entre la largeur de l'image et la largeur de la bordure

Augmentons border-width au survol de la souris, tout en laissant l'épaisseur de border-image identique. Les losanges s'étireront sur toute la bordure :

<div id="elem"></div> #elem:hover { border-width: 52px; } #elem { border-style: solid; border-width: 26px; border-image: url("image.png") 26 repeat; width: 200px; height: 200px; background: green; margin: 0 auto; }

:

Exemple . border-image-slice

Prenons une autre image, dans laquelle les différents morceaux ne sont pas égaux :

Spécifions quelles parties de l'image doivent être coupées - 25% 30% 10% 20%. Cela fonctionne ainsi : 25% - décalage en haut, 30% - décalage à droite, 10% - décalage en bas, 20% - décalage à gauche. En fait, avec ces morceaux, nous coupons les coins. Le coin supérieur gauche sera 25% du haut de l'image, et 20% de la gauche. Le coin supérieur droit sera 25% du haut de l'image, et 30% de la droite et ainsi de suite.

De plus, si vous survolez le bloc avec la souris, le mot-clé fill s'activera, et la partie centrale de l'image deviendra le fond de notre bloc :

<div id="elem"></div> #elem:hover { border-image: url("image.png") fill 25% 30% 10% 20% stretch; } #elem { border-style: solid; border-width: 52px; border-image: url("image.png") 25% 30% 10% 20% stretch; width: 200px; height: 200px; margin: 0 auto; }

:

Exemple

Créons une bordure dégradée avec un dégradé linéaire :

<div id="elem"></div> #elem { background: green; border-image: linear-gradient(to bottom, red, blue) 30; border-width: 30px; border-style: solid; width: 200px; height: 200px; margin: 0 auto; }

:

Exemple . border-image-width

Définissons la valeur border-image-width à 2 (l'image de la bordure deviendra 2 fois plus grande que la bordure elle-même) au survol de la souris sur l'élément (26/2 - spécifié après la barre oblique, où 26 est la valeur de border-image-slice). Remarquez que la bordure elle-même n'a pas augmenté, mais l'image de la bordure - si, car elle empiétera sur le texte :

<div id="elem"></div> #elem:hover { border-image: url("image.png") 26/2 repeat; } #elem { border-style: solid; border-width: 26px; border-image: url("image.png") 26 repeat; width: 200px; height: 200px; background: green; margin: 0 auto; }

:

Exemple . border-image-outset

Définissons la valeur border-image-outset à 3 au survol de la souris sur l'élément. (26/1/2 - spécifié après la deuxième barre oblique, où 26 est la valeur de border-image-slice, et - 1 - border-image-width) :

<div id="elem"></div> #elem:hover { border-image: url("image.png") 26/1/3 repeat; } #elem { border-style: solid; border-width: 26px; border-image: url("image.png") 26 repeat; width: 200px; height: 200px; background: green; margin: 0 auto; }

:

Voir aussi

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser