Пропадает тег svg из shadow-root при перестроении элементов слайдера?

Проблема: при перестроении(slidesToShow) элементов в slider slick из элементов slick-slide, тех элементов которые видны на экране пропадает тег svg из shadow-root(sprite) , как только они исчезнут с экрана тег появляется и иконка видна.
Где проблема: Chrome, Opera, Safari. Последнии версии.
Работает: ie 10,11. Edge, mozila последняя версия.
В тоже время в owl carousel 2 такой проблемы нет.
Стили к слайдера применялись только дефолтные, к svg никакие стили не добавлял.
@import "../../../../node_modules/normalize.css/normalize";
@import "../../../../node_modules/slick-carousel/slick/slick.scss";
@import "../../../../node_modules/slick-carousel/slick/slick-theme.scss";
@import "../../../../node_modules/owl.carousel/src/scss/owl.carousel.scss";
@import "../../../../node_modules/owl.carousel/src/scss/owl.theme.default.scss";


Разметка
.container 
		.slider.owl-theme.owl-carousel
			.item
				a(href="#")
					+icon('share')
			.item
				a(href="#")
					+icon('share')
			.item
				a(href="#")
					+icon('share')
		.slider1
			.item
				a(href="#")
					+icon('share')
			.item
				a(href="#")
					+icon('share')
			.item
				a(href="#")
					+icon('share')

Верхний слайдер owl carousel 2(иконки видны)
5c47028ddfa64950266037.png

Использую плагин svg4everybody.

Настройки двух слайдеров
$('.slider1').slick({
        slidesToShow: 3,
        responsive: [{
                breakpoint: 768,
                settings: {
                    slidesToShow: 2,
                }
            },
            {
                breakpoint: 576,
                settings: {
                    slidesToShow: 1,
                }
            }
        ]
    });
    $('.slider').owlCarousel({
        items: 3,
        responsive: {
            0: {
                items: 1
            },
            576: {
                items: 2
            },
            768: {
                items: 3
            }
        }
    });
});

SVG task
module.exports = function () {
    $.gulp.task('svg', () => {
        return $.gulp.src(svgPath.input)
            .pipe(svgmin({
                js2svg: {
                    pretty: true
                }
            }))
            .pipe(cheerio({
                run: function ($) {
                    $('[fill]').removeAttr('fill');
                    $('[stroke]').removeAttr('stroke');
                    $('[style]').removeAttr('style');
                },
                parserOptions: {xmlMode: true}
            }))
            .pipe(replace('>', '>'))
            .pipe(svgSprite({
                mode: {
                    symbol: {
                        sprite: "sprite.svg"
                    }
                }
            }))
            .pipe($.gulp.dest(svgPath.output));
    });
};
  • Вопрос задан
  • 169 просмотров
Решения вопроса 1
SidorovAN
@SidorovAN Автор вопроса
Проблема решена.
В плагин svg4everybody добавил опции:
nosvg: true, // shiv and elements and use image fallbacks
polyfill: true // polyfill elements for External Content
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы