Veni, vidi, vici.
Нет, речь, разумеется, не о гиф. Но о спрайтах.

Идея проста. Берём несколько блоков, вкладываем друг в друга, привязываем на одно место (через position:absolute и position:relative (или position:absolute \ position:fixed) на внешнем), прописываем отношения по hover'ам. Загвоздка в том, что hover не срабатывает просто при появлении блока под курсором, статус проверяется при движении мышью. На практике, если цель - заставить чуть более плавно, чем обычно, выплыть (появиться фейдом, загореться или ещё что) какой-то элемент в дизайне дневника, это не будет проблемой, потому что попиксельно мышь никто не двигает. Ещё один момент - реагирует css быстро (по мере продвижения курсора на каждый пиксель (при быстром движении - на каждый шаг, там он больше 1px)), а значит лучше бы иметь систему вложенных блоков побольше (чтобы было больше кадров) (что можно сделать искуственно в эпиграфе или посте, но при проработке дизайна днева не получится, ведь приходится придерживаться изначально заданных кол-ва и структуры блоков).

По поводу отношений между вложенными блоками. Вариант первый - при наведении на первый блок (скажем, q1) мы прослеживаем его hover и применяем стиль ко вложенному блоку (например, q2) (q1:hover q2{...}), потом также к последующему и т.п. до последнего (при этом в конце анимация остановится). Вариант второй - изначально видны все, но при наведении они скрываются (я в примере просто сводил height и width к 1px, но можно придумать что интереснее, с тем же clip'ом, скажем (забавно, но display:none не сработал)); при этом, "анимация" циклична, но тут один большой фейл - hover в данном случае (разумеется) проходит через все уровни сразу, и вылетают, соответственно, по сути рандомные кадры.

Об изображении. Как уже говорил, тут целесообразно использовать спрайты. Т.е. большое изображение, состоящее из маленьких кадров (пример). При навешивании background'а мы просто двигаем это самое изображение. Так мы сразу его кэшируем, что весьма удобно, ибо избавляет от хлопот с предварительным кэшингом. В моём примере я не убирал отработавшие фреймы (т.е. всё видно одновременно). На деле, чтобы убрать их достаточно снять bg на hover'е (qX:hover {background:none;}).

Кроме того. Не обязательно закручивать эту штуку именно с bg и спрайтами, можно по тому же принципу hover'ов на вложенных блоках прописывать разные стили (позицию, размеры, прозрачность, сглаженность углов... что угодно, в общем) на разных элементах.

На практике ещё нигде не применял, но небольшой пример сделал. Тут.

Как-то так. Надеюсь, кому-нибудь пригодится\покажется интересным. Придумаю что ещё интересное (по этому или другому поводу) - отпишу где-нибудь тут.

@темы: фоновые картинки, diaryCSS, основные блоки, платный сервис, Мысли вслух

Комментарии
15.07.2011 в 10:26

Да это офигенно!
15.07.2011 в 10:57

Какое значение имеют слова, когда в небе столько звезд и шелком трава?...
Очень интересно. Я и сам все ломаю голову как добавить динамичности в статичный CSS дневников...
Но в конкретном случае действительно все убивается скоростью реакции. А вот спасет ли ситуацию количество блоков? Можно попробовать, но сомневаюсь. Для хоть какого-то приличного эффекта надо более полусотни "кадров".
И из-за того что пусковым механизмом служит движение курсора, то логично предположить что и размер этой анимации должен быть настолько большим что бы над ним было удобно водить мышкой.

Жаль, но конструктивных идей добавить пока нету(
15.07.2011 в 10:59

Veni, vidi, vici.
Уоллисмит
Рад, что вам понравилось. )

Ну, на деле до "офигенно" тут далеко - красивостей из canvas на js (да и просто js), которые творят демосценеры (ммм... тут, скажем), так не сделаешь, но слегка разнообразить диз можно.
15.07.2011 в 11:05

Veni, vidi, vici.
Ater
Вообще, я находил способ вложения страниц (и, как следствие, JS) в виде фреймов в посты. Но через пару месяцев после того, как написал мануал, лавку прикрыли...

Наверное, ещё можно поэкспериментировать с Flash'ем. И закинуть в эпиграф, скажем. Но это всё ещё не то, верно.

Надо думать...