2016-07-27 158 views
1

如果單擊第一個按鈕,我已經定義了名爲「slide-1」和「slide-2」的div,中間跨度名爲「option-1」。計算自動滾動的div高度

我想將我的scrollTop動畫中的195和268(見下文)更改爲基於「幻燈片」div高度的計算數字,但是當我嘗試(「#slide-2」)。height( )例如它似乎沒有工作。

這裏是什麼,我至今一CodePen,它的工作原理完全一樣我想,但我擔心,一旦我把它添加到網頁我將不得不再次手動更改scrollTop的數字

權現在,滾動是基於這些數字我自己輸入

//first option code 

$("#option-1-button").on("click", function() { 
    $(this).closest(".box").find("#option-1").slideToggle(); 

    $('body').animate({scrollTop: 195}, 1000); 

    $("#slide-2").delay(500).fadeToggle(1000); 

    $('body').delay(500).animate({scrollTop: 268}, 1000); 

    $('#option-1-button').prop('disabled', true); 
    $('#option-2-button').prop('disabled', true); 

}); 
+0

請顯示造成問題的代碼,而不是代碼。請參見[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – showdev

回答

0

我認爲你只是缺少$符號:

$('body').animate({ //animate element that has scroll 
     scrollTop: $("#slide-1").height() //for scrolling 
    }, 1000); 

    $("#slide-2").delay(500).fadeToggle(1000); 

    $('body').delay(500).animate({ //animate element that has scroll 
     scrollTop: $("#slide-2").height() //for scrolling 
    }, 1000); 
0

你可以得到一個div的位置使用offset(); 它會給你一個元素的頂部或左側位置。 (從文檔0,0的頂部或左側開始的像素),然後滾動到該值。

例如$( '#滑動-1')偏移()頂部。;

0

有你需要在這裏發現了一些東西 -

  1. 重複ID值。您有兩個元素id="windows"。將它們改爲課程,否則你的身高將會消失。

  2. 因爲你現在有多個windows元素,它們可能都有不同的高度,所以你需要依靠指標值來確定你將得到的高度。

  3. 你需要得到3個不同的東西高度 -

    • option框到窗口
    • option盒本身包括保證金的高度頂部的高度
    • 的包含保證金的windows元素的高度

var window = $('.windows')[0] //0 is the index of the first occurrence of the class windows 

var scrollHeight = $('#option1').offset().top + $('#option1').outerHeight(true) + $(window).outerHeight(true); 

我使用了jQuery方法.outerHeight([includeMargin])並設置includeMargin標誌true所以它會包括這將是必要的,高度的計算任何餘量 - http://api.jquery.com/outerheight/

編輯演示以及 - https://codepen.io/anon/pen/bZKrWQ