Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   В IE6,7 по окончании анимации позиционированного элемента исчезает его содержимое... (https://javascript.ru/forum/jquery/7333-v-ie6-7-po-okonchanii-animacii-pozicionirovannogo-ehlementa-ischezaet-ego-soderzhimoe.html)

sysya 27.01.2010 05:51

В IE6,7 по окончании анимации позиционированного элемента исчезает его содержимое...
 
В IE6,7 по окончании анимации позиционированного элемента исчезает его содержимое, как быть? понимаю что проще убрать position:...; из CSS, но может есть другой подход к этой проблемке? кроме как попросить разработчиков IE переделать свой продукт:)
...уверен что IE8 так же богат этими недостатками.
В опере, хроме нормально всё работат.
Я в своём приложении решил проблему, если надо сюда кину пример:)

subzey 27.01.2010 09:14

Код, пожалуйста, приведите!

sysya 27.01.2010 10:10

HTML такой значит:
<div class="parts"><div class="part_head">Нажми</div><div class="part_body">Ляляляля контент</div></div>

CSS такой:
.part_body{margin:0;padding:0;position:relative;}


Таким явакод был и исчезало содержимое "part_body":
$('div.part_head').click(function() { var parthead = $(this); partbody = parthead.next('div.part_body');
	if (partbody.is(":hidden")) {
		partbody.animate({height: "show"}, 500);
	} else {
		partbody.animate({height: "hide"}, 500);
	}
  });

А так сделал чтоб работало(при этом удалил position:relative; для part_body из css):
$('div.part_head').click(function() { var parthead = $(this); partbody = parthead.next('div.part_body');
	if (partbody.is(":hidden")) {
		partbody.css('position', 'relative').animate({height: "show"}, 500, function(){partbody.css('position', 'static')});
	} else {
		partbody.css('position', 'relative').animate({height: "hide"}, 500);
	}
  });


В чём соль. В моём случае на момент анимации контент появляется раньше чем заканчивается анимация, это не красиво, вот чтоб IE правильно раздвигал див я поставил relative ему, но IE решил прятать содержимое тега, пришлось прибегнуть к хитрости...

subzey 27.01.2010 10:51

Цитата:

.animate({height: "show"}, 500)
как же Вы собираетесь плавно изменять дискретные значения?

используйте вместо этого
.fadeIn(500)

или
.slideUp(500)

sysya 27.01.2010 13:27

Цитата:

Сообщение от subzey (Сообщение 42261)
как же Вы собираетесь плавно изменять дискретные значения?

используйте вместо этого
.fadeIn(500)

или
.slideUp(500)

Пожалуй не соглашусь, потому что после slideUp так же пропадает, а fadeIn мне не подходит, нужно именно чтоб выезжало :)
Ну попробую ещё раз slideUp, мож чё изменится...

sysya 27.01.2010 13:44

Попробовал slideUp, тоже самое, div открывается и содержимое как я понял становится HIDDEN, а абсолютно позиционированные элементы улетают на верх... Смотрел с IE7...

sysya 27.01.2010 14:10

Нашёл способ, для part_body в css добавить float:left; в IE работат отлично, а в др. браузерах косяки...
Разве что отдельно для IE настройки css сделать


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