Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   TOGGLE Зеркально (https://javascript.ru/forum/jquery/23759-toggle-zerkalno.html)

ermax 05.12.2011 02:11

TOGGLE Зеркально
 
Есть код
$("#linkbases").click(function() {
   $("#databases").toggle('slow');
 });


При его использовании слой (div) #databases появлятеся из точки top,left.
Мне же нужно чтоб div появлялся из точки top,right

Вопрос. Как сделать?
Перерыл куча инфы, ответа так и не нашел.

devote 05.12.2011 03:10

не совсем то, но по его принципу можно сделать как угодно.
(function($){
	$.extend($.fn, {
		slideLeftShow: function(speed,callback){
			return this.animate({width: "show"}, speed, callback);
		},
		slideLeftHide: function(speed,callback){
			return this.animate({width: "hide"}, speed, callback);
		},
		slideLeftToggle: function(speed,callback){
			return this.animate({width: "toggle"}, speed, callback);
		},
		slideRightShow: function(speed,callback){
			return this.animate({width:"show"},{
				step: function(now, data){
					var w = Math.ceil(now);
					if(typeof(data.origLeft) == 'undefined'){
						var position = $(this).css('position');
						if(position=='static')
						{
							$(this).css('position','relative');
						}
						data.origPos = position;
						data.origLeft = data.end+parseInt($(this).css('left'))||0;
					}
					$(this).css({left:data.origLeft-(data.start+w)});
					if(w==data.end)$(this).css('position',data.origPos);
				},
				duration: speed,
				complete: callback
			});
		},
		slideRightHide: function(speed,callback){
			return this.animate({width:"hide"},{
				step: function(now, data){
					var w = Math.ceil(now);
					if(typeof(data.origLeft) == 'undefined')
					{
						var position = $(this).css('position');
						if(position=='static')
						{
							$(this).css('position','relative');
						}
						data.origPos = position;
						data.origLeft = parseInt($(this).css('left'))||0;
					}
					$(this).css({left:data.origLeft+(data.start-w)});
					if(w==0)$(this).css({left:data.origLeft, position:data.origPos});
				},
				duration: speed,
				complete: callback
			});
		},
		slideRightToggle: function(speed,callback){
			return this.animate({width:"toggle"},{
				step: function(now, data){
					var w = Math.ceil(now);
					if(typeof(data.origLeft) == 'undefined'){
						var position = $(this).css('position');
						if(position=='static')
						{
							$(this).css('position','relative');
						}
						data.origPos = position;
						data.origLeft = data.end+parseInt($(this).css('left'))||0;
					}
					if(data.start == 0)
					{
						if(w==data.end)$(this).css('position',data.origPos);
						$(this).css({left:data.origLeft-(data.start+w)});
					}else{
						$(this).css({left:data.origLeft+(data.start-w)});
						if(w==0)$(this).css({left:data.origLeft, position:data.origPos});
					}
				},
				duration: speed,
				complete: callback
			});
		}
	});
})(jQuery);

ermax 05.12.2011 16:59

Спасибо. Но это совсем не то.

devote 05.12.2011 17:03

Цитата:

Сообщение от ermax
Спасибо. Но это совсем не то.

Ну я и написал что не совсем то, но посмотрев на код, можно понять как сделать то что нужно, тут есть появление справа, к нему просто нужно добавить появление сверху.

MadGest 06.12.2011 02:09

Возможно что-то такое подойдет:

$("#linkbases").toggle(
   function() {
       $("#databases").animate(/*появление объекта*/)
   },
   function() {
       $("#databases").animate(/*скрытие объекта*/)
   }
);


http://api.jquery.com/toggle-event/

ksa 06.12.2011 08:59

Цитата:

Сообщение от MadGest
Возможно что-то такое подойдет:

Согласно этому
http://jquery-docs.ru/effects/toggle/

Метод jQuery toggle() имеет всего 2 "рабочих" аргумента:
- переключатель | скорость
- Функция, которая запускается после окончания анимационных эффектов. Выполняется единожды для каждого элемента.

Т.е. использование двух функций невозможно. А в твоём варианте тем более...

MadGest 07.12.2011 12:32

Я имею виду event toggle, ссылка выше.

ksa 07.12.2011 13:26

Цитата:

Сообщение от MadGest
Я имею виду event toggle, ссылка выше.

Отстаёт русский вариант от аглицкого оригинала... :(


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