【问题标题】:Display Div Overlay on :hover with CSS3 Ease-In Transitions在 :hover 上显示 Div 叠加,使用 CSS3 缓入过渡
【发布时间】:2016-02-19 19:25:57
【问题描述】:

我已经让覆盖在 :hover 上工作。但是我想使用 CSS3 添加一个缓入过渡。网上好像找不到工作版。

到代码!

所以我有一个只包含一个图像的 div。当我将鼠标悬停在它上面时,它会显示一个带有 2 个文本元素的彩色叠加层。

<div class="item">
     <img src="assets/images/blah.jpg" class="image">
         <a class="overlay" href="#">
            <h3 class="title">Some title</h3>
            <div class="description">
              <h4>Lorem ipsum dolor sit amet. consectetur adipisicing elit.</h4>
            </div>
         </a>
</div>

对于我的 CSS,我添加了 -transition 代码:

.item {
  position: relative;
  background-color: white;
  -webkit-transition: background-color 2s ease-in; 
  transition: background-color 2s ease-in; 
}

.overlay {
  background: white;
  position: absolute;
  display: none;
 }

.item:hover .overlay{
   display:block;
   background-color: black;
}

但是这个过渡效果不起作用!请帮忙!

我是否需要更改 -transition 以使用 displayall

我有一个jsfiddle which has the :hover working,只是没有动画。

非常感谢

链接:https://jsfiddle.net/jonahmclachlan/nwhzLu1g/2/

【问题讨论】:

  • display 不是可转换的属性。您在悬停时将其从 none 更改为 block,因此它永远不会转换。
  • 谢谢大家!这是有道理的。我认为 display: block 正在杀死它

标签: html css animation


【解决方案1】:

例如,您必须使用不透明度更改显示,并将过渡添加到叠加层,而不是项目。

看到它的工作:

.item {
  position: relative;
  background-color: white;
}

.overlay {
  background: white;
  position: absolute;
  opacity: 0;
  -webkit-transition: background-color 2s ease-in, opacity 2s ease-in; 
  transition: background-color 2s ease-in, opacity 2s ease-in; 
 }

.item:hover .overlay{
   background-color: black;
   opacity: 1;
  -webkit-transition: background-color 2s ease-in, opacity 2s ease-in; 
  transition: background-color 2s ease-in, opacity 2s ease-in; 
}
<div class="item">
     <img src="assets/images/blah.jpg" class="image">
         <a class="overlay" href="#">
            <h3 class="title">Some title</h3>
            <div class="description">
              <h4>Lorem ipsum dolor sit amet. consectetur adipisicing elit.</h4>
            </div>
         </a>
</div>

【讨论】:

  • 谢谢 Marcos,为什么我需要两次声明 -transitions?
  • 第一个是鼠标离开时的过渡,第二个是鼠标悬停时的过渡。如果您删除第一个过渡,您只会在悬停时看到过渡,而不是当您将鼠标悬停时。
  • 啊,进进出出 - 实际上看起来更好。
  • 也许你想在display:none之后添加visibility: hidden,以避免悬停在叠加层上。
  • @Xsmael 是的,它正在运行
猜你喜欢
  • 2013-07-04
  • 2012-03-26
  • 2015-04-20
  • 2012-07-15
  • 2012-12-28
  • 2013-10-31
  • 2013-04-16
  • 2011-06-23
  • 1970-01-01
相关资源
最近更新 更多