Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > работа со слоями


Автор: gta4kv 19.3.2008, 16:15
Всем привет!

Есть задача - сделать некое подобие слоев как в Photoshop.

Задача не сложна, например, js'om менять z-index элемента.

Но а если элементов 20-50, или круче того 100+?

Как это все можно по умному реализовать? И может быть есть какие нибудь готовые библиотеки для этого дела?

Заранее благодарен!

Автор: Се ля ви 19.3.2008, 16:28
Это действительно необходимо для твоей задачи? IMHO, браузеры тормозить будут при таком количестве, если ты ими будешь ещё и активно манипулировать...

Автор: gta4kv 19.3.2008, 16:41
Се ля ви, да это необходимо. 

Нет, думаю конечно столько слоев не будет, но уже при совпадение z-index'ов уже будет не правильное отображение..

Вот и спрашиваю как все это реализовать по умному.

Автор: Се ля ви 19.3.2008, 16:53
Я библиотечных решений не знаю, но по логике тебе нужно написать объект-контроллер, который бы за ними следил, после чего все передвижения реализовывать через него, а не напрямую. Например он может содержать массив слоёв и индекс массива совпадал бы с z-index`ом слоя, таким образом ты бы получал гарантию, что слои не могут иметь один и тот же индекс. Далее в объекте реализуешь команду смены индекса вверху и смены индекса вниз, что в твоём варианте будет означать перемещение элементов в массиве и, как следствие, изменение z-index`ов реальных слоёв, которые это затронуло. Скажем, по два метода на повышение и понижение - один просто на один шаг, второй - на заданное число шагов, передаваемое параметром.
Думаю, этих методов было бы достаточно.

Автор: gta4kv 19.3.2008, 17:03
Цитата(Се ля ви @ 19.3.2008,  16:53)
Я библиотечных решений не знаю, но по логике тебе нужно написать объект-контроллер, который бы за ними следил, после чего все передвижения реализовывать через него, а не напрямую. Например он может содержать массив слоёв и индекс массива совпадал бы с z-index`ом слоя, таким образом ты бы получал гарантию, что слои не могут иметь один и тот же индекс. Далее в объекте реализуешь команду смены индекса вверху и смены индекса вниз, что в твоём варианте будет означать перемещение элементов в массиве и, как следствие, изменение z-index`ов реальных слоёв, которые это затронуло. Скажем, по два метода на повышение и понижение - один просто на один шаг, второй - на заданное число шагов, передаваемое параметром.
Думаю, этих методов было бы достаточно.

ээээ... че?

буду пробовать реализовать как ты сказал.. просто js у меня.. не на очем хорошем уровне)



ps. если кто знает есть ли библиотечные решения, с радостью примы ссылку, или хотя бы название. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)