J'ai lu et essayé d'autres solutions à mon problème, mais aucune ne semble fonctionner.
J'ai 3 images, chacune dans leur propre div à 4 colonnes. J'ai une transition CSS configurée pour que ces images passent de l'échelle de gris à la couleur lorsque la souris de l'utilisateur survole l'image. J'ai maintenant besoin qu'un bouton apparaisse en survol. J'ai joint une image pour illustrer ce que je veux dire.
Et voici un extrait de mon HTML et CSS pour les 4 colonnes du milieu.
--------------------- [~ # ~] html [~ # ~] ---------------------
<div class="small-4 columns">
<img src="/wp-content/themes/adamslaw/assets/img/woman.png">
<a class="button" href="/jane/">View Jane's Profile</a>
</div>
--------------------- [~ # ~] css [~ # ~] ---------------------
.greyish {
background: $smoke !important;
h1 {
margin: rem-calc(100) 0 0;
}
img {
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
filter: gray; /* IE6-9 */
-webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
-o-transition:.5s;
-ms-transition:.5s;
-moz-transition:.5s;
-webkit-transition:.5s;
transition:.5s;
}
img:hover {
filter: none;
-webkit-filter: grayscale(0%);
.button:hover {
display: inline-block;
}
}
}
REMARQUE: J'utilise SCSS, d'où les règles CSS imbriquées et étranges.
Voici:
.button {
display: none;
}
img:hover + .button, .button:hover {
display: inline-block;
}
En faisant cela, nous utilisons le sélecteur css de frère adjacent +
. Le sélecteur est assez simple: sur l'image "en vol stationnaire", vous sélectionnez .button
(son frère) et affichez-le. Ici, j'ai ajouté .button:hover
de sorte que lorsque l'utilisateur "survole" le bouton, il le garde visible (empêche un effet clignotant lorsque l'utilisateur déplace la souris sur le bouton).
Vous pouvez utiliser un simple img:hover + .button
pour sélectionner le lien (le +
sélectionne l'élément suivant s'il correspond à .button
sélecteur)
.button {
display: none;
}
img:hover + .button {
display: inline-block;
}
<div class="small-4 columns">
<img src="http://placehold.it/350x150">
<a class="button" href="/jane/">View Jane's Profile</a>
</div>
Sinon, si le bouton n'est pas sur l'image, vous pouvez utiliser :hover
sur un élément wrapper, ce qui évite que l'image ne soit plus survolée lorsque vous souhaitez cliquer sur le bouton (le bouton disparaîtrait lorsque vous essayez de cliquer dessus, comme le montre l'exemple ci-dessus)
.button {
display: none;
}
.wrapper:hover img {
/* Change the filter in here */
}
.wrapper:hover .button {
display: inline-block;
}
<div class="small-4 columns">
<div class="wrapper">
<img src="http://placehold.it/350x150">
<a class="button" href="/jane/">View Jane's Profile</a>
</div>
</div>
Vous pouvez définir la classe sur le conteneur d'images et afficher le bouton lorsque vous survolez le conteneur d'images.
Veuillez vérifier cela lien avec un exemple de travail:
.img-container:hover .button {
display: block;
position: absolute;
left: 0;
right: 0;
bottom: 20px;
width: 100%;
text-align: center;
}
ici vous allez mon ami:
div.small-4.columns img ~ a {display:none;}
div.small-4.columns img:hover ~ a {display:block;}
MISE À JOUR:
si vous voulez que le bouton soit cliquable et ne disparaisse pas jusqu'à ce que vous supprimiez le déplacement de l'image, utilisez plutôt ce qui suit:
a.button {display: none;}
div.small-4.columns:hover > a.button {display:block;}
EXPLICATION:
a.button
est de sélectionner le a
avec la classe .button
div.small-4.columns:hover
sélection du div
qui a les deux classes .small-4
et .columns
(parent de l'image)
>
signifie enfant et ~
signifie frère, dans ce cas div.small-4.columns:hover > a.button {display:block;}
nous lui disons d'afficher l'élément enfant qui est a.button
, lorsque nous survolons div.small-4.columns