2012-04-17 43 views
1

首次發佈,請耐心等待。幻燈片放映增加了Z指數並減少了不透明度

我試圖創建幻燈片是:

  • 分配的z-index到每個<section>
  • 將所有幻燈片0.7
  • 不透明分配目前上滑塊的不透明度1

下面是HTML:

<div id="slides"> 
    <section class="slide"> 
    <article> 
     <h1>6</h1> 
    </article> 
    </section> 
    <section class="slide"> 
    <article> 
     <h1>5</h1> 
    </article> 
    </section> 
    <section class="slide"> 
    <article> 
     <h1>4</h1> 
    </article> 
    </section> 
    <section class="slide"> 
    <article> 
     <h1>3</h1> 
    </article> 
    </section> 
    <section class="slide"> 
    <article> 
     <h1>2</h1> 
    </article> 
    </section> 
    <section class="slide"> 
    <article> 
     <h1>1</h1> 
    </article> 
    </section> 
</div> 
<div id="prev"> 
    <a href="#previous">&larr;</a> 
</div> 
<div id="next"> 
    <a href="#next">&rarr;</a> 
</div> 

這裏是JS至今:

$(document).ready(function() { 
    var z = 0; 
    var inAnimation = false; 

    $('section.slide').each(function() { 
    z++; 
    $(this).css('z-index', z); 
    }); 

    function swapFirstLast(isFirst) { 
    if(inAnimation) return false; 
    else inAnimation = true; 

    var processZindex, direction, newZindex, inDeCrease; 

    if(isFirst) { 
     processZindex = z; direction = '-'; newZindex = 1; inDeCrease = 1; 
    } else { 
     processZindex = 1; direction = ''; newZindex = z; inDeCrease = -1; 
    } 

    $('section.slide').each(function() { 
     if($(this).css('z-index') == processZindex) { 
     $(this).animate({ 'top' : direction + $(this).height() + 'px' }, 'slow', function() { 
      $(this).css('z-index', newZindex) 
      .animate({ 'top' : '0' }, 'slow', function() { 
      inAnimation = false; 
      }); 
     }); 
     } else { 
     $(this).animate({ 'top' : '0' }, 'slow', function() { 
      $(this).css('z-index', parseInt($(this).css('z-index')) + inDeCrease); 
     }); 
     } 

     return false; 
    } 

    $('#next a').click(function() { 
     return swapFirstLast(true); 
    }); 

    $('#prev a').click(function() { 
     return swapFirstLast(false); 
    }); 
    }); 
}); 

我想我可以插入下面的代碼到腳本:

if($(this).css('z-index') == processZindex) { 
    $(this).css('opacity', 1); 
} else { 
    $(this).css('opacity', 0.7); 
} 

的問題是,我似乎不能在1得到的不透明度以跟上Z-index值6.因此,我想寫爲$(this).css('z-index') != 6,但問題發生。

有沒有更簡單的方法來編碼?

+0

我有點不清楚你想要什麼。你想要幻燈片堆疊?然後用z-index和不透明度來上下拖動?爲什麼z-index在這裏很重要? – 2012-04-17 17:37:17

+0

你的代碼似乎有些複雜,正如Jeff B所說,你能更詳細地解釋你試圖達到的效果嗎? – trickyzter 2012-04-17 17:45:16

+0

z-index對於我想達到的效果非常重要:幻燈片層位於彼此頂部,幻燈片位於頂部幻燈片稍半透明。就像一大堆煎餅的頂部不透明度爲1。 – 2012-04-17 18:46:54

回答

2

我只是用元素,而不是z索引的順序,使用appendTopreprendTo

http://jsfiddle.net/jtbowden/RAT8N/1/

我不能決定,如果一個函數或獨立的功能更好。下面是兩個單獨的函數:

http://jsfiddle.net/jtbowden/5LJcA/3/

是,你要什麼?

+0

我嘗試了你建議的代碼,並且每當我循環瀏覽所有內容時,我的幻燈片在瀏覽器窗口上的壓力都會降低。參考資料(書籍,網站)我可以用它來學習如何編寫類似於您製作的代碼嗎?你和trickyzter並不是在開玩笑我的代碼錯綜複雜。 – 2012-04-17 20:29:36

+0

你的意思是他們的偏移量增加了?什麼瀏覽器?這是否在我的例子中,或者當你複製粘貼我的代碼? – 2012-04-17 20:31:52

+0

另外,練習練習練習。我通過玩它學習了jQuery,除了jQuery網站和SO答案之外,我沒有使用任何引用。 – 2012-04-17 20:32:37