2017-08-26 15 views
3

私は、横に並んでいる要素があります。 li要素の1つは、下にスクロールすると表示され、後ろにスクロールすると消えます。私はfadeInとfadeOutを使ってjQueryでこれを達成しました。しかし、私はフェージング効果ではなくスライディング効果を使ってこれを達成しようとしています。jQueryを使用してスクロールの要素を右から左へスライド

$(document).scroll(function() { 
    var y = $(this).scrollTop(); 
    if (y > 180) { 
    $('.header-avail') 
    .attr('style', 'display: block !important;') 
    .fadeIn(); 
    } 
    else { 
    $('.header-avail').fadeOut(); 
    } 
}); 

HTML:

以下

コードである

<ul id="primary-menu" class="menu nav-menu" aria-expanded="false"> 

<li id="menu-item-386" class="header-avail menu-item menu-item-type-post_type menu-item-object-page menu-item-386"> 
    <a href="#" class="menu-image-title-after"><span class="menu-image-title">Contact Us</span></a> 
</li> 

<li id="menu-item-504" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-504" style="display: inline-block !important;"> 
    <a href="#" class="menu-image-title-after"><span class="menu-image-title">Check Availability</span></a> 
</li> 
</ul> 

Fiddle:

+0

スライディングエフェクトは....したいですか? –

+0

はいスライディングエフェクト – user38208

+0

あなたはこのようにしたい[更新されたフィドル](https://jsfiddle.net/1a01xtxL/2/) –

答えて

0

代わりの関係liを隠し、それをゼロ幅を与え、それをアニメーション化。

$(document).scroll(function() { 
 
    var show = $(this).scrollTop() > 180, 
 
     visible = $('.header-avail').width() > 0; 
 
    if (show === visible) return; // nothing to do 
 
    $('.header-avail').stop().animate({marginLeft: 20 * show, width: 100 * show}); 
 
});
body {height: 2000px;} 
 

 
#primary-menu { 
 
    letter-spacing: 1px; 
 
    list-style: none; 
 
    margin: 0; /* all margins 0 */ 
 
    padding: 0; 
 
    padding-top: 250px; 
 
} 
 
#primary-menu > li { 
 
    display: inline-block; 
 
    margin: 0; 
 
    position: relative; 
 
    background: red; 
 
    height: 300px; 
 
    float: right; 
 
} 
 
/* show, but with zero width and margin */ 
 
.header-avail{width: 0; margin: 0; overflow: hidden}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<ul id="primary-menu" class="menu nav-menu" aria-expanded="false"> 
 
    <li id="menu-item-386" class="header-avail menu-item menu-item-type-post_type menu-item-object-page menu-item-386"><a href="#" class="menu-image-title-after"><span class="menu-image-title">Contact Us</span></a></li> 
 
    <li id="menu-item-504" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-504" style="display: inline-block !important;"><a href="#" class="menu-image-title-after"><span class="menu-image-title">Check Availability</span></a></li> 
 
</ul>

:そのために仕事に、あなたも(ウィンドウの右側にそう他の可視 liスティック)をゼロにマージンを設定して、アニメーション li overflow: hidden属性を与える必要があります
関連する問題