Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.01.2016, 14:09
Аспирант
Отправить личное сообщение для dima-kruglyak Посмотреть профиль Найти все сообщения от dima-kruglyak
 
Регистрация: 20.01.2016
Сообщений: 39

Запуск SVG отрисовки при скролле
Помоги пожалуйста, как запустить SVG отрисовку при скролле:

<svg width="450px" height="160px">
<text class="anim-1" x="0" y="158px" font-size="200px" stroke="#222121" stroke-width="1" fill-opacity="0">WEB</text>
</svg>
<svg width="300px" height="20px">
<line class="anim-2" fill-opacity="0" stroke="#000" stroke-width="1" x1="20" x2="300" y1="18" y2="18"/>
</svg>

и сss

.anim-1 {
stroke-dasharray: 1000;
stroke-dashoffset: 1000;
animation: dash 2.5s linear alternate forwards ;
}

@keyframes dash {
0% {
stroke-dashoffset: 1000;
}

90% {
fill-opacity: 0;
}

100% {
stroke-dashoffset: 0;
fill-opacity: 1;
}
}

.anim-2 {
stroke-dasharray: 1000;
stroke-dashoffset: 1000;
animation: dash2 4.5s linear alternate forwards ;
}

@keyframes dash2 {
0% {
fill-opacity: 0;
}

50% {
fill-opacity: 0;
stroke-dashoffset: 1000;
}

100% {
stroke-dashoffset: 0;
fill-opacity: 1;
}
}
Ответить с цитированием
  #2 (permalink)  
Старый 20.01.2016, 15:29
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
    <style type="text/css">
        .anim-1 {
            stroke-dasharray: 1000;
            stroke-dashoffset: 1000;
            animation: dash 2.5s linear alternate forwards ;
       }

       @keyframes dash {
            0% {
               stroke-dashoffset: 1000;	
            }

            90% {
                fill-opacity: 0;
            }

            100% {
                stroke-dashoffset: 0;
                fill-opacity: 1;
            }
       }

       .anim-2 {
            stroke-dasharray: 1000;
            stroke-dashoffset: 1000;
            animation: dash2 4.5s linear alternate forwards ;
       }

      @keyframes dash2 {
         0% {
             fill-opacity: 0;   
         }

         50% {
            fill-opacity: 0;
            stroke-dashoffset: 1000;
         }

         100% {
            stroke-dashoffset: 0;
            fill-opacity: 1;
         }
      }  
    </style>
    <script type="text/javascript">
        function goSVG() {
           var buff = document.getElementById('svgBlock');
           buff.innerHTML = buff.innerHTML;
  
        }
    </script>
</head>
<body onscroll="goSVG();">
   <div id="svgBlock">
      <svg width="450px" height="160px"> 
         <text id="svgText" class="anim-1" x="0" y="158px" font-size="200px" stroke="#222121" stroke-width="1" fill-opacity="0">WEB</text> 
     </svg>
      <svg width="300px" height="20px"> 
         <line class="anim-2" fill-opacity="0" stroke="#000" stroke-width="1" x1="20" x2="300" y1="18" y2="18"/>	
      </svg>
   </div>
</body>
</html>

Последний раз редактировалось Dilettante_Pro, 20.01.2016 в 15:39.
Ответить с цитированием
  #3 (permalink)  
Старый 20.01.2016, 15:37
Аспирант
Отправить личное сообщение для dima-kruglyak Посмотреть профиль Найти все сообщения от dima-kruglyak
 
Регистрация: 20.01.2016
Сообщений: 39

Спасибо, а можете сделать что-бы анимация один раз запускалась, а то сейчас когда скроллиш, она постоянно запускается?
Ответить с цитированием
  #4 (permalink)  
Старый 20.01.2016, 15:56
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

