IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

div avec border-top linear-gradient


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2009
    Messages
    635
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 635
    Par défaut div avec border-top linear-gradient
    Bonsoir,

    Dans une div, j'aimerai faire un petit effet dégradé sur le border-top à l'aide de linear-gradient ou autre..

    Par exemple : (L) transparent => gray (C) => transparent (R), mais l'exemple suivant me colore toute la div..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .test-border {
           width: 500px;
    	background: -webkit-linear-gradient(left, transparent, gray, transparent);
      	background: -moz-linear-gradient(left, transparent, gray, transparent);
      	background: -ms-linear-gradient(left, transparent, gray, transparent);
      	background: -o-linear-gradient(left, transparent, gray, transparent);
    }
    <div class="test-border">Contenu variable en hauteur...</div>
    Savez-vous si c'est possible ?

    merci d'avance pour votre réponse,

  2. #2
    Membre éclairé
    Inscrit en
    Février 2009
    Messages
    635
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 635
    Par défaut
    Le code suivant fonctionne mais uniquement sous FF , pourtant d'après la doc pas de pb pour la compatibilité...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	border-image: -webkit-linear-gradient(to left, transparent, gray, transparent) 100 100 / 1px 1px;
    	border-image: -moz-linear-gradient(to left, transparent, gray, transparent) 100 100 / 1px 1px;
    	border-image: -ms-linear-gradient(to left, transparent, gray, transparent) 100 100 / 1px 1px;
    	border-image: -o-linear-gradient(to left, transparent, gray, transparent) 100 100 / 1px 1px;

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Voir plutôt : box-shadow.

  4. #4
    Membre éclairé
    Inscrit en
    Février 2009
    Messages
    635
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 635
    Par défaut
    Merci pour la réponse mais je ne vois pas trop le rapport avec la bordure... je ne cherche pas à ajouter une ombre mais une transparence sur la bordure L/R et gray au milieu...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- moi non plus...
    En fait, si : je le voyais dans l'autre sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .test-border {
      width: 500px;
      box-shadow:0 -5px 5px -5px grey;
    }
    2- Sinon, on peut l'appliquer en background sur .test-border:before.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    .test-border {
      width: 500px;
    }
     
    .test-border:before {
      display:block; /* important */
      content:''; /* important */
      position:relative;
      height:2px;
      background: -webkit-linear-gradient(left, transparent, gray, transparent);
      background: -moz-linear-gradient(left, transparent, gray, transparent);
      background: -o-linear-gradient(left, transparent, gray, transparent);
      background: linear-gradient(left, transparent, gray, transparent);
      margin-bottom:5px;
    }
    On peut d'ailleurs associer les deux.
    Dernière modification par Invité ; 23/10/2019 à 11h50.

  6. #6
    Membre éclairé
    Inscrit en
    Février 2009
    Messages
    635
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 635
    Par défaut
    Il y a de l'idée à exploiter, merci. Pour l'instant, je contourne le pb avec une balise <hr> mais c'est pas top... j'aimerai qu'il y est une bordure d'1px en haut et en bas de ma div en passant uniquement par CSS...
    L'exemple que j'ai donné fonctionne uniquement sous FF, c'est étrange...

  7. #7
    Invité
    Invité(e)
    Par défaut
    1- ...Et ma solution 2 fonctionne partout....
    Il suffit d'ajouter :after pour la "bordure" inférieure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .test-border:before, .test-border:after {
    2- Concernant border-image, tu as oublié de définir border :

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    .test-border {
      width: 500px;
      padding:15px 0;
      border: 1px solid;
      border-image: linear-gradient(to left, transparent, gray, transparent) 100 100 / 1px 30%;
    }
    Et là, ça fonctionne aussi partout. (et à priori, SANS préfixe)
    Dernière modification par Invité ; 25/10/2019 à 11h09.

  8. #8
    Membre éclairé
    Inscrit en
    Février 2009
    Messages
    635
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 635
    Par défaut
    Salut, merci pour ton aide, je ne comprends pas le rôle de before/after dans ton exemple, lorsque je place le code dedans, rien ne fonctionne,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .container:before, .container:after  {
      padding: 15px 0 !important;
      border: 1px solid !important;
      border-image: linear-gradient(to left, transparent, gray, transparent) 100 100 / 1px 30% !important;
    }
    mais si je fais comme ça, ça fonctionne sauf Safari... et ce, malgré la présence du préfixe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    .container  {
      padding: 15px 0 !important;
      border: 1px solid !important;
      border-image: linear-gradient(to left, transparent, gray, transparent) 100 100 / 1px 30% !important;
      border-image: -webkit-linear-gradient(to left, transparent, red, transparent) 100 100 / 1px 30% !important;
    }

Discussions similaires

  1. [CSS 3] div avec border-radius, contenu qui dépasse
    Par Neckara dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/09/2013, 14h16
  2. [CSS 3] Dégradé sur une image avec linear-gradient
    Par comode dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 22/08/2012, 17h06
  3. Bug Mozilla body margin-top 0px qui disparait avec border-top
    Par Flaburgan dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 03/06/2011, 13h43
  4. Comment placer des div avec margin-left et margin-top
    Par derzy971 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 21/04/2010, 18h37
  5. Un soucis avec border-top
    Par florent dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/02/2010, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo