Как сделать плавно выпадающию панель?
Кто нибудь подскажите плиз, как сделать так, чтоб была какая нибудь ссылка, на неё нажимаешь, и из под неё плавно выпадает панель в которой можно чё нить разместить (другие ссылки например), а при повторном нажатии сворачивалась обратно?
|
А причем здесь раздел AJAX?
Берем 2 HTML-контейнера блочного типа, один вложен в другой. Добавляем элемент, способный получать фокус ввода, например, гиперссылка, для переключения состояния открыт/закрыт. Добавляем обработчик события нажатия ссылки, по которому определяем через offsetHeight высоту вложеного блока и по таймеру соответственно постепенно меняем высоту внешнего блока. Для внешнего блока нужно не забыть установить CSS-свойство overflow: hidden; и чтобы избежать трудностей, по возможности, не использовать вертикальный margin и padding. Ну а если лень самому писать, возьми, например, jQuery и используй метод slideToggle. |
т.е. это ваще без JavaScript делается? Мне ваще-то не лень самому писать, но просто я не совсем догоняю как это делается... Octane,
не мог бы ты привести пример? |
Цитата:
|
ну помогите плиз, кто-нибудь скиньте пример кода, я просто в этом плохо разбираюсь
|
Вложений: 1
Цитата:
В прикреплённом файле тестовое задание (именно то, что вам нужно), которое выполнял программист, при поступлении на роботу в студию, где я работаю. Код конечно не на высоте, но как пример подойдет. |
Octane, пасибо, выручил!
|
блин, там тока с кнопками, а с простыми ссылками так не проделывается...
|
Да. Переделать для ссылок конечно нереальная задача…
|
Цитата:
Цитата:
|
Цитата:
|
решил потренироваться. но застрял.
Создал два блока и элемент на котором кликаем. При клике блок меняет свою высоту, но не до 100 px а до бесконечности. Что тут не так? Вот такой простенький код. function run(id){ var maxheight = 100; var elem = document.getElementById(id); var h = elem.offsetHeight; slide = function(){ ++h; elem.style.height = h + 'px'; } if (h > maxheight) clearInterval (intervalID); if (h < maxheight) intervalID = setInterval('slide()',1); } |
Таймер уничтожается в функции run, которая создав его, больше ни разу не вызывается.
Меняем высоту родительского блока, а высоту вложенного блока только спрашиваем через offsetHeight, а у вас работа идёт с одним элементом. В принципе 2 блока не обязательно, можно и одним обойтись, только код будет по сложнее, а можно ещё со свойством clip: rect(…); попробовать сделать. |
Цитата:
Цитата:
Вот как раз спросить хотел. На сколько принципиально использование двух блоков. и почему высоту надо менять именно у внешнего |
Цитата:
Цитата:
|
Octane, а тестовые задания еще есть? :)
|
Цитата:
|
Вложений: 1
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 07:10. |