jQuery resize
Infamous
Группа: Проверенные
Пользователь №: 316
Сообщений: 158
Получено оценок: 21
Решил сделать свой велосипед jQ.resizable(). Пример: http://qlib.ucoz.ru/Resizable.htm
Исходник:
Code
(function ($) { $.fn.resizable = function () { return this.each(function () { $("div.resizer-y").css("height", "3px"); // При mouseup документа разрешаем выделение текста и снимаем обработчик mousemove $(document).mouseup(function () { $(document).unbind("mousemove", document.resize).unbind("mousedown", document.preventSelect); $("body").css("cursor", "default"); }); var offset = $(this).offset(), height = $(this).height(), width = $(this).width(), t = $(this), IE = document.all && !window.opera, pad = IE ? 2 : 0, // Хак для IE8 — в нём ресайзеры Y и Z становятся невозможно широкими yInner = IE ? "<div class='resizer-y' style='width: " + width + "px; position: absolute; height: 2px; top: " + ( offset.top + height ) + "px; left: " + offset.left + "px;'><div style='border: 1px solid orange; cursor: n-resize;'></div></div>" : "<div class='resizer-y' style='position: absolute; background: orange; height: 2px; width: " + width + "px; top: " + ( offset.top + height ) + "px; left: " + offset.left + "px; cursor: n-resize;'></div>", zInner = IE ? "<div class='resizer-z' style='position: absolute; height: 2px; width: 2px; top: " + (offset.top + height) + "px; left: " + (offset.left + width) + "px; cursor: nw-resize;'><div style='border: 1px solid red;'></div></div>" : "<div class='resizer-z' style='position: absolute; background: red; height: 2px; width: 2px; top: " + (offset.top + height) + "px; left: " + (offset.left + width) + "px; cursor: nw-resize;'></div>", res; // Объект со ссылками на ресайзеры $("body").append(res = $(yInner + "<div class='resizer-x' style='position: absolute; background: orange; width: 2px; height: " + height + "px; top: " + offset.top + "px; left: " + ( offset.left + width ) + "px; cursor: e-resize;'></div>" + zInner)); // Если нажали на ресайзер, то… res.mousedown(function (event) { var pos = $(this).offset(), axis = this.className.slice(-1), x = axis == "x", y = axis == "y", z = axis == "z" posit = [event.pageX - pos.left, event.pageY - pos.top], $this = $(this); // Присваиваем body соотв. стиль курсора $("body").css("cursor", (axis == "x" ? "e" : axis == "y" ? "n" : "nw") + "-resize"); // Запрещаем выделение текста на время ресайзинга $(document).mousedown(document.preventSelect = function (e) { e.preventDefault(); }).mousemove(document.resize = function (evt) { // Если захотели изменить размеры в другую сторону — прерываем выполнение функции if (evt.pageX < offset.left || evt.pageY < offset.top) return; // Переменные для стилей самого элемента и ресайзера var stylesPos = {}, stylesSize = {}; if ( x || z ) { stylesPos.left = evt.pageX - posit[0] + pad; stylesSize.width = evt.pageX - offset.left; // Изменяем ширину ресайзера Y $(res[0]).css("width", evt.pageX - $(res[0]).offset().left); } if ( y || z ) { stylesPos.top = evt.pageY - posit[1] + pad; stylesSize.height = evt.pageY - offset.top; // Изменяем высоту ресайзера X $(res[1]).css("height", evt.pageY - $(res[1]).offset().top); } // Изменяем стили ресайзера $this.css( stylesPos ); // Изменяем стили самого элемента t.css( stylesSize ); if ( z ) { // Если нажат ресайзер Z, меняем остальным ресайзерам координаты $(res[0]).css("top", evt.pageY); $(res[1]).css("left", evt.pageX); } // Если нажаты ресайзеры X или Y, меняем координаты ресайзера Z if ( x ) $(res[2]).css( "left", evt.pageX ); if ( y ) $(res[2]).css( "top", evt.pageY ); }); }) }); }; })(jQuery);
Тестил в Opera 9.64, FF 3.5 и IE8.
Оцениваем, пользуемся.
Aleko
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Это всё делается малеху проще. Почитай про offsetX (layerX). Бесплатные обои.
CoolSenpai
говорун
Группа: Проверенные
Пользователь №: 2213
Сообщений: 116
Получено оценок: 24
http://megasoft.3dn.ru/forum/28-214857-1
Aleko
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
какие блин дети на мегасофте, бррр.. Бесплатные обои.
Infamous
Группа: Проверенные
Пользователь №: 316
Сообщений: 158
Получено оценок: 21
Ну это как раз я там и выкладывал.
San4eZz
говорун
Группа: Проверенные
Пользователь №: 735
Сообщений: 116
Получено оценок: 2
как сделать ресайз изображений как на сайте oboi.ws? вот нашел такое: Smart Image Resizer но не знаю как это сделать. Нужен наверно сервер с поддержкой php? тут можно подзаработать Свобода выбора всего-лишь иллюзия. Жизнь предначертана судьбой.©Сообщение отредактировал San4eZz - Среда, 09.03.2011, 12:46
Infamous
Группа: Проверенные
Пользователь №: 316
Сообщений: 158
Получено оценок: 21
San4eZz , ты издеваешься?
San4eZz
говорун
Группа: Проверенные
Пользователь №: 735
Сообщений: 116
Получено оценок: 2
Infamous , на счет?тут можно подзаработать Свобода выбора всего-лишь иллюзия. Жизнь предначертана судьбой.©
Iceslim
шептун
Группа: Проверенные
Пользователь №: 3775
Сообщений: 61
Infamous , ну, как уже говорили, есть варианты и в правду проще. Quote (Aleko )
какие блин дети на мегасофте, бррр.. pinch
Ну, это думаю ни для кого не секрет.Сообщение отредактировал Iceslim - Среда, 09.03.2011, 23:19
Infamous
Группа: Проверенные
Пользователь №: 316
Сообщений: 158
Получено оценок: 21
Скрипт и правда говно. А я дебил, неудачник и быдлокодер. А ты умный. Гораздо умнее, чем я. Извини, что засоряю интернет таким говном. Я серьёзно. Ты сможешь простить меня? Сообщение отредактировал Infamous - Пятница, 11.03.2011, 10:52
Crasher
говорун
Группа: Проверенные
Пользователь №: 3179
Сообщений: 256
Получено оценок: 3
Infamous , LOL
RevoRen
Группа: Проверенные
Пользователь №: 3249
Сообщений: 214
Quote (Infamous )
Скрипт и правда говно. А я дебил, неудачник и быдлокодер. А ты умный. Гораздо умнее, чем я. Извини, что засоряю интернет таким говном. Я серьёзно. Ты сможешь простить меня?
К чему это?Follow your Destiny