Owl Carousel 2 Nav on Sides
Asked Answered
K

8

42

Hi I'm using Owl Carousel version 2 and can't find an example to put the navigation on the sides of the carousel like right and left chevrons or arrows. How do you do it?

Kriskrischer answered 5/11, 2016 at 20:6 Comment(0)
E
76

I just did this yesterday:)

Firstly make sure nav is turned on in the config

https://owlcarousel2.github.io/OwlCarousel2/docs/api-options.html

   $('#_samewidth_images').owlCarousel({
      margin:10,
      autoWidth:false,
      nav:true,
      items:4,
      navText : ['<i class="fa fa-angle-left" aria-hidden="true"></i>','<i class="fa fa-angle-right" aria-hidden="true"></i>']
  })

This will inject the controls into the DOM, see

https://owlcarousel2.github.io/OwlCarousel2/docs/api-classes.html

<div class="owl-carousel owl-theme owl-loaded">
    <div class="owl-stage-outer">
        <div class="owl-stage">
            <div class="owl-item">...</div>
            <div class="owl-item">...</div>
            <div class="owl-item">...</div>
        </div>
    </div>
    <div class="owl-controls">
        <div class="owl-nav">
            <div class="owl-prev">prev</div>
            <div class="owl-next">next</div>
        </div>
        <div class="owl-dots">
            <div class="owl-dot active"><span></span></div>
            <div class="owl-dot"><span></span></div>
            <div class="owl-dot"><span></span></div>
        </div>
    </div>
</div>

Next use CSS to position the Next and Prev controls, this is what I used:

.owl-prev {
    width: 15px;
    height: 100px;
    position: absolute;
    top: 40%;
    margin-left: -20px;
    display: block !important;
    border:0px solid black;
}

.owl-next {
    width: 15px;
    height: 100px;
    position: absolute;
    top: 40%;
    right: -25px;
    display: block !important;
    border:0px solid black;
}
.owl-prev i, .owl-next i {transform : scale(1,6); color: #ccc;}

For my icons I used Font Awesome but you could use anything similar. Note the navText in the javascript code, this is where you put your custom HTML. I guess you could use an image too (or put it in the background of the .owl-next and .owl-prev divs. Note I used transform to make my arrows higher.

Erotogenic answered 6/11, 2016 at 12:52 Comment(7)
This classic KevinSol, Thanks.Kriskrischer
why fa-angle-left appearing as vertical bar?Kriskrischer
Do you mean A) a perfect vertical line, or is it B) a deformed > or < ?? If B, that is that way I wanted it, just remove the transform CSS rule. If A, have you included the font-awesome.min.css file?Erotogenic
For something very basic you can try navText : ['&lt;','&gt;'], in the javascriptErotogenic
@Erotogenic Wow.. this is awesome!! Didn't have to change anything in css.. Just copy pasted your code and it worked like charm!! Thanks :)Vortumnus
The arrows get cut off when page has a widthLinseylinseywoolsey
another tip: if the total number of slides is less than the number of items shown at once, then the navs or dots is auto disabledShulamite
S
22

Just a little bit improvment from @KevinSol answer above.

https://mcmap.net/q/382386/-owl-carousel-2-nav-on-sides

This is my JS code:

    $('.owl-carousel').owlCarousel({
      loop:true,
      margin:10,
      nav:true,
      navText : ['<i class="fa fa-angle-left" aria-hidden="true"></i>','<i class="fa fa-angle-right" aria-hidden="true"></i>'],
    });

and my CSS code:

    .owl-prev, .owl-next {
        width: 15px;
        height: 100px;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        display: block !important;
        border:0px solid black;
    }
    .owl-prev { left: -20px; }
    .owl-next { right: -20px; }
    .owl-prev i, .owl-next i {transform : scale(2,5); color: #ccc;}
Sharynshashlik answered 29/1, 2019 at 1:22 Comment(1)
Much cleaner.. ThanksHessite
A
5

Customize Owl Carousel 2 Navigation Arrows

Source Link

enter image description here

Working Demo Link

Update the navText property

    $('.owl-carousel').owlCarousel({
        margin: 10,
        nav: true,
        navText:["<div class='nav-btn prev-slide'></div>","<div class='nav-btn next-slide'></div>"],
        responsive: {
            0: {
                items: 1
            },
            600: {
                items: 3
            },
            1000: {
                items: 3
            }
        }
    });

Add CSS Style

.carousel-wrap {
    width: 1000px;
    margin: auto;
    position: relative;
}
.owl-carousel .owl-nav{
    overflow: hidden;
    height: 0px;
}

.owl-theme .owl-dots .owl-dot.active span, 
.owl-theme .owl-dots .owl-dot:hover span {
    background: #2caae1;
}


.owl-carousel .item {
    text-align: center;
}
.owl-carousel .nav-btn{
    height: 47px;
    position: absolute;
    width: 26px;
    cursor: pointer;
    top: 100px !important;
}

.owl-carousel .owl-prev.disabled,
.owl-carousel .owl-next.disabled{
    pointer-events: none;
    opacity: 0.2;
}

.owl-carousel .prev-slide{
    background: url(nav-icon.png) no-repeat scroll 0 0;
    left: -33px;
}
.owl-carousel .next-slide{
    background: url(nav-icon.png) no-repeat scroll -24px 0px;
    right: -33px;
}
.owl-carousel .prev-slide:hover{
    background-position: 0px -53px;
}
.owl-carousel .next-slide:hover{
    background-position: -24px -53px;
}

span.img-text {
    text-decoration: none;
    outline: none;
    transition: all 0.4s ease;
    -webkit-transition: all 0.4s ease;
    -moz-transition: all 0.4s ease;
    -o-transition: all 0.4s ease;
    cursor: pointer;
    width: 100%;
    font-size: 23px;
    display: block;
    text-transform: capitalize;
}
span.img-text:hover {
    color: #2caae1;
}
Anyaanyah answered 29/4, 2020 at 8:15 Comment(0)
A
3

HTML markup

 <div id="slider" class="owl-carousel">
        <div class="item">
            <img src="assets/img/header-img.jpg" alt="" />
        </div>
        <div class="item">
            <img src="assets/img/header-img.jpg" alt="" />
        </div>
        <div class="item">
            <img src="assets/img/header-img.jpg" alt="" />
        </div>
        <div class="item">
            <img src="assets/img/header-img.jpg" alt="" />
        </div>
        <div class="item">
            <img src="assets/img/header-img.jpg" alt="" />
        </div>
    </div>

Css style slider is class name

#slider .owl-nav div.owl-prev, 
#slider .owl-nav div.owl-next {
    color: #fff;
    font-size: 18px;
    margin-top: -20px;
    position: absolute;
    top: 50%;
    text-align: center;
    line-height: 39px;
    opacity: 0;
    border:1px solid #fff;
    width: 40px;
    height: 40px;
}
#slider .owl-nav div.owl-prev{
    left: 10%;
    -webkit-transition: 0.4s;
    -moz-transition: 0.4s;
    -o-transition: 0.4s;
    -ms-transition: 0.4s;
}
#slider .owl-nav div.owl-next {
    right: 10%;
    -webkit-transition: 0.4s;
    -moz-transition: 0.4s;
    -o-transition: 0.4s;
    -ms-transition: 0.4s;
}
#slider:hover .owl-nav div.owl-next{
    right: 2%;
    -webkit-transition: 0.4s;
    -moz-transition: 0.4s;
    -o-transition: 0.4s;
    -ms-transition: 0.4s;
    opacity: 1;
}
#slider:hover .owl-nav div.owl-prev{
    left: 2%;
    -webkit-transition: 0.4s;
    -moz-transition: 0.4s;
    -o-transition: 0.4s;
    -ms-transition: 0.4s;
    opacity: 1;
}
#slider:hover .owl-nav div.owl-next:hover,
#slider:hover .owl-nav div.owl-prev:hover{
    color:#fff;
    background: #0C94B8;
    border: 1px solid #0C94B8;
}

slider activation

$('#slider').owlCarousel({
        loop:true,
        items: 1,
        margin:10,
        autoplay: true,
        nav:true,
        navText: ['<i class="fa fa-angle-left" aria-hidden="true"></i>', '<i class="fa fa-angle-right" aria-hidden="true"></i>']
    })
Allamerican answered 24/3, 2018 at 2:47 Comment(0)
E
2

I recommend using this simple style:

.owl-nav button {
    position: absolute;
    top: 0;
    bottom: 0;
}

.owl-prev {
    right: -25px;
}

.owl-next {
    left: -25px;
}

.owl-nav button i {
    font-size: 25px;
    text-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
}

And the following config:

