Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2018, 10:01
Аватар для Annaboka
Новичок на форуме
Отправить личное сообщение для Annaboka Посмотреть профиль Найти все сообщения от Annaboka
 
Регистрация: 10.03.2018
Сообщений: 4

Остановка анимации по клику
Добрый день!
Пишу диплом по граф дизайну и пришлось столкнуться в программированием, хотя полный ноль в этом.
Нужно сделать анимацию - зацикленная смена нескольких картинок (по сути gif). По клику на определенную картинку анимация останавливается на этой картинке и раскрывается дополнительная текстовая информация. По повторному клику запускается заново. И так для каждой из картинок.
Господа разработчики, помогите плииииз!
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2018, 10:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Annaboka
по сути gif
Если gif, то никак, а если показываются картинки из массива, то можно.
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2018, 11:06
Аватар для Annaboka
Новичок на форуме
Отправить личное сообщение для Annaboka Посмотреть профиль Найти все сообщения от Annaboka
 
Регистрация: 10.03.2018
Сообщений: 4

Да, понятно, что gif не дает такой возможности. Я теперь в поисках алгоритма, как это все реализовать. С какой стороны подступиться
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2018, 11:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Annaboka
в поисках алгоритма
алгоритм обычного слайдера, заведите переменную для индекса активной картинки и меняйте только его.
основные функции, одна изменить индекс, вторая показать картинку с этим индексом +- инфо.
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2018, 12:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

рони,
видимо не это нужно коли речь об "остановить анимацию". Щелчок по анимации - остановили таймер, второй щелчок - запустили вновь.
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2018, 12:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от laimas
Щелчок по анимации - остановили таймер
правильно, но это ничего не меняет из сказанного выше, но можно и без остановки таймера (не изменять индекс на паузе)
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2018, 12:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от рони
но это ничего не меняет из сказанного выше
Ну а зачем индекс, если анимация, а не слайдер, а значит таймер с частотой сек/кадров, щелкнули, остановилось, это и будет кадр выбранный. Я так понял.
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2018, 12:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от laimas
Я так понял.
всё верно, но решения могут быть разные.
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2018, 12:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от рони
решения могут быть разные.
ну да, если не дергать таймер, а сверху добавлять слой.

PS. Но тогда при удалении слоя, анимация не обязательно будет после выбранного кадра, значит код усложнится.
Ответить с цитированием
  #10 (permalink)  
Старый 10.03.2018, 13:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

автосмена картинок и стоп/старт по клику
laimas,
Annaboka,

вариант без остановки таймеров.(надобы прелоад добавить)
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .carousel{
    width: 350px;
    height: 170px;
    position: relative;
    opacity: 0;
     border-radius: 8px;
     box-sizing: border-box;
     border: #8B4513 2px solid;
     transition: opacity .8s ease-in;
     background-size: 350px 170px;
  }
  .carousel.show{
    opacity: 1;
  }
   .carousel.vertical{
    width: 170px;
    height: 350px;
    background-size: 170px 350px;
   }
   .carousel h1{

     color: #FFFFFF;
     opacity: 0;
     transition: .3s ease-in;
     text-align: center;
     bottom: 5px;
     margin:  auto 0;
     transform:  scale(0);
   }
   .carousel.pause h1{
     opacity: 1;
     transform:  scale(1);
   }
  </style>

  <script>
 window.addEventListener("DOMContentLoaded", function() {
    [].forEach.call(document.querySelectorAll(".carousel"), function(el) {
        var img = JSON.parse(el.dataset.src),
            text = JSON.parse(el.dataset.text);
            len = img.length,
            i = 0,
            p = el.dataset.pause || 5E3,
            h = document.createElement("h1");
        el.appendChild(h);

        function g() {
            el.style.backgroundImage = "url(" + img[i] + ")";
            h.textContent = text[i];
            el.classList.add("show");
            window.setTimeout(k, p);
        }
        g();

        function k() {
            el.classList.contains("pause") || (i = ++i % len, el.classList.remove("show"));
            window.setTimeout(g, 800);
        }
        el.addEventListener("click", function() {
            el.classList.toggle("pause");
        });
    });
});
  </script>
</head>

<body>
<div class="carousel" data-pause="3000"
data-src='["http://sunnytravel.by/upload/image/Tours/Nicca-karnaval.jpg",
"http://img-fotki.yandex.ru/get/5640/35900228.10c/0_7388e_3ab59b4a_XL.jpeg.jpg",
"http://1.bp.blogspot.com/-aleHkBUuqOI/VY0HrCytsXI/AAAAAAAAq1g/f2emGtdqdWo/s640/2015-06-05_0145.jpg",
"http://turj.ru/images/e/3/9/7/1/b641b8a77c.jpg"]' data-text='["карнавал", "Ницца", "маска", "праздник"]'>
</div>

</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поимать окончание анимации и вывести картинку. karssen Элементы интерфейса 2 10.12.2015 16:20
Начало анимации с места предыдущей анимации FanAizu (X)HTML/CSS 3 21.03.2014 12:39
Остановка/ возобновление анимации фона san256 jQuery 8 03.07.2012 17:27
Выполнения и остановка кода по клику Партизан Общие вопросы Javascript 11 13.05.2012 18:29
остановка анимации sdff Общие вопросы Javascript 10 27.10.2008 23:55