Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как правильно затушить картинку перед .fadeIn ? (https://javascript.ru/forum/jquery/27179-kak-pravilno-zatushit-kartinku-pered-fadein.html)

zebra741258963 04.04.2012 19:05

Как правильно затушить картинку перед .fadeIn ?
 
Есть страница, в определённом месте которой должна будет появиться картинка, которая плавно прорисуется через .fadeIn()
Как правильно подготовить картинку в HTML чтобы до .fadeIn() она небыла видна?
Поскольку .fadeIn() меняет прозрачность, я в стиль для той картинки указываю: filter:alpha(Opacity=0);opacity:0
Но правильно ли это? Ведь уже тут приходится выкручиваться для поддержки кросбраузерности. Может есть более правильный подход?

melky 04.04.2012 19:08

Цитата:

Сообщение от zebra741258963 (Сообщение 167091)
Есть страница, в определённом месте которой должна будет появиться картинка, которая плавно прорисуется через .fadeIn()
Как правильно подготовить картинку в HTML чтобы до .fadeIn() она небыла видна?
Поскольку .fadeIn() меняет прозрачность, я в стиль для той картинки указываю: filter:alpha(Opacity=50);opacity:0.50
Но правильно ли это? Ведь уже тут приходится выкручиваться для поддержки кросбраузерности. Может есть более правильный подход?

если есть кверя, то её и используйте - она написана только для обеспечения кроссбраузерности.

$(...).css('opacity', 0.5);

zebra741258963 04.04.2012 19:19

jQuery будет работать только после $(document).ready
а это 1-2 секунды пока подгрузятся все картинки на странице
Да и теоретически может оказаться что у пользователя отключено исполнение скриптов (я конечно не верю тому что такое бывает, но вся литература учит именно этому), а в этом случае картинка будет видна сразу (чего мне не надо).

P.S. Я только вначале по ошибке написал прозрачность 50%, и потом сразу исправил на 0%, но melky успел нажать цитирование с моим ошибочным вариантом, в то время как в изначально картинка должна быть невидимой!

T-sh 04.04.2012 19:24

а что мешает убрать её из видимости (visibility:hidden; или вообще display: none;) а при появлении в том же jQuery восстанавливать эту самую видимость одновременно устанавливая opacity: 0? и после этого уже плавное появление :)

zebra741258963 05.04.2012 01:35

Вот в этом и вопрос - как правильно?
Сделать просто одной строкой: filter:alpha(Opacity=0);opacity:0
Или вначале делать visibility:hidden
потом visibility:hidden
и одновременно opacity:0
Наверно выработались уже за годы какие-то стандарты...

sysya 05.04.2012 09:27

я делаю так:
$(...).css('opacity', 0.5);
$(...).animate('opacity', 1);
более широкие настройки можно использовать
или так:
$(...).css({opacity: 0.5, display: 'none'});
$(...).css(display, 'block').animate('opacity', 1);


расстановка правил может быть беспорядочна, так как все правила к элементу действуют одновременно. Порядок расстановки влияет лишь на селекторы CSS...

T-sh 05.04.2012 12:31

Цитата:

Сообщение от zebra741258963 (Сообщение 167171)
Вот в этом и вопрос - как правильно?
Сделать просто одной строкой: filter:alpha(Opacity=0);opacity:0
Или вначале делать visibility:hidden
потом visibility:hidden
и одновременно opacity:0
Наверно выработались уже за годы какие-то стандарты...

ну, я обычно сразу в стилях задаю:
display: none;
opacity: 0;


потом при появлении:
$('elem').css(display, 'block').animate('opacity', 1);


проблем никогда не возникает.
в случаях, когда несработает opacity — сработает display :)


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