nav: true,
navText: ["<i class='fa fa-chevron-left'></i>","<i class='fa fa-chevron-right'></i>"],
Elector answered 19/9, 2021 at 10:6 Comment(0)
M
1

here is my code for this you need to install bootstrap code in .HTML file i used ngx-owl-carousel-o for this and installed using npm

Owl-carousel-o link

<div class="position-relative">
<owl-carousel-o class="" [options]="customOptions" #owlCar>
    <ng-container *ngFor="let slide of slides   ">
        <ng-template carouselSlide id="slide.id">
            <div class="slider">
                <img class="hvr-grow-shadow p-2 rounded-4" (click)="getid(slide?.id)" [src]="slide?.image"
                    [height]="200" alt="slide.alt" title="slide.title">
            </div>
        </ng-template>
    </ng-container>
</owl-carousel-o>
<div class="container-fluid">
    <div class=" position-absolute top-50 start-0 translate-middle-y" style="z-index: 1;">
        <a class="btn" (click)="owlCar.prev()"><i class="fa fa-angle-left"
                style="font-size: xxx-large; color: white;" aria-hidden="true"></i></a>
    </div>
    <div class=" position-absolute top-50 end-0 translate-middle-y" style="z-index: 1;">
        <a class="btn" (click)="owlCar.prev()"><i class="fa fa-angle-right"
                style="font-size: xxx-large; color: white;" aria-hidden="true"></i></a>
    </div>
</div>

and my code in .ts file is

customOptions: OwlOptions = {
loop: true,
mouseDrag: false,
touchDrag: false,
pullDrag: false,
dots: false,
navSpeed: 100,
autoplay: false,
center: true,
autoplayHoverPause: false,
// navText: [ '<i class="fa fa-angle-left" aria-hidden="true"></i>',
//     '<i class="fa fa-angle-right" aria-hidden="true"></i>'],
responsive: {
  0: {
    items: 1
  },
  400: {
    items: 2
  },
  740: {
    items: 3
  },
  940: {
    items: 4
  }
},
// nav: true
}

Hope its Help image in browser

Mho answered 7/12, 2022 at 8:53 Comment(0)
A
0

all-slider is class name

 #all-slide .owl-nav div.owl-prev, 
    #all-slide .owl-nav div.owl-next {
        color: #fff;
        font-size: 18px;
        margin-top: -20px;
        position: absolute;
        top: 50%;
        text-align: center;
        line-height: 39px;
        opacity: 0;
        border:1px solid #fff;
        width: 40px;
        height: 40px;
    }
    #all-slide .owl-nav div.owl-prev{
        left: 10%;
        -webkit-transition: 0.4s;
        -moz-transition: 0.4s;
        -o-transition: 0.4s;
        -ms-transition: 0.4s;
    }
    #all-slide .owl-nav div.owl-next {
        right: 10%;
        -webkit-transition: 0.4s;
        -moz-transition: 0.4s;
        -o-transition: 0.4s;
        -ms-transition: 0.4s;
    }
    #all-slide:hover .owl-nav div.owl-next{
        right: 2%;
        -webkit-transition: 0.4s;
        -moz-transition: 0.4s;
        -o-transition: 0.4s;
        -ms-transition: 0.4s;
        opacity: 1;
    }
    #all-slide:hover .owl-nav div.owl-prev{
        left: 2%;
        -webkit-transition: 0.4s;
        -moz-transition: 0.4s;
        -o-transition: 0.4s;
        -ms-transition: 0.4s;
        opacity: 1;
    }
    #all-slide:hover .owl-nav div.owl-next:hover,
    #all-slide:hover .owl-nav div.owl-prev:hover{
        color:#fff;
        background: #0C94B8;
        border: 1px solid #0C94B8;
    }`enter code here`
Allamerican answered 24/3, 2018 at 2:41 Comment(0)
R
0

If you just want to do it with some CSS and one arrow in one adge, the other in the other edge without having a margin, but it covering the slider you can use this CSS:

.owl-nav button span {
    font-size: 60px;
    padding: 0px 20px;
}

button.owl-prev {
    float: left;
}

button.owl-next {
    float: right;
}

.owl-nav {
    width: 100vw;
    position: absolute;
}

.owl-carousel.owl-theme.owl-loaded.owl-drag {
    display: flex;
    justify-content: center;
    align-items: center;
}
Rahmann answered 26/3, 2021 at 17:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.