Изменение цвета стрелок в карусели ng-bootstrap

Я создаю карусель с помощью ng-bootstrap, я хочу изменить цвета стрелок или изображение с белого на черный, потому что у меня есть белые фоновые изображения, и они невидимы. Моя проблема в том, что я не могу получить диапазон, я не знаю, как это назвать в scss. Я использую bootstrap 4 и ng-bootstrap для углового https://ng-bootstrap.github.io/#/components/carousel/examples. Когда я меняю URL-адрес изображения в консоли, он работает. Пытался достать стрелы напрямую, но ничего не получается.

Мой код:

<div class = "col-lg-6">
      <div class = "imageCarousel">
        <ng-container *ngIf = "product.images">
          <ngb-carousel>
            <ng-template id = "imageSlide" ngbSlide *ngFor = "let image of product.images | slice: 1">
              <img [src] = "image">

            </ng-template>

          </ngb-carousel>
        </ng-container>
      </div>
    </div>

scss:

.imageCarousel {
        max-height: 500px;
        text-align: center;
        color: $color2;
        .carousel .slide {
            width: 50px;
            height: 50px;
            background-image: url("https://storage.googleapis.com/staging.pc-shop-260af.appspot.com/ic_keyboard_arrow_right_black_24px.svg");
        }

        img {
            // border: 2px solid blue;
            max-width: 100%;
            max-height: 400px;
        }
    }
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
9 786
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

ngb-carousel использует изображения SVG в качестве элементов управления, вы можете переопределить это с помощью собственного изображения кнопки prev и next:

.carousel-control-prev-icon{
   background-image: url('https://apufpel.com.br/assets/img/seta_prim.png')
}
.carousel-control-next-icon{
  background-image: url('https://apufpel.com.br/assets/img/seta_ult.png')
}

да, проблема в том, что я не зеленый с scss, я пробовал это и все равно ничего

user7776077 20.03.2018 18:07

как я уже сказал выше, "я пытался получить стрелы напрямую"

user7776077 20.03.2018 18:08

Можете ли вы загрузить скрипку?

Eduardo Cezarino 20.03.2018 18:11

Я связал это с firebase db, не могу: /

user7776077 20.03.2018 18:12

загрузить версию mvp без подключения, только с помощью ползунка.

Eduardo Cezarino 20.03.2018 18:13

а что с угловым?

user7776077 20.03.2018 18:15

Проблема была в том, что я не могу стилизовать эти стрелки в стилях моих компонентов. Глобальный style.scss работал. В любом случае ваш ответ работает, но вы можете изменить его, чтобы использовать глобальный ответ, и я приму

user7776077 20.03.2018 18:42

При просмотре этого элемента управления по предоставленной ссылке вы можете увидеть, что к вашим двум кнопкам прикреплены классы.

Inspection

У этих стрелок есть атрибут фонового изображения. Переопределите этот класс для этого атрибута в своем собственном файле css.

Я сейчас встаю из-за своего стола. Можете ли вы убедиться, что изменение атрибута в инспекторе работает?

Stevenfowler16 20.03.2018 18:12

Да, я проверил, ничего не работает, я пытался добраться до этих стрелок, прямо к ним, даже вызвать их родителям и все равно ничего

user7776077 20.03.2018 18:16

Да, это решено, но иногда необходимо установить инкапсуляцию представления на None

@Component({
  selector: "app-builder",
  templateUrl: "./builder.component.html",
  styleUrls: ["./builder.component.css"],
  encapsulation: ViewEncapsulation.None
})

Спасибо - это сработало, так что я смог заставить работать локальный CSS иконок.

Connie H. 05.05.2019 00:11

Я попробовал ваше решение, и теперь локальный CSS работает, но стрелки не нажимают.

DeooK 02.07.2019 09:25

Ответ, данный Эдуардо (см. Выше), работает только в том случае, если для инкапсуляции установлено значение ViewEncapsulation.None, что может иметь непреднамеренные побочные эффекты для других аспектов вашего CSS.

Вместо этого можно использовать псевдокласс :: ng-deep для нацеливания на конкретный рассматриваемый CSS. В вашем файле scss используйте следующее:

::ng-deep .carousel-control-prev-icon{
  background-image: url('your-replacement.svg');
}
::ng-deep .carousel-control-next-icon{
  background-image: url('your-replacement.svg');
}

Добро пожаловать в Stack Overflow. Пожалуйста, пройдите экскурсию, чтобы узнать, как работает Stack Overflow, и прочтите Как задать вопрос о том, как улучшить качество вашего вопроса.

Mohsen Sedaghat Fard 15.03.2020 15:07

Сначала я бы предложил перейти на ng-bootstrap v6 +, который правильно делает компонент ngb ViewEncapsulation как None, чтобы его можно было установить через глобальный CSS или через неинкапсулированный компонент CSS. См. (https://github.com/ng-bootstrap/ng-bootstrap/issues/3479).

Во-вторых, переопределите SVG, просто установив его снова и изменив свойство наполнять на любой желаемый цвет.

.carousel-control-next-icon {
   background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='rgb(50, 54, 57)' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e") !important;
}

или, в качестве альтернативы, вы можете инвертировать цвета, если вам просто нужно больше контраста:

.carousel-control-next-icon,
.carousel-control-prev-icon {
   filter: invert(1);
}

Установка инкапсуляция: ViewEncapsulation.None на вашем хост-компоненте - не лучшая практика. Более разумным решением будет внести эти изменения в записи ваших проектов styles.scss (или что-то еще, что указано в angular.json в качестве файла глобальных стилей).

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