dima-kruglyak,
Что значит - постоянно? Если вы нажали на скроллбар и двигаете без остановки и не отпуская, то запускается один раз, а если остановились и снова начали двигаться - то это уже новый скролл, и, соответственно, запуск.
Ответить с цитированием
  #5 (permalink)  
Старый 20.01.2016, 16:31
Аспирант
Отправить личное сообщение для dima-kruglyak Посмотреть профиль Найти все сообщения от dima-kruglyak
 
Регистрация: 20.01.2016
Сообщений: 39

Вот смотрите, когда находишься в блоке с анимацией и просто колесиком мышки верх в низ на 1px, анимация постояно запускается.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
<style type="text/css">
body {
height:2000px;
}

.anim-1 {
stroke-dasharray: 1000;
stroke-dashoffset: 1000;
animation: dash 2.5s linear alternate forwards ;
}

@keyframes dash {
0% {
stroke-dashoffset: 1000;
}

90% {
fill-opacity: 0;
}

100% {
stroke-dashoffset: 0;
fill-opacity: 1;
}
}

.anim-2 {
stroke-dasharray: 1000;
stroke-dashoffset: 1000;
animation: dash2 4.5s linear alternate forwards ;
}

@keyframes dash2 {
0% {
fill-opacity: 0;
}

50% {
fill-opacity: 0;
stroke-dashoffset: 1000;
}

100% {
stroke-dashoffset: 0;
fill-opacity: 1;
}
}
</style>
<script type="text/javascript">
function goSVG() {
var buff = document.getElementById('svgBlock');
buff.innerHTML = buff.innerHTML;

}
</script>
</head>
<body onscroll="goSVG();">
<div style="height:500px;"></div>

<div id="svgBlock">
<svg width="450px" height="160px">
<text id="svgText" class="anim-1" x="0" y="158px" font-size="200px" stroke="#222121" stroke-width="1" fill-opacity="0">WEB</text>
</svg>
<svg width="300px" height="20px">
<line class="anim-2" fill-opacity="0" stroke="#000" stroke-width="1" x1="20" x2="300" y1="18" y2="18"/>
</svg>
</div>
</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 20.01.2016, 17:01
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

dima-kruglyak,
Каждый щелчок колесиком - это отдельное событие скролл.
Точно так же отдельное событие скролл - это наведение указателя мыши на скроллбар, нажатие левой кнопки и движение до остановки или отпускания кнопки.
Ответить с цитированием
  #7 (permalink)  
Старый 20.01.2016, 17:16
Аспирант
Отправить личное сообщение для dima-kruglyak Посмотреть профиль Найти все сообщения от dima-kruglyak
 
Регистрация: 20.01.2016
Сообщений: 39

Можно это исправить, что бы запуск был только в когда пользователь находится в нужном блоке?
Ответить с цитированием
  #8 (permalink)  
Старый 20.01.2016, 17:17
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

dima-kruglyak,
Кстати, о том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #9 (permalink)  
Старый 20.01.2016, 17:19
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от dima-kruglyak Посмотреть сообщение
Можно это исправить, что бы запуск был только в когда пользователь находится в нужном блоке?
Можете почитать https://learn.javascript.ru/onscroll
Ответить с цитированием
  #10 (permalink)  
Старый 20.01.2016, 17:28
Аспирант
Отправить личное сообщение для dima-kruglyak Посмотреть профиль Найти все сообщения от dima-kruglyak
 
Регистрация: 20.01.2016
Сообщений: 39

ЛС
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск события при наведении Bezlepkin Общие вопросы Javascript 1 26.01.2011 21:25
Запуск выполнения PHP при нажатие на кнопку??? Abibas220 Общие вопросы Javascript 1 05.01.2011 12:05
Запуск при редиректе некой js функции Dorsaj Элементы интерфейса 0 22.10.2010 16:05
Изменение стиля родительского элемента при :hover дочернего lanzs Элементы интерфейса 2 16.10.2010 13:28
svg. обработка событий amigo* Элементы интерфейса 0 23.06.2010 22:31