2017-10-10 34 views
1

嗨,我只是想知道最好的方式去滾動到懸停圖像的底部。圖像處於隱藏溢出的包裝中,因爲其相當長。理想情況下,平滑滾動到底部是我正在尋找隱藏圖像的其餘部分。如何滾動到懸停圖像的底部

我一直在玩弄jquery試圖讓它工作,但我陷入了泥潭。不知道我的代碼是否正確,或者不是真的。

感謝所有幫助

$('#image-wrap img').on('hover', function() { 
 
    var target = $(this), 
 
    height = target.height(), 
 
    scrollHeight = target.prop('scrollHeight'); 
 

 
    target.animate({ 
 
    scrollTop: scrollHeight - height 
 
    }, 2000); 
 
});
#main-wrapper { 
 
    width: 600px; 
 
    margin: 0 auto; 
 
} 
 

 
#box-wrapper { 
 
    position: relative; 
 
} 
 

 
#box { 
 
    width: 100%; 
 
    height: 400px; 
 
    border: 1px black solid; 
 
    position: relative; 
 
} 
 

 
#image-wrap { 
 
    overflow: hidden; 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 100%; 
 
    top: 0; 
 
} 
 

 
#image-wrap img { 
 
    position: absolute; 
 
    top: 0; 
 
    width: 100%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="main-wrapper"> 
 
    <div id="box-wrapper"> 
 
    <div id="box"> 
 
     <div id="image-wrap"> 
 
     <img src="http://via.placeholder.com/600x2000" /> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

回答

-2

所以我猜你想要滾動整個頁面(有點像使用鼠標滾輪)?

你可以做這樣的事情:

$('#image-wrap img').on('hover', function() { 
    var target = $(this), 
    height = target.height(), 
    scrollHeight = target.offset().top; 

    $('body,html').animate({ 
     scrollTop:scrollHeight+height-500 
    },500); 
}); 

這則滾動頁面,因此圖像的最後一個500px的是可見的。如果這不能解決您的問題,整個頁面的示例將會有所幫助。

+0

他是不是想利用滾動功能。包裝div有溢出隱藏,這意味着你不能做滾動功能。檢查這個http://cr8code.co/editor.php?workid=79e9c857b463e73b0f491b771a446e79 –

-1

如果圖像被隱藏,則無法與其進行交互。如果它是可見的,你可以像這樣使用scrollTo()。

  1. 捕獲使用scrollTop的當前滾動位置()

    變種POS = $( '你的圖像容器')scrollTop的();

  2. 抓住圖像容器

    VAR HEIGHT = $的高度( '你的圖像容器')高度()。

  3. 添加兩個值

    變種通過MoveTo = POS +高度;

  4. 自動滾動到位置

    window.scrollTo(0,通過MoveTo);

1

我現在明白你的想法了。

HTML

$(document).ready(function(){ 
 
    $('#img-holder').mouseenter(function(){ 
 
    var x = $('img').height(); 
 
    x = x-400; 
 
    $('img').animate({'position':'absolute','top':'-'+x}, 300); 
 
    }); 
 
    $('#img-holder').mouseleave(function(){ 
 
    $('img').css({'position':'relative','top':'0'}); 
 
    }); 
 
});
#img-holder{ 
 
    width:100%; 
 
    height:400px; 
 
    border:2px solid; 
 
    overflow:hidden; 
 
    position:relative; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="img-holder"> 
 
    <img src="https://blog.hittail.com/wp-content/uploads/sites/8/2013/01/hidden-value-of-long-tail-seo-1000.png" width="100%"> 
 
</div>

的想法是使IMG的絕對位置,並給它顯示的底部部分的值。

這裏是一個工作DEMO

+1

這是正確的答案。我將代碼編輯爲工作片段。 – jfeferman

+1

感謝您的努力=) –

0

請嘗試以下方法:

$('#image-wrap img').hover(function() { 
 
    $('html, body').animate({ 
 
     scrollTop: $(this).offset().top + $(this).outerHeight() 
 
    }, 2000); 
 
});
#main-wrapper { 
 
    width: 600px; 
 
    margin: 0 auto; 
 
} 
 

 
#box-wrapper { 
 
    position: relative; 
 
} 
 

 
#box { 
 
    width: 100%; 
 
    height: 400px; 
 
    border: 1px black solid; 
 
    position: relative; 
 
} 
 

 
#image-wrap { 
 
    overflow: hidden; 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 100%; 
 
    top: 0; 
 
} 
 

 
#image-wrap img { 
 
    position: absolute; 
 
    top: 0; 
 
    width: 100%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="main-wrapper"> 
 
    <div id="box-wrapper"> 
 
    <div id="box"> 
 
     <div id="image-wrap"> 
 
     <img src="http://via.placeholder.com/600x2000" /> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

精湛+1運行你不理解的是,當有溢出隱藏在包裝DIV你不能做滾動功能片段 –

+0

伴侶。 「圖像是一個包含溢出隱藏的應用程序,因爲它相當長。」 http://cr8code.co/editor.php?workid=79e9c857b463e73b0f491b771a446e79這就是答案。 –

+0

@GüneySaramalı,你是對的。 OP的問題不明確。如果你想滾動到div內的圖像底部隱藏溢出比不可能的。如果你想將頁面滾動到包裝div的底部,那麼外層容器溢出就可以了。 – jfeferman

2

您可以使用簡單的CSS3。在懸停添加轉換transform: translateY(-100%),但它不像jQuery解決方案那樣聰明。

#main-wrapper { 
 
    width: 600px; 
 
    margin: 0 auto; 
 
} 
 

 
#box-wrapper { 
 
    position: relative; 
 
} 
 

 
#box { 
 
    width: 100%; 
 
    height: 400px; 
 
    border: 1px black solid; 
 
    overflow: hidden; 
 
} 
 

 
img { 
 
    transition: all 2000ms ease-out; 
 
} 
 

 
#box:hover img { 
 
    transform: translateY(-100%); 
 
}
<div id="main-wrapper"> 
 
    <div id="box-wrapper"> 
 
    <div id="box"> 
 
     <img src="http://lorempixel.com/400/1000/sports/" /> 
 
    </div> 
 
    </div> 
 
</div>