Как играть в карусель bootstrap 4 при наведении мышки С отключенным автовоспроизведением при загрузке страницы?

Да, он плохо сформирован. Вот почему:

Функция constexpr должна быть определена (не просто объявлена) перед использованием в постоянном выражении.

Итак, например:

constexpr int f(); // declare f
constexpr int x = f(); // use f - ILLEGAL, f not defined
constexpr int f() { return 5; } // define f, too late
Определения функций

внутри спецификатора класса (а также инициализаторы и параметры по умолчанию) по существу разбираются в порядке, таком как они были определены вне класса.

Итак, это:

struct X {
  constexpr static int size() { return 5; }
  static const int array[size()]; 
};

Анализируется в следующем порядке:

struct X {
   constexpr inline static int size(); // function body defered
   static const int array[size()];  // <--- POINT A
};

constexpr inline int X::size() { return 5; }

То есть разбор тел функций откладывается до тех пор, пока не будет указан спецификатор класса.

Цель этой отсрочки разбора тела функции так что тела функций могут перенаправлять ссылочные классы, еще не объявленные в этой точке, а также поэтому они могут использовать свой собственный класс как полный тип:

struct X
{
    void f() { T t; /* OK */ }
    typedef int T;
};

По сравнению с областью пространства имен:

void f() { T t; /* error, T not declared */ }
typedef int T;

На POINT A компилятор еще не имеет определения size(), поэтому он не может его вызвать. Для производительности компиляции constexpr функции должны быть определены перед их использованием в блоке трансляции перед вызовом во время компиляции, иначе компилятор должен будет сделать несколько проходов только для «ссылки» постоянных выражений для оценки.

0
задан Raymond Zhang 17 January 2019 в 07:03
поделиться

1 ответ

для этого нужно использовать свойство data-*, в HTML добавьте

data-pause = "true"

, так что теперь вы можете делать паузу в запуске.

для включения автозапуска при mouseEnter и отключения автозапуска при mouseLeave, вы можете использовать метод .on в Jquery

$(".carousel").on("mouseenter",function() {
  $(this).carousel('cycle');
}).on("mouseleave", function() {
  $(this).carousel('pause');
});

для управления интервалом между функциями mouseenter и mouseleave, вы можете снова использовать свойство HTML data- * [ 1111]

data-interval = "200"

LIVE SNIPPET

$(".carousel").on("mouseenter",function() {
  $(this).carousel('cycle');
}).on("mouseleave", function() {
  $(this).carousel('pause');
});
[112 ]

0
ответ дан Nisharg Shah 17 January 2019 в 07:03
поделиться
Другие вопросы по тегам:

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