Динамическое перемещение DIVs - как? HTML5, JQuery? - PullRequest
0 голосов
/ 02 ноября 2011

Я хотел бы сделать перемещение DIV на веб-странице - другими словами, области содержимого (с текстом, изображениями и другим произвольным содержимым), которые перемещаются по странице при нажатии кнопки.

Каждый DIV должен перемещаться на определенное количество пикселей, а затем на определенное количество пикселей.

Будет несколько DIV, которые должны перемещаться независимо друг от друга и иметь определенный z-порядок (то есть «более высокие» DIV смогут перемещаться «над» «более низкими» DIV, покрывая их вверх).

Я читал о том, как делать это в JQuery с использованием функции "animate", но, по-видимому, это медленно и может использовать много процессора, так как он приводит к частому повторному отображению страницы.

Кто-нибудь знает какие-либо другие способы сделать такую ​​вещь, как HTML5 или какие-нибудь новые интересные технологии? Может быть, чистый JavaScript? :)

Спасибо за ваш совет!

Louise

Ответы [ 6 ]

1 голос
/ 02 ноября 2011

собирался предложить .animate, но вы говорите, что это медленно. Интересно, где ты это взял? Возможно, так было несколько крупных выпусков назад, специально для IE, но я давно не видел проблем. Предлагаю попробовать сами.

0 голосов
/ 24 января 2013

Я предлагаю вам эту ссылку: http://threedubmedia.com/code/event/drag Попробуйте событие перетаскивания демонстраций:)

Эрик.

0 голосов
/ 02 ноября 2011

В общем, я заметил, что использование переходов / преобразований css3 более плавно, чем использование jquery .animate.Это не означает, что .animate не совсем подходит для большинства ситуаций.

Вы можете создать все это с помощью только CSS3, если используете анимацию по ключевым кадрам, как в http://coding.smashingmagazine.com/2011/05/17/an-introduction-to-css3-keyframe-animations/

Но большинствобраузеры не поддерживают это.Поэтому я бы предложил компромисс, если вы должны использовать методы css3.Технически вы можете сделать следующее:

1) создать три класса css с тремя разными позициями для вашего div (начало, между и конец), используя позиционирование abs и варьируя значения left и top.

2) добавьте transition: top 3s linear, left 3s linear; или что-то еще в div для начала, в первом классе с остальными свойствами внешнего вида.

3) используйте javascript для динамического добавления второго класса, что делает его переходом квторой набор коордов

4) используйте js, чтобы отслеживать, когда коорды равны второму состоянию, а затем добавьте третий класс, переводя его в третью позицию.Или просто используйте таймер для добавления третьего класса.

Вам нужно будет внести некоторые изменения в css, чтобы убедиться, что последний примененный класс перекрывает все остальное.Чтобы убедиться в правильности специфики, вы можете написать классы как base {}, base.second {} and .base.second.third {} или что-то в этом роде (здесь нет каламбура ...)

Даже тогда, только более новые версии большинства браузеров будут поддерживать егоЭто означает, что большая часть вашей аудитории не получит это.Попробуйте jquery, вы можете быть удивлены.

0 голосов
/ 02 ноября 2011

Поскольку анимация происходит на стороне клиента, то независимо от того, какое решение вы выберете, будет зависеть от возможностей обработки клиента. Мне неизвестны какие-либо функции CSS и / или HTML5, которые делают это (Энди упоминает CSS3), но это ограничило бы вас только современными браузерами.

Я думаю, что самым широким выбором будет JavaScript. Вы можете либо свернуть свой собственный, либо использовать jQuery (или какой-то другой фреймворк JavaScript). Команда jQuery очень усердно работает над оптимизацией своего кода, поэтому я подозреваю, что вы, скорее всего, не добьетесь значительных улучшений, если раскроете свой собственный.

Если браузер плохо написан, это не должно привести к повторному отображению страницы энтузиаста. И хотя это не помогает вашим клиентам со старыми браузерами, новые браузеры склонны использовать аппаратное ускорение рендеринга, поэтому анимация должна оказывать гораздо меньшее влияние на их системы.

Извините, я не могу дать окончательный ответ "да, нет", это то, что вы должны сделать, но я надеюсь, что это даст вам некоторую информацию.

0 голосов
/ 02 ноября 2011

Это должны быть теги?Если вы в большой степени полагаетесь на анимацию, вам следует присмотреться к canvas , который является частью HTML5

0 голосов
/ 02 ноября 2011

Вы можете использовать переходы css3.Но они работают только в современных браузерах.
Но перемещение пары элементов div с помощью jquery не должно вызывать проблем с производительностью.

...