Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   jQuery Использование textIndent при анимации (https://javascript.ru/forum/css-html-browser/6194-jquery-ispolzovanie-textindent-pri-animacii.html)

slim-v 17.11.2009 19:47

jQuery Использование textIndent при анимации
 
Ну собственно вот код который отлично работает в ИЕ и FF, а вот Opera этого не понимает что ли ...

$(document).ready(function(){
    $("#enterhere").focus(function()
    {
        if($(this).attr("value")=="что ищем?")
        {
           $(this).animate({"textIndent":"-100"},"slow",0,function()
           {
                $(this).attr("value","");
                $(this).css("textIndent","0");
           });
        }

    });
});

Octane 17.11.2009 19:55

Отрицательный textIndent не работает?

slim-v 17.11.2009 20:03

Цитата:

Сообщение от Octane
Отрицательный textIndent не работает?

Ну отрицательный или не отрицательный особо роли не играет. Такое впечатление, что для Opera нельзя использовать этот параметр в анимации.

Анимация отрабатывает textIndent=-100 а визуально этого как то не видно :).

Octane 17.11.2009 20:06

Ну так попробуйте в CSS записать, чтобы проверить, работает ли в Opera отрицательный text-indent для элементов ввода?

slim-v 17.11.2009 20:09

Цитата:

Сообщение от Octane
Ну так попробуйте в CSS записать, чтобы проверить, работает ли в Opera отрицательный text-indent для элементов ввода?

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

Работает и в том случае если писать вот так вот
$(this).css("textIndent","-100");
а вот сама анимация с textIndent не работает.

Octane 17.11.2009 20:22

А если единицы измерения написать?
$(this).animate({"textIndent":"-100px"}, …

slim-v 17.11.2009 20:25

Цитата:

Сообщение от Octane (Сообщение 35587)
А если единицы измерения написать?
$(this).animate({"textIndent":"-100px"}, …

Пробовал, не помагает. Мне кажеться это чет не так с Оперой. Ибо textIndent изменяеться, но не отрисовывается. Вообще станно как то.

Octane 17.11.2009 20:45

Да, действительно не работает, проверил. Ну попробуйте как-то так:
$(document).ready(function(){
	$("#enterhere").focus(function () {
		if(this.value == "что ищем?") {
			var input = this;
			(function () {
				if (input.value) {
					input.value = input.value.slice(1);
					setTimeout(arguments.callee, 100);
				}
			}());
		}
	});
});

slim-v 17.11.2009 21:43

Цитата:

Сообщение от Octane (Сообщение 35589)
Да, действительно не работает, проверил. Ну попробуйте как-то так:
$(document).ready(function(){
	$("#enterhere").focus(function () {
		if(this.value == "что ищем?") {
			var input = this;
			(function () {
				if (input.value) {
					input.value = input.value.slice(1);
					setTimeout(arguments.callee, 100);
				}
			}());
		}
	});
});

Ну именно этот код не пробовал, завтра попробую отпишу, пробовал в цикле менять без animate jQuery. Былы предпосылки на то что именно в нем проблема. Оказалось нет. Старнная штука получилась. Если менять в цикле или по таймеру свойство textIndent, то он меняеться в Опере но не отрисовывается (не видно визуально эфекта от изменения). А вот если просто задать это свойство все ок. Старнно но факт остается фактом. Чую нашел баг, и стоит проинформировать разработчиков ибо до версии 10 он присутсвует. Я прав?

Octane 17.11.2009 22:10

Цитата:

Сообщение от slim-v
Чую нашел баг

Да в Опера баг на баге от версии к версии, не удивительно :)
http://www.opera.com/support/bugs/


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