Я использую Angular 17 с пакетом ngx-owl-carousel-0:17.0.0.
У меня есть настройки customOptions:
customOptions: OwlOptions = {
loop: true,
mouseDrag: false,
touchDrag: false,
pullDrag: false,
dots: false,
navSpeed: 700,
margin:10,
navText: ["<", ">"],
responsive: {
0: {
items: 1
},
400: {
items: 2
},
760: {
items: 3
},
1000: {
items: 4
}
},
nav: true
}
и на данный момент на моей странице у меня есть шаблон по умолчанию:
<owl-carousel-o [options] = "customOptions">
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/92c952" alt = "img 1" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/771796" alt = "img 2" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/24f355" alt = "img 3" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/d32776" alt = "img 4" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/f66b97" alt = "img 5" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/56a8c2" alt = "img 6" />
</div>
</ng-template>
</owl-carousel-o>
и это мой результат. Вы можете видеть кнопки навигации внизу карусели, но это не конец света, я не могу разместить их слева и справа от самой карусели.
в моем файле Angular.json у меня есть:
"styles": [
"src/styles.css",
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"node_modules/ngx-owl-carousel-o/lib/styles/prebuilt-themes/owl.carousel.min.css",
"node_modules/ngx-owl-carousel-o/lib/styles/prebuilt-themes/owl.theme.default.min.css"
],
"scripts": [
"node_modules/jquery/dist/jquery.min.js"
]
Мы можем использовать приведенный ниже CSS, чтобы добиться того, чего вы хотите. Я требую position: absolute
наложить навигацию на слайды, чтобы получить желаемый эффект!
::ng-deep .owl-carousel {
position: relative !important;
}
::ng-deep .owl-nav {
position: absolute !important;
top: 0 !important;
left: 0 !important;
bottom: 0 !important;
right: 0 !important;
display: flex !important;
align-items: center !important;
justify-content: space-between !important;
}
Если вы не являетесь поклонником ::ng-deep
, вы можете переместить стили в глобальные стили и обернуть их в класс, чтобы они применялись условно в зависимости от класса!
import { Component } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';
import { CarouselModule, OwlOptions } from 'ngx-owl-carousel-o';
import 'zone.js';
@Component({
selector: 'app-root',
styles: [
`
::ng-deep .owl-carousel {
position: relative !important;
}
::ng-deep .owl-nav {
position: absolute !important;
top: 0 !important;
left: 0 !important;
bottom: 0 !important;
right: 0 !important;
display: flex !important;
align-items: center !important;
justify-content: space-between !important;
}
`,
],
standalone: true,
imports: [CarouselModule],
template: `
<owl-carousel-o [options] = "customOptions">
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/92c952" alt = "img 1" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/771796" alt = "img 2" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/24f355" alt = "img 3" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/d32776" alt = "img 4" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/f66b97" alt = "img 5" />
</div>
</ng-template>
<ng-template carouselSlide>
<div class = "slide">
<img src = "https://via.placeholder.com/600/56a8c2" alt = "img 6" />
</div>
</ng-template>
</owl-carousel-o>
`,
})
export class App {
customOptions: OwlOptions = {
loop: true,
mouseDrag: false,
touchDrag: false,
pullDrag: false,
dots: false,
navSpeed: 700,
margin: 10,
navText: ['<', '>'],
responsive: {
0: {
items: 1,
},
400: {
items: 2,
},
760: {
items: 3,
},
1000: {
items: 4,
},
},
nav: true,
};
}
bootstrapApplication(App);
Спасибо. Мне нужно было только представить CSS для `::ng-deep .owl-nav`
По умолчанию элемент
.owl-nav
уже должен занимать всю ширину, но у него установленtext-align: center
, что заставляет встроенный элемент кнопки перемещаться в центр. Применитеdisplay: flex; justify-content: space-between;
, тогда они должны выровняться по обеим сторонам.