jquery动画页面打桩

Posted

技术标签:

【中文标题】jquery动画页面打桩【英文标题】:Jquery animation pagePiling 【发布时间】:2017-06-08 21:31:20 【问题描述】:

我正在寻找类似于本网站http://cuberto.com/ 的jquery 动画。 到目前为止,我已经通过 pagePiling.js 完成了这个链接http://codepen.io/mirmibrahim/pen/MJoGBY。任何人都可以帮助我完全按照路伯托的方式完成它。我不知道如何加载一半页面的图像和一半的文本,然后打开下一部分以从第一张幻灯片上的方形动画开始。

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>pagePiling.js plugin - Horizontal scroll</title>
  <meta name="author" content="Alvaro Trigo Lopez" />
  <meta name="description" content="pagePiling.js plugin by Alvaro Trigo." />
  <meta name="keywords" content="pile,piling,piling.js,stack,pages,scrolling,stacking,touch,fullpile,scroll,plugin,jquery" />
  <meta name="Resource-type" content="Document" />

  <link rel="stylesheet" type="text/css" href="../jquery.pagepiling.css" />
  <link rel="stylesheet" type="text/css" href="examples.css" />

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
  <!--script src="../jquery-1.9.1.js"></script-->


  <script type="text/javascript" src="../jquery.pagepiling.js"></script>
  <script type="text/javascript">
    $(document).ready(function() 

      /*
       * Plugin intialization
       */
      $('#pagepiling').pagepiling(
        direction: 'horizontal',
        menu: '#menu',
        scrollingSpeed: 2000,
        anchors: ['page1', 'page2', 'page3', 'page4'],
        sectionsColor: ['black', '#1C252C', '#F27B1D', '#39C'],
        navigation: 
          'position': 'right',
          'tooltips': ['Page 1', 'Page 2', 'Page 3', 'Pgae 4']
        ,
        afterRender: function() 
          $('#pp-nav').addClass('custom');
          console.log("After Render ");

        ,
        afterLoad: function(anchorLink, index) 

          // $.fn.pagepiling.setAllowScrolling(false);
          console.log("After Load " + index);
          if (index == 1) 

            console.log("index " + index);
           else if (index == 2) 

          

          if (index > 1) 
            $('#pp-nav').removeClass('custom');
           else 
            $('#pp-nav').addClass('custom');
          
        ,
        onLeave: function(index, nextIndex, direction) 
          console.log("After Load " + index);

          if (index == 1) 

            /*                  $( "#block" ).animate(
                                        width: "100%",
                                        opacity: 0.4,
                                        marginLeft: "0.6in",
                                        fontSize: "12em",
                                        borderWidth: "20px"
                                        , 4000 , function() 
                // Animation complete.

                    //alert("s");
              );
            */

            $("#block").animate(
              width: "58%"
            , 1000, function() 
              console.log("animation finished");
              $.fn.pagepiling.setScrollingSpeed(500);

            );

           else if (index == 2 && nextIndex == 1) 

            $("#block").animate(
              width: "0%"
            , 3000, function() 
              console.log("animation finished");
              $.fn.pagepiling.setScrollingSpeed(2000);

            );

          

        

      );
    );
  </script>


  <style>
    #section1 img 
      margin: 20px 0;
      opacity: 0.7;
    
    /* colors
     * --------------------------------------- */

    #colors2,
    #colors3 
      position: absolute;
      height: 163px;
      width: 362px;
      z-index: 1;
      background-repeat: no-repeat;
      left: 0;
      margin: 0 auto;
      right: 0;
    

    #colors2 
      background-image: url(imgs/colors2.gif);
      top: 0;
    

    #colors3 
      background-image: url(imgs/colors3.gif);
      bottom: 0;
    
    /* Overwriting fullPage.js tooltip color
    * --------------------------------------- */

    #pp-nav.custom .pp-tooltip 
      color: #AAA;
    
  </style>

</head>

<body>
  <ul id="menu">
    <li data-menuanchor="page1" class="active"><a href="#page1">Page 1</a></li>
    <li data-menuanchor="page2"><a href="#page2">Page 2</a></li>
    <li data-menuanchor="page3"><a href="#page3">Page 3</a></li>
  </ul>


  <div id="pagepiling">
    <div class="section" id="section1">
      <!--img src="imgs/pagePiling-plugin.gif"  /-->

      <div class="intro">
        <div>
          <div style="background:#F6303F;border-left: thick solid #F6303F; height:150px; width:8px; margin-left:42%;" id="block">


          </div>
          <h1 style="color: white;">DIGITAL</h1>
          <p style="color: white;">CREATIVE AGENCY</p>

        </div>


      </div>

    </div>
    <div class="section">
      <div class="intro">
        <h1>Simple to use</h1>
        <p>Just use the option direction: 'horizontal' to have it working!</p>
      </div>
    </div>
    <div class="section" id="section3">
      <div class="intro">
        <h1>Isn't it great?</h1>
        <p>Just as you expected!</p>
        <div id="colors2"></div>
        <div id="colors3"></div>
      </div>
    </div>
  </div>

</body>

</html>

【问题讨论】:

您的 codepen 在我看来工作正常,您有什么要求? 如果你能看到第一页,红线扩展应该打开一半的下一页,其中一半从左侧动画出现,我卡在上面了。 根据 BuiltWith 搜索,他们似乎在使用 skrollr、history js 和 greensock。 关键是他们如何从动画中打开页面。查看cuberto的第一页。 div 展开的位置,然后在其中打开下一页并从左侧部分加载。 【参考方案1】:

我认为 pagepiling.js 可能是错误的方向,因为它只是在一页上制作动画,而不是在两页之间制作动画。

我过去处理此类事情的方式是使用像Barba.JS 这样的 PJAX 插件,它允许您在站点导航事件之间添加动画转换。 Barba 通过手动更改 URL、为新页面抓取新内容以及在新旧页面之间执行转换(您可以像 Cuberto 一样为元素制作动画!)来劫持页面更改。

如果这有帮助,或者我错过了重点,请告诉我,我会尝试相应地更新我的答案!

编辑:刚刚意识到这是一个七个月前的问题,但希望这对某人有所帮助!

【讨论】:

以上是关于jquery动画页面打桩的主要内容,如果未能解决你的问题,请参考以下文章

aos.js超赞页面滚动元素动画jQuery动画库

使用 JQuery 的水平页面动画

jquery animate方法动画效果没有

在jQuery中上下动画和图像

为啥 jQuery 必须接收 2 个对象:使用动画滚动整个页面时的 body 和 html?

如何让jquery动画效果在屏幕滚动到指定位置才执行