Javascript.RU

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

Анимация на чистом JS
Добрый день,

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

Мои мысли и предположения следующие:

Когда наш div будет равен текущим координатом, то мы вызываем class с css анимацией.

Вы меня строго не судите, только начал, ломаю голову.

Я это написал так(пример):

<!DOCTYPE html>
<html>
<head>
<style>
.second {
    transform: translate(0,-150px);
    -webkit-transform: translate(0,-150px);
    -o-transform: translate(0,-150px);
    -moz-transform: translate(0,-150px);
}
</style>
</head>
<body>
<div class="first"></div>
<div id='about' class="second"></div>
<div class="third"></div>

<script type="text/javascript">
    function animateBlock (){
        var elem = document.getElementById('about');
        var titlestyles = document.getElementsByClassName('.second');
        var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
        if (elem == scrollTop){
            return titlestyles;
        }
    }
    animateBlock();
</script>
</body>
</html>

Последний раз редактировалось JohnJohn, 04.06.2017 в 21:26.
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2017, 18:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2017, 19:00
Аспирант
Отправить личное сообщение для JohnJohn Посмотреть профиль Найти все сообщения от JohnJohn
 
Регистрация: 04.06.2017
Сообщений: 46

Спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2017, 19:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

JohnJohn,
не понимаю вашей логики, но функцию надо ставить на прокрутку scroll
Ответить с цитированием
  #5 (permalink)  
Старый 04.06.2017, 19:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

JohnJohn,
может чем поможет
анимация чисел в зоне видимости jquery
Ответить с цитированием
  #6 (permalink)  
Старый 04.06.2017, 20:26
Аспирант
Отправить личное сообщение для JohnJohn Посмотреть профиль Найти все сообщения от JohnJohn
 
Регистрация: 04.06.2017
Сообщений: 46

Спасибо, помогло!
Ответить с цитированием
  #7 (permalink)  
Старый 04.06.2017, 20:41
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от JohnJohn Посмотреть сообщение
Спасибо, помогло!
напишите сюда, мы глянем
Ответить с цитированием
  #8 (permalink)  
Старый 04.06.2017, 21:27
Аспирант
Отправить личное сообщение для JohnJohn Посмотреть профиль Найти все сообщения от JohnJohn
 
Регистрация: 04.06.2017
Сообщений: 46

<!DOCTYPE html>
<html>
<head>
<style>
.transform {
     translate(0,-150px);
    -webkit-transform: translate(0,-150px);
    -o-transform: translate(0,-150px);
    -moz-transform: translate(0,-150px);
}
</style>
</head>
<body>
<div id='page'>
<div class="first"></div>
<div id='about'></div>
<div class="third"></div>
</div>
<script type="text/javascript">
   var animateElement = document.getElementById('page');
var getPage = animateElement.getBoundingClientRect().top + window.pageYOffset;
var elementIcon = document.getElementById('about');
window.onscroll = function() {
    if (animateElement.classList.contains('transform') && window.pageYOffset < getPage) {
        elementIcon.classList.remove('transform');
      } else if (window.pageYOffset > getPage) {
        elementIcon.classList.add('transform');
      }
    };
</script>
</body>
</html>

Последний раз редактировалось JohnJohn, 04.06.2017 в 21:52.
Ответить с цитированием
  #9 (permalink)  
Старый 04.06.2017, 21:39
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Вы хотите чтобы анимация срабатывала постоянно как только элемент попадал в зону видимости?
Ответить с цитированием
  #10 (permalink)  
Старый 04.06.2017, 21:51
Аспирант
Отправить личное сообщение для JohnJohn Посмотреть профиль Найти все сообщения от JohnJohn
 
Регистрация: 04.06.2017
Сообщений: 46

Да, и что я ещё не продумал, так это если я захочу к примеру всем классам присвоить через
var elementIcon = document.getElementsByClassName('about');


<div class='about'></div>
<div class='about'</div>
<div class='about'</div>

то .transform не добавится/удалится, ща буду думать.......
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диалог между HTML и внешним JS в контексте расширения GoogleChrome ev1lart Events/DOM/Window 0 26.04.2017 19:25
Анимация на чистом JS Tecvid Events/DOM/Window 12 27.11.2014 12:46
Проекты на чистом js kidar2 Общие вопросы Javascript 7 09.01.2014 14:26
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28