Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Баг анимации в Safari (https://javascript.ru/forum/jquery/31261-bag-animacii-v-safari.html)

B~Vladi 31.08.2012 17:17

Баг анимации в Safari
 
Кодерам на заметку.
Если в параметрах анимации не указывать единицы измерения - в сафари анимация происходит неправильно. Воспроизводится, если изначально CSS-параметр указан в процентах. Пример:

$(document.body)
	.css('marginLeft', '-100%')
	.animate({
		marginLeft: '0'
	}, 1000);


Что бы всё было тип-топ, нужно всегда указывать единицы измерения (marginLeft: '0%').

melky 31.08.2012 18:44

Цитата:

Сообщение от B~Vladi (Сообщение 202012)
Кодерам на заметку.
Если в параметрах анимации не указывать единицы измерения - в сафари анимация происходит неправильно. Воспроизводится, если изначально CSS-параметр указан в процентах. Пример:

$(document.body)
	.css('marginLeft', '-100%')
	.animate({
		marginLeft: '0'
	}, 1000);


Что бы всё было тип-топ, нужно всегда указывать единицы измерения (marginLeft: '0%').

Версия сафари ?
Версия jQuery?

Пробовали искать "корень зла"?

B~Vladi 31.08.2012 19:21

Да, забыл указать.

Safari 5.1.7, воспроизводится под виндой и маком.
jQuery 1.7.1.

Баг явно в jQuery.

LittlePony 31.08.2012 19:50

Не вводите людей в заблуждение. Анимация происходит в процентах только если хоть в одном месте указаны проценты. Если единицы везде не указаны, то анимация по умолчанию измеряется в пикселях.
У меня сафари основной браузер, я бы заметила, если б такой глюк действительно был :)

melky 31.08.2012 20:15

Цитата:

Сообщение от LittlePony (Сообщение 202038)
Не вводите людей в заблуждение. Анимация происходит в процентах только если хоть в одном месте указаны проценты. Если единицы везде не указаны, то анимация по умолчанию измеряется в пикселях.
У меня сафари основной браузер, я бы заметила, если б такой глюк действительно был :)

Т.е. Вы хотите сказать, что баг у Вас не воспроизводится?

... блин, я бы сам проверил ... но у меня нет сафари :(

B~Vladi, может, Вы сами пофиксите баг \ откроете Issue на гитхабе?

LittlePony 31.08.2012 20:30

Цитата:

Сообщение от melky (Сообщение 202044)
Т.е. Вы хотите сказать, что баг у Вас не воспроизводится?

Варианты:
$("element").animate({measure: "100%"})

В этом случае есть баг, и довольно неприятный. И вроде бы не только в сафари, но нужно проверять. Если изменяемое свойство было установлено в пикселях, то оно сначала меняется на столько процентов, сколько пикселей в нём было, и только потом анимируется. То есть, было это свойство установлено в 300px, значит оно сначала станет 300%, и потом санимируется до 100%


$("element").animate({measure: 100})

всё работает корректно. Всё измеряется в пикселях.

B~Vladi 31.08.2012 21:33

Цитата:

Сообщение от melky
... блин, я бы сам проверил ... но у меня нет сафари

Скачай :)

Цитата:

Сообщение от melky
B~Vladi, может, Вы сами пофиксите баг \ откроете Issue на гитхабе?

Боюсь, мой уровень англицкого не даст мне этого сделать, поэтому здесь и написал.

Цитата:

Сообщение от LittlePony
Не вводите людей в заблуждение. Анимация происходит в процентах только если хоть в одном месте указаны проценты. Если единицы везде не указаны, то анимация по умолчанию измеряется в пикселях.

Какое же это заблуждение? В том то и дело, что изначально свойство установлено в процентах (см. пример в первом посте). При значении 0 не обязательно указывать единицы измерения в CSS, значит и в jQuery должно быть такое поведение. И оно есть везде, кроме сафари, в чём, собственно и баг.

Цитата:

Сообщение от LittlePony
всё работает корректно. Всё измеряется в пикселях.

Естественно, но здесь речь идёт о процентах.

Цитата:

Сообщение от LittlePony
То есть, было это свойство установлено в 300px, значит оно сначала станет 300%, и потом санимируется до 100%

Точно, это я и наблюдал. Устанавливается в -100px, затем анимируется.


Часовой пояс GMT +3, время: 15:21.