2016-04-15 156 views
0

我刚刚为在wordpress上运行的网站构建了滑动顶部面板。因此我通过使用一个钩子点将该条添加到标题中。我使用了一个非常简单的custom.js(主要是从不同来源复制),以便在第一次单击时滑动条(“出现”)和第二次单击时“滑动”(=消失)。出于某些原因,此动画不能顺利运行。虽然速度有点太快了(我可以通过提高速度持续时间来轻松改变),但动画似乎也有些滞后。我敢打赌,我监督重要的事情,因为我不习惯jQuery/Javascript。在那里存在一些代码片段以使转换更顺利?Slidingbar .js动画不平滑

Java的脚本标记:

// Slidingbar initialization 
var tgslidingbar_state = 0; 

// Clicking 
jQuery('.tg-toggle-wrapper').click(function(){ 
var $tgslidingbar = jQuery (this).parents('#tgslidingbar-area').children('#tgslidingbar'); 


//Expand 
if (tgslidingbar_state === 0) { 
$tgslidingbar.slideDown(340, 'easeOutQuad'); 
jQuery('.tg-toggle-wrapper').addClass('open'); 
tgslidingbar_state = 1; 

//Collapse 
} else if(tgslidingbar_state == 1) { 
$tgslidingbar.slideUp(340,'easeOutQuad'); 
jQuery('.tg-toggle-wrapper').removeClass('open'); 
tgslidingbar_state = 0; 
} 
}); 

HTML的标记:

<div id="tgslidingbar-area" class="tgslidingbar-area"> 

<div style="display: none;" id="tgslidingbar"> 
<div class="containertop"> 


Slidingbar Content Here! 

</div></div> 

<div class="tg-toggle-wrapper"><a class="tg-toggle" href="#"></a>  

</div></div> 

有了这个标记的滑杆做幻灯片向下和向上。例如,我已经注意到该栏是滞后的,因此我已将Google地图添加到滑动栏中。这是否会成为laggy动画的原因呢,导致google地图只在条打开时加载?我还在复制的片段动画中实现了“easeOutQuad”属性,并在网络上进行搜索。它似乎是一个流行的jQuery动画库。到目前为止,我没有将这个图书馆加入我的网站,也许这就是原因?

亲切的问候来自德国!

+0

变化从'easeOutQuad'幻灯片动画到你需要的那种类型 – madalinivascu

回答

1

余施加于码一些修改。

我使用查询的动画功能。

#tgslidingbar的初始显示属性改变为“块”

加在容器顶部类“填充”和“移除填充”上tgslidingbar类。

https://jsfiddle.net/nigayo/cn49ubr6/

[HTML]

<div style="display:block;height:0" id="tgslidingbar"> 

[JS]

var tgslidingbar_state = 0; 
var $tgslidingbar = jQuery('#tgslidingbar'); 
var nHeight = $tgslidingbar.get(0).scrollHeight; 


// Handle the slidingbar toggle click 
jQuery('.tg-toggle-wrapper').click(function() { 


    //Expand 
    if (tgslidingbar_state === 0) { 
    $tgslidingbar.animate({ 
     'height': nHeight 
    }, 340, function() { 
     jQuery('.tg-toggle-wrapper').addClass('open'); 
     tgslidingbar_state = 1; 
    }); 
    ...... 
+0

是的,你做到了!动画现在顺利! :-) 这个解决方案出现了一件剩余的事情:滑动条区域的高度现在可以适应浏览器的整个高度。我每晚都检查一次firefox,例如滑动条区域的高度太大,所以滑动图标不再显示在内容视图中+我的网站上没有滚动条。是否有一种方法可以将高度调整为侧边栏中div的高度,因为div flex_column_half在大屏幕上并排显示?无论如何,你摇滚! :-) – DoUtDes

+0

对不起,我不明白一个额外的问题。你不能移动滚动条吗? – superui

+0

对错误的沟通抱歉。我调查了你的真棒js。进一步。首先,滑动条贴在我的标题上,该标题是浮动的。现在,当您单击展开按钮时,浏览器视口会自动跳转到顶部。第二件事是,当我调整窗口大小时,滑动条高度不适应,因此内容显示不正确,导致flex_column div在某个点下中断。这两件事情都不是那么糟糕(顶部跳跃不影响功能和普通用户不调整窗口大小),但也许有一个解决方案呢? – DoUtDes

0

我建议一些不同的选项。

第一,

相反,使用jQuery的动画功能。

示例代码:https://jsfiddle.net/nigayo/jo5vd2ob/

第二。

你可以使用css转换。 http://jsfiddle.net/nigayo/qy1ummx6/1/

[CSS]

.box {  
float: left; 
/* you can use other ease effect. ease-in, ease-out, ease-in-out */ 
-webkit-transition: all 1s ease; 
overflow: hidden; 
} 

.height { 
background-color: red; 
width: 300px; 
max-height: 0px; 
} 
.change { 
    max-height: 500px; 
} 

[JS]

$('button').on('click', function() { 
    $('.box').toggleClass('change'); 
}); 
+0

嘿, 我给了这两个选项一个快速的尝试,但没有能够让他们任何人工作,因为我对JS很新。我甚至不知道如何修改你的jsfiddle解决方案到我的标记。只想说谢谢,我现在需要休息一下。我会在今天晚些时候或周末回来,以便在您的解决方案花费更多时间后,我仍然无法让他们工作:) – DoUtDes

+0

Bis zumnächstenMal :-) – superui

+0

嗨nigayo,它似乎你能够说德语,而讨论是公开的,我会坚持使用英语。对我来说最好的解决方案和加价是第一个选择。这里是我在JS文件中试过的: '//展开 if(tgslidingbar_state === 0){$ tgslidingbar.animate({height:“toggle”},5000); jQuery('.tg-toggle-wrapper').addClass('open'); tgslidingbar_state = 1;' 我做了同样的事情崩溃。滑动条不会滚动,而是在开始时跳跃。看来这个地区根本没有动画。 来自特里尔的问候! – DoUtDes