更改window.load scrollTop基于页面的动画速度

时间:2013-12-13 16:07:33

标签: javascript jquery wordpress scrolltop

我已经设置我的网站通过使用scrollTop到某个div函数滚动过强制标题元素。我特意将它设置为慢速滚动,以便用户“知道标题在那里”但在后续页面上,我宁愿它只是从那个滚动位置开始。

我正在尝试使用简单的if / else语句来抓取wordpress页面(is_home)并将动画设置为1200,否则将动画设置为0.我甚至已经进入并设置了自定义字段is_home和True的页面。但它仍然无法正常工作。任何想法如何修复if / else或建议以更好的方式来实现它?

if (is_home()) {
    $(window).load(function () {
        $('html, body').animate({
            scrollTop: $("#grey").offset().top
        }, 1200);
    });
} else {
    $(window).load(function () {
        $('html, body').animate({
            scrollTop: $("#grey").offset().top
        }, 0);
    })
}

2 个答案:

答案 0 :(得分:1)

好吧,if(is_home())是来自WordPress API的php语句,在JS中不可用。你可以在此基础上包含不同的脚本调用,但在我看来这是相当糟糕的做法。

确保在插件之后执行以下操作,显然是jquery。好地方可能在wp_footer()

之后
<?php 
if (is_home()) { ?>
    <script>
    $(window).load(function () {
        $('html, body').animate({
            scrollTop: $("#grey").offset().top
        }, 1200);
    });
    </script>    
<?php } else { ?>
    <script>
    $(window).load(function () {
        $('html, body').animate({
            scrollTop: $("#grey").offset().top
        }, 0);
    });
    </script>
<?php } ?>

答案 1 :(得分:0)

您正在将PHP和JavaScript结合在一起。 is_home()是一个PHP语句 您需要重写您的代码,如下所示:

<?php
    if (is_home()) {
 ?>
        <script type="text/javascript">
            $(window).load(function () {
                $('html, body').animate({
                    scrollTop: $("#grey").offset().top
                }, 1200);
            });
        </script>
<?php 
    } else {
?>
        <script type="text/javascript">
            $(window).load(function () {
                $('html, body').animate({
                    scrollTop: $("#grey").offset().top
                }, 0);
            });
        </script>        
<?php 
    } 
?>

同时使用jQuery代替$以避免与任何其他JavaScript库发生冲突