Bordure avec dégradé en css


Avec un gradient dans border-image

Une bordure, ou cadre, avec dégradé put s'obtenir en combinant les propriétés border-width, qui permet de définir l'épaisseur de la bordure sur chacun des quatre côtés, et border-image qui accepte entre autre un gradient de couleurs.
Le css:
.withborder {
  display:inline-block;padding:.5em;margin:1em;
  border:solid;
  border-width:0 0 .5em .5em;
  border-image:linear-gradient(to bottom,rgba(0,0,255,0),rgba(0,0,255,.5),rgba(255,0,0,.5)) 10;
}
et le html:
<div class="withborder">
  Du texte, ou autre, 
  <br>
  avec bordure dégradée, 
  <br>
  et sur seulement deux bords
</div>
pour obtenir:
Du texte, ou autre,
avec bordure dégradée,
et sur seulement deux bords

Cette méthode ne supporte par contre pas l'ajout d'un border-radius.
On peut, si on y tient vraiment, faire un semblant de cadre artisanalement, en supperposant en fait deux blocs.

Bordure(s) en superposant deux blocs

Comme alternative, on peut superposer deux blocs: un bloc contenant le texte avec un fond blanc (ou autre bien sûr), et un bloc en fond, contient juste un background dégradé avec un linear-gradient (ou autre bien sûr).
L'épaisseur de la bordure, et/ou son positionnement droite/gauche/haut/bas s'ajuste alors simplement via le padding affecté au bloc extérieur. On peut alors aussi utiliser ici un border-radius.
Par exemple, pour le css:
.out{
  display:inline-block;
  background:linear-gradient(to right bottom, blue, red,white);
  border-radius:0 0 0 1em;
  padding-left:.5em;
  padding-bottom:.5em
}
.in{
  padding:.2em;
  background:white;
  border-radius:0 0 0 .5em
}
et le html:
<div class="out">
  <div class="in">
    Du texte dans un bloc, 
    <br>
    à l'intérieur d'un autre, 
    <br>
    donnant un effet de bordure
  </div>
</div>


Pour obtenir l'affichage:
Du texte dans un bloc,
à l'intérieur d'un autre,
donnant un effet de bordure



Voir aussi:
LongPage: h2: 2 - h3: 0