使用jQuery的上滑过渡将div中的内容替换为其他内容

时间:2016-04-01 19:57:28

标签: javascript jquery html css

我有2个div,如下所示:

<div id="content">
    Content 1
</div>
<div id="rollover-content" style="display: none;">
    Content 2
</div>

如果#content div被鼠标悬停在#rol​​lover-content div上,那么我怎么能这样做?#s;&#39;过渡效应并接管。然后,当鼠标离开div时,#content将向后滑动。

如果您转到this demo并将鼠标悬停在第一个磁贴上,您将看到我正在寻找的效果,但我正在尝试使用直接jQuery。

我创建了以下css类,它是创建卡片的好容器:

.card {
        position: relative;
        margin: 0.5rem 0 1rem 0;
        background-color: #F1F1F1;
        transition: box-shadow .25s;
        border-radius: 2px;
        box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);
        padding: 20px;
}

如何在包含此类的div中执行这些转换?

2 个答案:

答案 0 :(得分:2)

要实现这一点,您只需将内容包装在几个div中即可。首先是一个外部div,其大小与内容在其中滑动相同,并且具有overflow: hidden来掩盖其边界之外的内容。然后是另一个内部div,它可以让你在悬停时向上/向下移动所有幻灯片。然后在里面你有你的实际内容。这是一个例子:

<div class="container">
    <div class="slide">
        <div class="content" id="first">
            Content 1
        </div>
        <div class="content" id="second">
            Content 2
        </div>
    </div>
</div>
.container {
    width: 200px;
    height: 150px;
    overflow: hidden;
    position: relative;
}
.slide {
    position: absolute;
}
.content {
    width: 200px;
    height: 150px;
}
$('.container').hover(function(e) {
    var $container = $(this), 
        top = e.type == 'mouseenter' ? -$container.height() : 0;
    $container.find('.slide').stop(true).animate({
        top: top
    })
})

Working example

或者你可以单独使用CSS,只要.content元素总是是CSS中定义的高度:

.slide:hover {
    top: -150px;
}

Working example

答案 1 :(得分:1)

你不需要任何jQuery。几行CSS已经可以实现这种效果。在.box-2上设置转换以执行此操作。

.box-container {
  background: blue;
  width: 200px;
  height: 400px;
  position: relative;
  overflow: hidden;
}
.box-1 {
  position: absolute;
  background: lightblue;
  width: 200px;
  height: 400px;
  top: 0;
  left: 0;
}
.box-2 {
  position: absolute;
  background: darkblue;
  color: white;
  width: 200px;
  height: 0;
  bottom: 0;
  left: 0;
  transition: height .4s ease-in-out;
}
.box-container:hover .box-2 {
  height: 400px;
}
<div class="box-container">

  <div class="box-1">

    Hello

  </div>

  <div class="box-2">

    New content

  </div>
</div>

</div>