2011-05-17 63 views
4

我有一个test setup缩略图div淡入另一个div,但它有一些问题。淡入淡出一格:更稳定,删除白色暂停,多淡淡

  1. 如何消除白色暂停?目前它将一格转换为白色,然后淡入第二格。我怎样才能让它从一个div淡出到另一个没有淡化成白色?
  2. 这是一个有点不稳定,如果你快速悬停结束第二个div出现在原来的下面。我怎样才能让它更加稳定?
  3. 我将在每个图像和文本中添加多个缩略图,如何将网格设置为包含多个框,而不是一次全部淡入/淡出(即分开)。

下面的代码:

Javacript:

<script type="text/javascript"> 

$(document).ready(function(){ 
      $(".phase-2").hide(); 
     }); 


$(function(){ 
$('.grid-box').hover(
     function(){ 
      $('.grid-box .phase-1').fadeOut(300, function(){ 
       $('.grid-box .phase-2').fadeIn(300);       
      }); 
     }, 
     function(){ 
      $('.grid-box .phase-2').fadeOut(300, function(){ 
       $('.grid-box .phase-1').fadeIn(300);       
      }); 
     } 
     ); 
}); 
</script> 

HTML:

<div class="grid-box"> 
<div class="phase-1"> 
     <img class="grid-image" src="http://teamworksdesign.com/v2/wp-content/themes/default/images/dtr.jpg" alt="" height="152" width="210" /> 
    <div class="grid-heading"> 
     <h2>DTR Medical</h2> 
     <h3>Branding, Web, Print</h3> 
    </div> 
</div> 
<div class="phase-2"> 
    <div class="grid-info"> 
     <h4>Probeything 2000</h4> 
     <p>Marketing unglamorous single-use medical intruments is not simple. We helped Neurosign increasetheir sales by 25% and increasemarket awareness.</p> 
    </div> 
    <div class="grid-heading-hover"> 
     <h2>DTR Medical</h2> 
     <h3>Branding, Web, Print</h3> 
    </div> 
</div> 

+0

白停顿是因为其知名度变为零;使用带有不透明度选项的动画来淡入和淡出,并将其保持在50%,然后在完成后使用隐藏。 – Val 2011-05-17 10:11:42

+0

谢谢瓦尔,只是错过了你的答案。你有一个我能看的代码示例吗?这是我的能力的最前沿! – Rob 2011-05-17 10:22:02

+0

这听起来好像你的回答会让我更加控制,如缓和,不透明和持续时间,这听起来很完美。 – Rob 2011-05-17 10:29:18

回答

7

1),而不是在回调做悬停项目的淡入,立即执行。这将防止显示了穿过白色背景:

$('.grid-box .phase-1').fadeOut(300); 
$('.grid-box .phase-2').fadeIn(300); 

2)要做到这一点缩略图容器上指定的大小和添加overflow: hidden;它最简单的方法。

3)最后,下面的代码将包含在徘徊,在专区内确保只有元素会受到影响:

$(function(){ 
    $('.grid-box').hover(
     function(){ 
      $('.phase-1', this).fadeOut(300); 
      $('.phase-2', this).fadeIn(300); 
     }, 
     function(){ 
      $('.phase-2', this).fadeOut(300) 
      $('.phase-1', this).fadeIn(300); 
     } 
    ); 
}); 
+0

干杯。几乎在那里,我又把它上传到了测试页面。它仍然会先白。问题2和3排序(有点玩),所以感谢。似乎第一阶段淡出为白色,第二阶段刚刚出现。 – Rob 2011-05-17 10:17:53

+0

奇数。我以前从未见过这种行为。尝试为'phase-1'和'phase-2' divs添加'position:absolute;'。这里有一个小提琴展示它的工作原理:http://jsfiddle.net/byB6L/ – 2011-05-17 10:29:08

+0

完美,我从来不会想到会解决它,但它确实。感谢所有的帮助。 – Rob 2011-05-17 10:32:51

1

HTML

<div class="grid-box"> 
    <div class="phase-1"></div> 
    <div class="phase-2"></div> 
</div> 

JQ

$(document).click(function(){ 
$('.grid-box .phase-1').animate({opacity:50},2000).queue(function(){ 
    $(this).hide(); 

}); 
$('.grid-box .phase-2').fadeIn(2000); 
}); 

CSS

.phase-1{width: 100px;height: 100px;background: red; position:absolute;} 
.phase-2{width: 100px;height: 100px;background: blue;display: none; position:absolute;} 

我知道这不完全是你的代码的样子,但你能明白我的意思在一个简单的解释。

这里是它的jsfiddle http://jsfiddle.net/NxJf8/演示

+0

我已经使它持续2秒,所以你可以更好地看到转换 – Val 2011-05-17 10:34:12

+0

感谢Val的努力,Rory修复了代码,每个人都对转换感到满意,所以认为我们会继续这样做。也许这会给别人一个选择。 – Rob 2011-05-17 10:39:16

+0

没问题:)只要它工作无所谓你使用lol :) – Val 2011-05-17 10:41:29