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 :

affichage d'un texte et flou uniquement sur background-image, au survol [CSS 3]


Sujet :

Survol d'un élément en CSS (:hover)

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut affichage d'un texte et flou uniquement sur background-image, au survol
    Bonjour,

    je me remets doucement à CSS et HTML pour mon site perso.
    Jusque-là la recherche m'a suffit mais je tombe sur un sujet plus épineux ^^

    au survol de la souris sur un div, je voudrais que l'image (mise en tant que background-image) se floute et que le texte de mon choix s'affiche par dessus :

    je suis donc parti sur un html assez simple :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div class="box"><h4>Impression 3D</h4></div>

    et le css suivant :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    .box {
      height: 350px;
      width: 350px;
      background: url("https://nlng.fr/img/bg_construct.png");
    }
     
    h4{
      opacity:0;
    }
     
    .box:hover h4{
      transition: 0.1s ease;
      opacity:1;
    }
     
    .box:hover{
      transition: 0.1s ease;
      -webkit-filter: blur(5px);
    	filter: blur(5px);
    }

    j'ai fait un codepen ici : https://codepen.io/cptbourg/pen/OJOOMba
    j'ai essayé de jouer avec zindex,
    backdrop-filter ne fonctionne pas sous firefox,
    j'ai mis un blur à 0 dans .box:hover h4bref je suis bloqué

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    backdrop-filter ne fonctionne pas sous firefox,
    cela fonctionne mais il faut modifier la configuration donc jamais franchement utilisable.

    Il te faut changer la structure en place.
    Plusieurs solutions possibles, comme d'habitude, une sur base d'un élément <figure>, pour la sémantique mais c'est idem avec des <div>, et une en utilisant un pseudo-élément :before par exemple.

    Sur base figure :
    le HTML :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <figure class="box-figure">
      <img src="https://nlng.fr/img/bg_construct.png">
      <figcaption>Impression 3D</figcaption>
    </figure>
    et le CSS associé :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    .box-figure {
      position: relative;
      width: 350px;
      height: 350px;
      overflow: hidden;
    }
    .box-figure figcaption {
      position: absolute;
      top: 0;
      font-size: 2em;
      font-weight: 700;
      opacity: 0;
      transition: opacity .3s ease;
    }
    .box-figure img {
      transition: .3s ease;
    }
    .box-figure:hover img {
      filter: blur(5px);
    }
    .box-figure:hover figcaption {
      opacity: 1;
    }
    Sur base pseudo-élément :
    le HTML :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="box-before">
      <h4>Impression 3D</h4>
    </div>
    et le CSS associé :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    .box-before {
      position: relative;
      width: 350px;
      height: 350px;
      overflow: hidden;
    }
    .box-before h4 {
      position: relative;
      margin: 0;
      font-size: 2em;
      font-weight: 700;
      opacity: 0;
      transition: opacity .3s ease;
    }
    .box-before::before {
      content: "";
      position: absolute;
      width: 100%;
      height: 100%;
      background: url("https://nlng.fr/img/bg_construct.png");
      transition: .3s ease;
    }
    .box-before:hover::before {
      filter: blur(5px);
    }
    .box-before:hover h4 {
      opacity: 1;
    }
    Beaucoup de points communs dans ces deux solutions.

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut
    Bonsoir NoSmoking,

    premièrement, merci beaucoup pour ton temps, je viens enfin de prendre le temps de comprendre les deux solutions

    pour la partie <img> dans le html, c'est très intéressant puisque j'apprends pas mal de choses en plus! overflow et la balise <figure> notamment.
    ca me resservira forcément quand je me déciderais à intégrer un peu de php pour gérer mes images!
    pas de soucis de compréhension sur la partie css

    Pour la version avec pseudo-éléments, déjà j'ai un gros boulot à faire pour comprendre leur principes, mais surtout les petits contournements qu'ils semblent pouvoir permettre
    (je commence ici : https://developer.mozilla.org/fr/doc...seudo-elements mais ce n'est pas encore très clair ^^ )

    par contre je pense que tu as nommé la classe "box-before" et pas juste "box" pour une bonne raison, mais j'ai dû mal à voir pourquoi?
    merci beaucoup pour la solution en tout cas, avec pleins de détails très formateurs!

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    par contre je pense que tu as nommé la classe "box-before" et pas juste "box" pour une bonne raison, mais j'ai dû mal à voir pourquoi?
    pas de raison spéciale si ce n'est que si tu mets tous ces codes dans une même page test cela te permets de t'y retrouver et de savoir rapidement ce qui est appliqué à telle ou telle partie

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2020
    Messages : 17
    Par défaut
    ok c’est bien ce qui m’avait échappé ^^
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lien sur background-image
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/02/2011, 16h19
  2. texte formatté sur background-image
    Par MistyMan dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 06/03/2010, 22h52
  3. Champs input type="text" n'apparait pas sur une image
    Par sofuzion dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 04/06/2009, 09h16
  4. Dessiner le texte d'un richedit sur une image
    Par Montor dans le forum Contribuez
    Réponses: 2
    Dernier message: 07/05/2009, 19h21
  5. Hover sur Background-image
    Par rems033 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 14/12/2007, 17h30

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