recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment survoler un objet pour qu'il disparaisse et qu'un autre objet apparaisse pour pouvoir cliquer dessus ?

Mon premier objet est un objet de classe "chien-lettre". Il comporte deux objets de classe « chien » et « lettre ». J'ai réussi à le faire disparaître au survol. Mon deuxième objet est un cercle noir avec une classe "nez de chien". Mais je ne peux pas cliquer sur cet objet après son apparition.

Mise à jour

Après avoir utilisé z-index:1 le premier objet donne de la cohérence mais je n'arrive toujours pas à cliquer sur le deuxième objet à chaque fois. Si je déplace un peu le curseur, je ne peux pas cliquer.

.dog-letter-box {
  border-top: 1px solid #555;
  border-bottom: 2px solid #000000;
  height: 250px;
  width: 100%;
  background: #FEEEEB;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
}

.dog-letter {
  z-index:1;
  margin: 6% auto;
  width: 50px;
  height: 150px;
  background: #00EFFE;
  animation-duration: 0.75s;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
  transform-origin: 50% 40%; 
  grid-column-start: 3;
  grid-column-end: 4;
  grid-row-start: 1;
}
.dog {
  width: 50px;
  height: 50px;
  clip-path: circle(40%);
  background: #FFB6C1;
}
.letter {
  width: 50px;
  height: 100px;
  clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%);
  background: #FF46C1;
}
.dog-letter:hover + .dog-nose {
  animation-duration: 0.75s;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
  animation-name: show-up;
  animation-timing-function: ease;
  
}
.dog-nose {
  margin:10px auto;
  width: 70px;
  height: 70px;
  background: #AFE1AF;
  grid-column-start: 3;
  grid-column-end: 4;
  grid-row-start: 1;
  opacity: 0;
}
.bounce:hover {
    animation-name: bounce-up;
    animation-timing-function: ease;
}
@keyframes bounce-up {
  0%   { transform: translateY(0) scaleY(1) rotateY(0); opacity: 1; }
  100% { transform: translateY(-15px) scaleY(0.2) rotateY(540deg); opacity: 0; }
}
@keyframes show-up {
  0% {opacity: 0;}
  100% {opacity: 1;}
}
<div class="dog-letter-box">
  <div class="dog-letter bounce">
      <div class="dog">55</div>
      <div class="letter">66</div>
  </div>
  <a class="dog-nose" href='http://www.google.com'>
    <svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
  <circle cx="10" cy="10" r="10"/>
</svg>
  </a>
</div>

P粉817354783P粉817354783235 Il y a quelques jours472

répondre à tous(1)je répondrai

  • P粉425119739

    P粉4251197392024-04-02 11:42:40

    Votre code repose sur le survol de .dog-letter , ce qui n'est pas bon, vous pouvez exécuter des animations en survolant la boîte les contenant (.dog-letter, .dog-nose). J'utilise .dog-letter-box, vous pouvez ajouter un nouveau div et y mettre .dog-letter, .dog-nose.

    De plus, j'utilise pointer-events:none pour la lettre du chien après le survol, où le nez du chien peut être survolé et le lien cliqué.

    .dog-letter-box {
      border-top: 1px solid #555;
      border-bottom: 2px solid #000000;
      height: 250px;
      width: 100%;
      background: #FEEEEB;
      display: grid;
      grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
      grid-template-rows: 1fr 1fr;
    }
    
    .dog-letter {
      z-index:1;
      margin: 6% auto;
      width: 50px;
      height: 150px;
      background: #00EFFE;
      animation-duration: 0.75s;
      animation-iteration-count: 1;
      animation-fill-mode: forwards;
      transform-origin: 50% 40%; 
      grid-column-start: 3;
      grid-column-end: 4;
      grid-row-start: 1;
    }
    .dog {
      width: 50px;
      height: 50px;
      clip-path: circle(40%);
      background: #FFB6C1;
    }
    .letter {
      width: 50px;
      height: 100px;
      clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%);
      background: #FF46C1;
    }
    .dog-letter-box:hover .dog-nose {
      animation-duration: 0.75s;
      animation-iteration-count: 1;
      animation-fill-mode: forwards;
      animation-name: show-up;
      animation-timing-function: ease;
      
    }
    .dog-nose {
      margin:10px auto;
      width: 70px;
      height: 70px;
      background: #AFE1AF;
      grid-column-start: 3;
      grid-column-end: 4;
      grid-row-start: 1;
      opacity: 0;
    }
    .dog-letter-box:hover .bounce {
      animation-name: bounce-up;
      animation-timing-function: ease;
      pointer-events: none;
    }
    @keyframes bounce-up {
      0%   { transform: translateY(0) scaleY(1) rotateY(0); opacity: 1; }
      100% { transform: translateY(-15px) scaleY(0.2) rotateY(540deg); opacity: 0; }
    }
    @keyframes show-up {
      0% {opacity: 0;}
      100% {opacity: 1;}
    }
    55
    66

    répondre
    0
  • Annulerrépondre