Сова-карусель размещает следующее и предыдущее изображения ниже

Я использую 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"
]

По умолчанию элемент .owl-nav уже должен занимать всю ширину, но у него установлен text-align: center, что заставляет встроенный элемент кнопки перемещаться в центр. Примените display: flex; justify-content: space-between;, тогда они должны выровняться по обеим сторонам.

CBroe 25.04.2024 10:13
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
1
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мы можем использовать приведенный ниже 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);

Демо-версия Stackblitz

Спасибо. Мне нужно было только представить CSS для `::ng-deep .owl-nav`

bilpor 25.04.2024 12:11

Другие вопросы по теме