Javascript.RU

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

Движение div из стороны в сторону
Привет. Есть вот такой код. Квадрат двигается в право, пока не достигнет 300px, как делать, чтобы он после этого начал движение обратно до нуля и потом опять до 300 и т д. до бесконечности))
https://jsfiddle.net/gooodwin67/emogt9tj/
Ответить с цитированием
  #2 (permalink)  
Старый 29.06.2017, 20:08
Интересующийся
Отправить личное сообщение для gooodwin67 Посмотреть профиль Найти все сообщения от gooodwin67
 
Регистрация: 03.06.2017
Сообщений: 17

Или может я вообще не правильно начал, как сделать проще зацикленное движение объекта?
Ответить с цитированием
  #3 (permalink)  
Старый 29.06.2017, 20:42
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

gooodwin67,
Ну это просто, тут даже яваскрипт не нужен. цсс анимэйшн + кейфреймы.
Ответить с цитированием
  #4 (permalink)  
Старый 29.06.2017, 20:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

gooodwin67,
https://jsfiddle.net/emogt9tj/1/
Ответить с цитированием
  #5 (permalink)  
Старый 29.06.2017, 20:52
Интересующийся
Отправить личное сообщение для gooodwin67 Посмотреть профиль Найти все сообщения от gooodwin67
 
Регистрация: 03.06.2017
Сообщений: 17

рони,
Ого, спасибо. Если не сложно объясни пожалуйста логику вот этого
if ( !x || x == 300) {
n = -n;
}
x = x + n;

На словах, "если то то, то это"
Ответить с цитированием
  #6 (permalink)  
Старый 29.06.2017, 20:58
Интересующийся
Отправить личное сообщение для gooodwin67 Посмотреть профиль Найти все сообщения от gooodwin67
 
Регистрация: 03.06.2017
Сообщений: 17

И если не сложно, подскажите, где я не так думаю. Если вот такой код:
for (x = 0; x < 300; x++) {
function anim() {
a.offset({left : x});
}
setInterval(anim,1000);
}

Как мне кажется по логике: первая итерация x = 1 - через секунду выполняется функция, объект перемещается на 1. Потом вторая итерация x = 2, через сек выполняется функция, объект перемещается на 2.
А он у меня сразу через секунду на 300 перемещается. Где я тут ошибаюсь?
Ответить с цитированием
  #7 (permalink)  
Старый 29.06.2017, 21:04
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

gooodwin67,
Рони не любит объяснять. Могу заметить, что реализация элегантная и чисто математическая.
n - это шаг в 5 пикселей. x - инкремент и декремент.
Если x равен нулю, то изменяем число n на положительное и при каждом вызове функции инкрементируем глобальную переменную x. Т.е. 5,10,15,20...300
Если x равен 300, то изменяем число n на отрицательное и при каждом вызове фунции декрементируем глобальную переменную x. Т.е 300,295,290...0
Ответить с цитированием
  #8 (permalink)  
Старый 29.06.2017, 21:05
Интересующийся
Отправить личное сообщение для gooodwin67 Посмотреть профиль Найти все сообщения от gooodwin67
 
Регистрация: 03.06.2017
Сообщений: 17

Сообщение от gooodwin67
if ( !x || x == 300) {
Вроде разобрался, кроме одного !х что значит. ! это вроде отрицание. Но никак не вдупляю, что именно тут это означает
Ответить с цитированием
  #9 (permalink)  
Старый 29.06.2017, 21:06
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Реализация на css. В продакшене рекомендую использовать анимацию на css. В крайних случаях на js
https://jsfiddle.net/emogt9tj/2/

Сообщение от gooodwin67
Вроде разобрался, кроме одного !х что значит
Проверка на псевдоложь. Логическое отрицание, если x равно нулю в нашем случаше.
Ответить с цитированием
  #10 (permalink)  
Старый 29.06.2017, 21:07
Интересующийся
Отправить личное сообщение для gooodwin67 Посмотреть профиль Найти все сообщения от gooodwin67
 
Регистрация: 03.06.2017
Сообщений: 17

Rasy,
Да, спасибо, я разобрался, что тут как бы от обратного идет. Но вот что значит !x )))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработчик событий для динамически добавленных элементов Tecvid Events/DOM/Window 28 25.06.2018 13:49
Закрыть DIV при клике в нем на ссылку или баннер xavibeat Общие вопросы Javascript 1 30.03.2016 20:41
движение в четыре стороны startale Javascript под браузер 0 26.02.2015 18:00
Показать div при наведении / jQuery updaite Элементы интерфейса 4 28.07.2014 03:45
Проблемы с div обновлённым через (#id).load erlcat jQuery 4 03.03.2013 03:41