【问题标题】:How to set a transition for when mouse leaves an element (hover off)?如何为鼠标离开元素(悬停)设置过渡?
【发布时间】:2017-08-07 19:54:25
【问题描述】:

我有多种产品形式,它们将悬停时的图像更改为另一个图像。悬停时,过渡很平滑,ease-in-out 需要 0.3 秒。然而,当鼠标离开元素时,过渡是突然的,并且会立即改变。如何在鼠标离开时也进行过渡?

CSS:

.my-reveal .hidden { 
  	display: block !important; 
  	visibility: visible !important;
}
.product:hover .reveal img { 
  	opacity: 1; 
}
.my-reveal { 
  	position: relative; 
}
.my-reveal .hidden { 
  position: absolute; 
  z-index: -1;
  top: 0; 
  width: 100%; 
  height: 100%;  
  opacity: 0;
  -webkit-transition: opacity 0.3s ease-in-out;
  -moz-transition: opacity 0.3s ease-in-out;
  -o-transition: opacity 0.3s ease-in-out;
  transition: opacity 0.3s ease-in-out;  
}
.my-reveal:hover .hidden { 
  z-index: 2;
  opacity: 1;    
}
<div class="my-reveal">
      <img src="" alt="skirt">
      <img src="" alt="skirt">
</div>

【问题讨论】:

    标签: html css css-transitions


    【解决方案1】:

    使用当前布局,您需要做的就是转换隐藏元素的不透明度,然后将其转入和转出。

    .my-reveal {
      position: relative;
    }
    .hidden {
      opacity: 0;
      position: absolute;
      top: 0; left: 0;
      transition: opacity 0.3s ease-in-out;
    }
    .my-reveal:hover .hidden { 
      opacity: 1;
    }
    <div class="my-reveal">
      <img src="" alt="Bootiful Skirt">
      <img class="hidden" src="" alt="Bootiful Skirt">
    </div>

    【讨论】:

      【解决方案2】:

      您应该在可见图像中添加一个“显示”类,然后添加这段 CSS:

      .my-reveal .shown { 
        z-index: 2;
        opacity: 1;    
        -webkit-transition: opacity 0.3s ease-in-out;
        -moz-transition: opacity 0.3s ease-in-out;
        -o-transition: opacity 0.3s ease-in-out;
        transition: opacity 0.3s ease-in-out;  
      }
      .my-reveal:hover .shown { 
        z-index: -1;
        opacity: 0.3;    
      }
      

      这将使您的可见图像具有不透明度为 1 的非悬停状态和具有缓入平滑动画的悬停状态。

      【讨论】:

        【解决方案3】:

        transition 添加到z-index 属性。在默认状态下,将其延迟设置为等于opacity 转换的持续时间,在:hover 状态下,将该延迟重置为0

        div{
            position:relative; 
        }
        div>img:first-child{ 
            position:relative;
            z-index:2;
        }
        div>img:last-child{ 
            left:0;
            opacity:0;
            position:absolute;
            top:0; 
            transition:opacity .3s ease-in-out,z-index 0s linear .3s;  
            z-index:1;
        }
        div:hover>img:last-child{ 
            opacity:1;    
            transition-delay:0s;
            z-index:3;
        }
        <div>
            <img src="" alt="skirt">
            <img src="" alt="skirt">
        </div>

        【讨论】:

          猜你喜欢
          • 2021-05-31
          • 2017-02-13
          • 1970-01-01
          • 1970-01-01
          • 2021-10-20
          • 2015-02-14
          • 2021-11-10
          • 2017-07-14
          • 1970-01-01
          相关资源
          最近更新 更多