Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.04.2024, 00:16
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 138

Добавить анимацию
Здравствуйте.

Есть такой костыльный скрипт

<img src="{{ product.thumb }}" alt="{{ product.name }}" class="img-responsive ani" id="nsv_mv_id{{ product.product_id }}" {% if product.thumb2 %}onmouseover="document.getElementById('nsv_mv_id{{ product.product_id }}').src='{{ product.thumb2 }}'" onmouseout="document.getElementById('nsv_mv_id{{ product.product_id }}').src='{{ product.thumb }}'"{% endif %}>


Нужно туда приделать анимацию. Но как это сделать...

Последний раз редактировалось StartGames, 23.04.2024 в 00:23.
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2024, 21:43
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от StartGames
Нужно туда приделать анимацию.
А что должно прыгать и мигать?
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2024, 05:33
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 138

Сообщение от voraa Посмотреть сообщение
А что должно прыгать и мигать?
абсолютно любая анимация, что то по типу fade)))
Потому что вот так не очень смотриться... https://nimb.ws/xImHATn

я пробовал добавить так: .fade(250) но не сработало...
Ответить с цитированием
  #4 (permalink)  
Старый 25.04.2024, 01:30
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 138

И почему то работает только через document.getElementById
Ответить с цитированием
  #5 (permalink)  
Старый 27.04.2024, 23:19
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 138

жаль конечно что в js не продумали вызов через элемент. Придется работать через скрипт...
Ответить с цитированием
  #6 (permalink)  
Старый 28.04.2024, 01:25
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

StartGames,
Это:
onmouseover="document.getElementById('nsv_mv_id{{ product.product_id }}').src='{{ product.thumb2 }}'"
ты можешь заменить на:
onmouseover="this.src='{{ product.thumb2 }}'"
или вообще на:
onmouseover="src='{{ product.thumb2 }}'"

А анимация смены картинки никогда не существовала, слишком заморочено с технической точки зрения.

Можно по-быстрому изобразить что-то такое из двух картинок если у них одинаковые размеры, но придётся поверстать если случай не самый простой:
<body>
--
<img 
  width="100"
  height="100"
  class="img-responsive ani img-bottom" 
  src="https://javascript.ru/forum/images/ca_serenity/misc/logo.gif"
/><img 
  width="100"
  height="100"
  class="img-responsive ani img-top" 
  src="https://javascript.ru/forum/image.php?u=4993&dateline=1299014303"
/> 
--
<style>
.img-bottom {
  position:absolute;
  z-index: -1;
}
.img-top {
  opacity: 0;
  transition: 1s opacity;
}
.img-top:hover {
  opacity: 1;
}
</style>
</body>
__________________
29375, 35

Последний раз редактировалось Aetae, 28.04.2024 в 01:41.
Ответить с цитированием
  #7 (permalink)  
Старый 28.04.2024, 08:14
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от Aetae
А анимация смены картинки никогда не существовала, слишком заморочено с технической точки зрения.
Что то типа такого можно сделать
<head>
<style>
	img {
		width: 200px;
		opacity: 1;
		transition: opacity 0.5s;
	}
	img.hide {
		opacity: 0;
	}
	
</style>
</head>
<body>

<img src="https://img.freepik.com/free-photo/view-of-adorable-kitten-with-simple-background_23-2150758096.jpg?size=626&ext=jpg&ga=GA1.1.2029024492.1713601918&semt=ais" 
	data-img2="https://img.freepik.com/free-photo/closeup-vertical-shot-of-a-cute-european-shorthair-cat_181624-34587.jpg?size=626&ext=jpg&ga=GA1.1.2029024492.1713601918&semt=ais">
<script>
const el = document.querySelector('img');
const img1 = new Image();
img1.src = el.src;
const img2 = new Image();
img2.src = el.dataset.img2;
el.addEventListener('mouseenter', ({target}) => {
	target.classList.add('hide');
	target.addEventListener('transitionend', () => {
		target.src = img2.src;
		target.classList.remove('hide');
	}, {once:true})
})
el.addEventListener('mouseleave', ({target}) => {
	target.classList.add('hide');
	target.addEventListener('transitionend', () => {
		target.src = img1.src;
		target.classList.remove('hide');
	}, {once:true})
})

</script>

</body>

Последний раз редактировалось voraa, 28.04.2024 в 13:16.
Ответить с цитированием
  #8 (permalink)  
Старый 28.04.2024, 10:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

voraa,
после run добавляй пожалуйста высоту окна просмотра run height=500
Ответить с цитированием
  #9 (permalink)  
Старый 28.04.2024, 13:17
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от рони Посмотреть сообщение
voraa,
после run добавляй пожалуйста высоту окна просмотра run height=500
Спасибо. Добавил.
Ответить с цитированием
  #10 (permalink)  
Старый 28.04.2024, 23:18
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

voraa, можно, но надо ещё не забыть добавить ожидание onload для второй картинки, потому что может возникнуть некрасивый эффект если загрузка тормознёт.
Также, если картинки большие, то надо будет хакать с незаметной предварительной вставкой на страницу, потому что скорость первой отрисовки уже загруженной картинки хоть и почти моментальная, но всё же именно почти и может вызвать очень краткое мигание.
Кстати в качестве хака от такого мигания помогает createImageBitmap после onload перед вставкой, но это чисто эмпирическое знание, не подкреплённое доками.
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запустить анимацию объекта в threejs? Katy93 Общие вопросы Javascript 4 29.12.2021 19:30
Добавить анимацию fadeIn при фиксации меню Tesessssss jQuery 2 12.08.2018 19:31
как добавить анимацию в слайдер? sendik Элементы интерфейса 1 27.02.2017 09:31
Нужно добавить еще одно поле <input> sergofedor06 Javascript под браузер 20 17.09.2016 00:31
Добавить асинхронную анимацию mitrich38 Events/DOM/Window 4 03.07.2016 02:08