выезжающий блок
Уважаемые знатоки, как сделать чтобы блок появлялся не сверху вниз, а справа налево?
Вот код, который сейчас: <div class="wraper"> <a class="search-toggle" href="#">Клик</a> <div id="searchCollapse">Содержимое</div> </div> css: Код:
.wraper{
$(document).ready(function(){
$(".search-toggle").click(function(){
$("#searchCollapse").slideToggle("slow");
$(this).toggleClass("active");
return false;
});
});
Прошу заметить, что появляющийся блок занимает по высоте всё пространство родительского .wraper и ширину 80%. Если это важно для скрипта... |
так гуглите сначала)
http://javascript.ru/forum/jquery/33...va-nalevo.html |
Цитата:
|
вот наподобие что мне нужно, но открывает слева направо. Можно как-то инвертировать этот код справа налево?
$('.search-toggle').click(function(){
$('#searchCollapse').animate({width: 'toggle'});
});
|
Цитата:
|
$('.search-toggle').click(function(){
$('#searchCollapse').animate({width: 'toggle'});
});
Как вариант: может сделать внутренни блок float: right. Тогда анимация увеличения размера будет влево. ну или сделать внешнему блоку text-aligh:right... |
Цитата:
|
нашел решение с использованием jQuery UI:
$(".search-toggle").click(function () {
var effect = 'slide';
var options = { direction: 'right' };
var duration = 700;
$('#searchCollapse').toggle(effect, options, duration);
});
Но вот ради одного блока юзать UI - вариант не ахти. Поэтому вопрос пока открыт. |
Цитата:
На момент клика берется блок и определяется его реальная ширина в пикселах на данный момент. Хотя я не понимаю, причем здесь ширина блока. В коде, который кидали выше, не используется ширина вообще, чем он плох? |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Lutsk,
можно не display: none задавать, а просто изначально уводить свойствами right или margin-right этот блок за пределы окна, а по кнопке анимировать выезд/заезд. Такой прием часто используют. |
Цитата:
$('.search-toggle').click(function(){
$('#searchCollapse').animate({left: '0%'});
$(this).toggleClass("active");
});
|
Lutsk,
очень просто, делайте проверку на класс active. Как-то так (схематично)
if($(this).hasClass('active')) {
задвигаем элемент
} else {
выдвигаем
}
|
Ок, в итоге вышло:
$('.search-toggle').click(function(){
if($(this).hasClass('active')) {
$('#searchCollapse').animate({left: '100%'}, 700);
$(this).removeClass("active");
} else {
$('#searchCollapse').animate({left: '0%'}, 700);
$(this).toggleClass("active");
}
});
vettel, спасибо за подсказки! |
| Часовой пояс GMT +3, время: 15:47. |