Bonsoir,
Je suis confronté à un problème particulièrement chronophage :
Dans le cadre du développement de mon blog, je souhaite faire apparaître les articles sur la home sous forme de vignettes.
Cependant, pour les utilisateurs puissent voir de quoi traite chaque article, des informations sont visibles au survol de la vignette, en apparaissant par dessus celle-ci.
En plus de cette surimpression du descriptif de l'article, l'image de fond change, avec l'effet de porte coulissante en CSS, pour afficher une image floutée, intégrée dans le sprite.
Voici la maquette du site, pour servir d'exemple : https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-snc6/178450_4775235177180_294614288_o.jpg
Concrètement, on voit que la première vignette est devenue floue au survol de la souris grâce aux portes coulissantes (deux images en une seule).
Ensuite, grâce au :hover, j'appelle la <div> comprenant le texte et je lui demande d'être affichée (display: inline-block).
Le problème est que lorsque la souris se déplace sur le texte celui-ci "clignote".
Selon moi la raison est que la souris passe du texte au fond, et change l'état du :hover.
Ce qui ne devrait pas avoir lieu étant donnée que l'image affichée en dessous du texte correspond justement à l'état :hover.
De plus, dans un soucis de clareté, j'ai entouré la zone du texte par une balise <a> pour le rendre entièrement cliquable, et donc être sûr que l'ensemble de la zone est une sorte de layer au dessus de l'image, pour éviter que le curseur entre en relation avec cette image.
En cherchant bien, j'ai trouvé deux solutions qui règlent ce problèmes :
Utiliser un pointer-events: none sur la div du texte, qui permet d'avoir toujours le focus sur l'image, et donc d'éviter de perdre le focus du texte.
Seul problème, IE ne reconnaît pas pointer-events, et c'est très contraignant.
Deuxième solution qui est mitigée, c'est d'utiliser -webkit-transition-property, qui corrige ce soucis de focus.
Gros problème de ce côté, la div qui contient le texte varie bizarrement d'opacité en même temps que l'image de fond, et dans tous les cas ça pose d'autres contraintes.
Concrètement, je cherche une solution qui puisse me permettre de flouter une image au survol de la souris, et d'ajouter du texte, cliquable, par dessus.
Pour le flou, j'ai pensé au SVG, mais l'image était légèrement cropée sur un côté. Pareil pour le flou en CSS qui avait tendance à déborder, même en définissant le width/height et un overflow: hidden.
Pour moi, la solution, bien que pas optimale, réside dans les portes coulissantes, pour ce qui est de l'image.
Donc, quid du text qui clignote/scintille?
Voici la partie HTML/PHP
Et pour la partie CSS :
A ce propos, si quelqu'un peut m'expliquer pourquoi je dois corriger de -6px mon .preview{ top: -406px}, ce serait gentil!
Modifié par seeane (08 Nov 2012 - 21:47)
Je suis confronté à un problème particulièrement chronophage :
Dans le cadre du développement de mon blog, je souhaite faire apparaître les articles sur la home sous forme de vignettes.
Cependant, pour les utilisateurs puissent voir de quoi traite chaque article, des informations sont visibles au survol de la vignette, en apparaissant par dessus celle-ci.
En plus de cette surimpression du descriptif de l'article, l'image de fond change, avec l'effet de porte coulissante en CSS, pour afficher une image floutée, intégrée dans le sprite.
Voici la maquette du site, pour servir d'exemple : https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-snc6/178450_4775235177180_294614288_o.jpg
Concrètement, on voit que la première vignette est devenue floue au survol de la souris grâce aux portes coulissantes (deux images en une seule).
Ensuite, grâce au :hover, j'appelle la <div> comprenant le texte et je lui demande d'être affichée (display: inline-block).
Le problème est que lorsque la souris se déplace sur le texte celui-ci "clignote".
Selon moi la raison est que la souris passe du texte au fond, et change l'état du :hover.
Ce qui ne devrait pas avoir lieu étant donnée que l'image affichée en dessous du texte correspond justement à l'état :hover.
De plus, dans un soucis de clareté, j'ai entouré la zone du texte par une balise <a> pour le rendre entièrement cliquable, et donc être sûr que l'ensemble de la zone est une sorte de layer au dessus de l'image, pour éviter que le curseur entre en relation avec cette image.
En cherchant bien, j'ai trouvé deux solutions qui règlent ce problèmes :
Utiliser un pointer-events: none sur la div du texte, qui permet d'avoir toujours le focus sur l'image, et donc d'éviter de perdre le focus du texte.
Seul problème, IE ne reconnaît pas pointer-events, et c'est très contraignant.
Deuxième solution qui est mitigée, c'est d'utiliser -webkit-transition-property, qui corrige ce soucis de focus.
Gros problème de ce côté, la div qui contient le texte varie bizarrement d'opacité en même temps que l'image de fond, et dans tous les cas ça pose d'autres contraintes.
Concrètement, je cherche une solution qui puisse me permettre de flouter une image au survol de la souris, et d'ajouter du texte, cliquable, par dessus.
Pour le flou, j'ai pensé au SVG, mais l'image était légèrement cropée sur un côté. Pareil pour le flou en CSS qui avait tendance à déborder, même en définissant le width/height et un overflow: hidden.
Pour moi, la solution, bien que pas optimale, réside dans les portes coulissantes, pour ce qui est de l'image.
Donc, quid du text qui clignote/scintille?
Voici la partie HTML/PHP
<div class="post">
<div class="thumbnail">
<?php the_post_thumbnail('thumbnail'); ?>
</div>
<a href="<?php the_permalink(); ?>" class="preview">
<p>Informations sur l'article.</p>
</a>
</div>
Et pour la partie CSS :
.post{
width: 695px;
height: 200px;
margin: 0px 0px 32px 0px;
padding: 0px 0px 0px 0px;
overflow: hidden;
}
.thumbnail:hover img{
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
position: relative;
top: -200px;
}
.thumbnail:hover+.preview{
display: inline-block;
}
.preview{
width: 695px;
height: 200px;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
position: relative;
top: -406px;
display: none;
background: rgba(20, 20, 20, 0.1);
}
A ce propos, si quelqu'un peut m'expliquer pourquoi je dois corriger de -6px mon .preview{ top: -406px}, ce serait gentil!
Modifié par seeane (08 Nov 2012 - 21:47)