【问题标题】:jquery crossfade structured div elementsjquery crossfade 结构化 div 元素
【发布时间】:2014-08-22 23:34:47
【问题描述】:

我已经按照http://css-tricks.com/snippets/jquery/simple-auto-playing-slideshow/ 的说明制作了我的自动幻灯片

js 看起来是这样的:

setInterval(function () {
    $('#singleSlideshow #slideItem:first')
        .fadeOut(1000)
        .next()
        .fadeIn(1000)
        .end()
        .appendTo('#singleSlideshow');
    }, 3000);

这适用于内容区域,只有一个元素可以淡入/淡出,例如:

<div id="slideShow">
    <img src="www.pictures.com/somepic.png"/>        
    <img src="www.pictures.com/anotherpic.png"/>
    <img src="www.pictures.com/theonepic.png"/>
</div>

但我想在我的页面上显示另一个幻灯片,在结构化元素之间切换。

 <div id="newsItem">
     <img class="newsImg" src="./somepic"/>
     <div id="newsTitle">Testnews 1</div>
     <div id="newsDate">01.01.2014</div>
     <div id="newsText">this is the first news text...</div>
 </div>

你可以在这里看到它:http://jsfiddle.net/ehLdW/4/

---编辑--- 我玩了一下以解决脚本中的错误... 我改变了我的脚本以相反的顺序工作

setInterval(function () {
    $('#singleSlideshow #slideItem:last')
        .fadeOut(1000)
        .prev()
        .fadeIn(1000)
        .end()
        .prependTo('#singleSlideshow');
    }, 3000);

问题还是一样 - 没有交叉淡入淡出效果,但只有一个淡入淡出动画。 有趣的是,原来的版本只显示了新元素的淡入淡出过渡 相反,倒序版本只显示当前元素的淡出过渡。

所以它总是显示元素的效果,索引越高 我不知道如何解决这个问题......

【问题讨论】:

    标签: jquery html structure slideshow cross-fade


    【解决方案1】:

    假设我了解您想要什么,您希望在同一页面上有 2 个幻灯片,具有不同的时间/转换时间,并且每个都需要显示自己单独的混合内容(图像和/或其他 div)。

    JSFIDDLE 演示Here

    HTML:

    <div id="slideshow1">
       <div>
           <div style="color:red;">Content in first child of slideshow1</div>
           <div style="color:blue;">More content in first child of slideshow1</div>
       </div>
       <div>
         Content in second child of slideshow1
       </div>
       <div>
         Content in third child of slideshow1
       </div>
    </div>
    
    <div id="slideshow2">
       <div>
           <div style="color:red;">Content in first child of SLIDSHOW2</div>
           <div style="color:blue;">More content in first child of SLIDESHOW2</div>
       </div>
       <div>
         Content in second child SLIDESHOW2
       </div>
       <div>
         Content in third child SLIDESHOW2
       </div>
    </div>
    

    JQUERY:

    $("#slideshow1 > div:gt(0)").hide();
    
    setInterval(function() { 
      $('#slideshow1 > div:first')
        .fadeOut(1000)
        .next()
        .fadeIn(1000)
        .end()
        .appendTo('#slideshow1');
    },  3000);
    
    $("#slideshow2 > div:gt(0)").hide();
    
    setInterval(function() { 
      $('#slideshow2 > div:first')
        .fadeOut(2000)
        .next()
        .fadeIn(2000)
        .end()
        .appendTo('#slideshow2');
    },  4500);
    

    CSS:

    #slideshow1 { 
        margin: 50px auto; 
        position: relative; 
        width: 240px; 
        height: 240px; 
        padding: 10px; 
        box-shadow: 0 0 20px rgba(0,0,0,0.4); 
    }
    
    #slideshow1 > div { 
        position: absolute; 
        top: 10px; 
        left: 10px; 
        right: 10px; 
        bottom: 10px; 
    }
    
    #slideshow2 { 
        margin: 50px auto; 
        position: relative; 
        width: 240px; 
        height: 240px; 
        padding: 10px; 
        box-shadow: 0 0 20px rgba(0,0,0,0.4); 
    }
    
    #slideshow2 > div { 
        position: absolute; 
        top: 10px; 
        left: 10px; 
        right: 10px; 
        bottom: 10px; 
    }
    

    【讨论】:

    • 问题是没有在同一页面上使用两个单独的幻灯片 - 问题是,当一张幻灯片包含多个元素时,转换不会按预期工作。不过,它正在与您的小提琴一起使用...稍后我会研究一下。但是现在,我使用了 jquery 循环插件 ...
    猜你喜欢
    • 1970-01-01
    • 2010-12-22
    • 2010-12-04
    • 2021-02-10
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多