Synced Owls

Setup

This is an example of using two synced Owl Carousel. This is not out of the box function, rather a demo or even "how to".


$(document).ready(function() {



  var sync1 = $("#sync1");

  var sync2 = $("#sync2");



  sync1.owlCarousel({

    singleItem : true,

    slideSpeed : 1000,

    navigation: true,

    pagination:false,

    afterAction : syncPosition,

    responsiveRefreshRate : 200,

  });



  sync2.owlCarousel({

    items : 15,

    itemsDesktop      : [1199,10],

    itemsDesktopSmall     : [979,10],

    itemsTablet       : [768,8],

    itemsMobile       : [479,4],

    pagination:false,

    responsiveRefreshRate : 100,

    afterInit : function(el){

      el.find(".owl-item").eq(0).addClass("synced");

    }

  });



  function syncPosition(el){

    var current = this.currentItem;

    $("#sync2")

      .find(".owl-item")

      .removeClass("synced")

      .eq(current)

      .addClass("synced")

    if($("#sync2").data("owlCarousel") !== undefined){

      center(current)

    }

  }



  $("#sync2").on("click", ".owl-item", function(e){

    e.preventDefault();

    var number = $(this).data("owlItem");

    sync1.trigger("owl.goTo",number);

  });



  function center(number){

    var sync2visible = sync2.data("owlCarousel").owl.visibleItems;

    var num = number;

    var found = false;

    for(var i in sync2visible){

      if(num === sync2visible[i]){

        var found = true;

      }

    }



    if(found===false){

      if(num>sync2visible[sync2visible.length-1]){

        sync2.trigger("owl.goTo", num - sync2visible.length+2)

      }else{

        if(num - 1 === -1){

          num = 0;

        }

        sync2.trigger("owl.goTo", num);

      }

    } else if(num === sync2visible[sync2visible.length-1]){

      sync2.trigger("owl.goTo", sync2visible[1])

    } else if(num === sync2visible[0]){

      sync2.trigger("owl.goTo", num-1)

    }

    

  }



});


<div id="sync1" class="owl-carousel">

  <div class="item"><h1>1</h1></div>

  <div class="item"><h1>2</h1></div>

  <div class="item"><h1>3</h1></div>

  <div class="item"><h1>4</h1></div>

  <div class="item"><h1>5</h1></div>

  <div class="item"><h1>6</h1></div>

  <div class="item"><h1>7</h1></div>

  <div class="item"><h1>8</h1></div>

  <div class="item"><h1>9</h1></div>

  <div class="item"><h1>10</h1></div>

  <div class="item"><h1>11</h1></div>

  <div class="item"><h1>12</h1></div>

  <div class="item"><h1>13</h1></div>

  <div class="item"><h1>14</h1></div>

  <div class="item"><h1>15</h1></div>

  <div class="item"><h1>16</h1></div>

  <div class="item"><h1>17</h1></div>

  <div class="item"><h1>18</h1></div>

  <div class="item"><h1>19</h1></div>

  <div class="item"><h1>20</h1></div>

  <div class="item"><h1>21</h1></div>

  <div class="item"><h1>22</h1></div>

  <div class="item"><h1>23</h1></div>

</div>

<div id="sync2" class="owl-carousel">

  <div class="item"><h1>1</h1></div>

  <div class="item"><h1>2</h1></div>

  <div class="item"><h1>3</h1></div>

  <div class="item"><h1>4</h1></div>

  <div class="item"><h1>5</h1></div>

  <div class="item"><h1>6</h1></div>

  <div class="item"><h1>7</h1></div>

  <div class="item"><h1>8</h1></div>

  <div class="item"><h1>9</h1></div>

  <div class="item"><h1>10</h1></div>

  <div class="item"><h1>11</h1></div>

  <div class="item"><h1>12</h1></div>

  <div class="item"><h1>13</h1></div>

  <div class="item"><h1>14</h1></div>

  <div class="item"><h1>15</h1></div>

  <div class="item"><h1>16</h1></div>

  <div class="item"><h1>17</h1></div>

  <div class="item"><h1>18</h1></div>

  <div class="item"><h1>19</h1></div>

  <div class="item"><h1>20</h1></div>

  <div class="item"><h1>21</h1></div>

  <div class="item"><h1>22</h1></div>

  <div class="item"><h1>23</h1></div>

</div>


#sync1 .item{

    background: #0c83e7;

    padding: 80px 0px;

    margin: 5px;

    color: #FFF;

    -webkit-border-radius: 3px;

    -moz-border-radius: 3px;

    border-radius: 3px;

    text-align: center;

}

#sync2 .item{

    background: #C9C9C9;

    padding: 10px 0px;

    margin: 5px;

    color: #FFF;

    -webkit-border-radius: 3px;

    -moz-border-radius: 3px;

    border-radius: 3px;

    text-align: center;

    cursor: pointer;

}

#sync2 .item h1{

  font-size: 18px;

}

#sync2 .synced .item{

  background: #0c83e7;

}



More Demos