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

  1. #1
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    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 actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    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 actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    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 actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    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 actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    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;
    }

  9. #9
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Salut,

    T'as oublié le truc le plus important dans :before & :after et qui avait pourtant été stipulé par @jreaux62

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    display:block; /* important */
      content:''; /* important */

    Sans ces 2 propriétés, un :before ou :after ne peut pas être visible !!!


    EDIT : Au final, j'ai l'impression que tu mélanges tous les bouts de code au petit bonheur, la chance.
    L'exemple de shadow-box de @jreaux62 est pourtant la meilleure formule pour résoudre ton problème !!!

  10. #10
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    @darkstar123456
    Merci pour l'explication, mais ça ne fonctionne toujours pas. Pour le faire avec shadow-box, je ne sais pas faire et linear-gradient me pose un pb de compatibilité.

  11. #11
    Invité
    Invité(e)
    Par défaut
    1- C'est sûr, si tu ne suis pas les consignes...

    2- J'ajoute qu'il ne faut pas confondre :
    • !important : impose une règle
    • et /* important */ : un simple commentaire

    As-tu testé ton code avec juste border: 1px solid; ?

    3- Comprendre :before et :after : il suffit de cliquer sur les liens...

    4- Quant à Safari, je ne suis pas sur Mac...


    @darkstar123456
    Ce n'est pas shadow-box, mais box-shadow !
    Cela dit, l'effet n'est pas le même (sens du dégradé).
    Dernière modification par Invité ; 25/10/2019 à 18h43.

  12. #12
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    merci pour ton aide, je regarde ça demain.

    Pour Safari il suffit de l'installer, il y a une version pour Windows.

  13. #13
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    Citation Envoyé par dominos
    Pour Safari il suffit de l'installer, il y a une version pour Windows.
    qui est obsolète depuis quand sur windows (2012-13) ??

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