Jump to content
  • 0

Плавно выпадающее меню (Help, please!)


maza
 Share

Question

вообще наш?л в нете скрипт, какой-то немец написал.. вс? бы ничего, если бы оно было до ума доведенное, В общем разобрался вроде почти.. застрял вот и не могу никак понять ,как эту парашу заработать обратно, чтобы она вверх подымала а не вниз.... ;)

вот html

<html>
<head>
<title>Плавно выпадающее меню</title>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
<head>

<style type="text/css">
A:Link{ Color: #000000; Text-decoration: underline}
A:Visited{ Color: #000000; Text-decoration: underline}
A:Hover{ Color: #000000; Text-decoration: none}
body {font-family: verdana, arial, helvetica; font-size:14px;}
</style>

java script:

<script language="JavaScript">

ejump=-4; /* шаг вверх-вниз по ejump-px */
zazor=5; /* зазор, флаг в px. указывает, когда остановить */
delay=2; /* скорость прокрутки */

window.onload = function () {
visMenu1 = -document.getElementById('Menu1').offsetHeight - 100;
visMenu1_fixed = -document.getElementById('Menu1').offsetHeight - 100;
}
function do_menue()
{
ejump=-ejump; /* ejump, теперь = 4 */
if(visMenu1<=visMenu1_fixed || visMenu1>=zazor)
menue_fahren();
}
function menue_fahren()
{
if(document.layers) {
document.getElementById('Menu1').top=visMenu1;
} else {
document.getElementById('Menu1').style.top=visMenu1;
/* menu1 style="top: -680, -676 ... 0, 4 [STOP]" */
}
visMenu1+=ejump; /* -высота слоя + 4 в цикле */
if(visMenu1>visMenu1_fixed && visMenu1<zazor) {
setTimeout("menue_fahren()", delay);
}
}

</script>

html:

</head>
<body bgcolor="#EDEDED" text="#000000" link="#000000" topmargin="0" leftmargin="0">


<div style="border: 1px dashed green; position:relative;">
<a href="#" onClick="java script:do_menue()">Біографія</a>
</div>


<div style="border: 1px dashed red; margin: 0 10% 0 10%">

<!-- Biografia -->

<div id="Menu1" style="border: 1px dashed blue; position:relative; top:0">

<b>BIOGRAFIA</b>



1.Прізвище, ім?я, по батькові - Казаченко Сергій Васильович
2.Дата і місце народження 19 листопада 1962 р., с. Даре?вськ, Погарського рну, Брянської обл..
3.Дата закінчення і місце знаходження школи ? 1979 р., с. Ручьі, Раздольненцького р-ну., Кримської обл..
4.Служба в армії, військове звання ? 1984-1985 р., м. Бахчисарай, командний склад, інженерний род військ, старший лейтенант.
5.З якого року мешка? в Криму ? 1978
6.Рік закінчення, назва і місце знаходження ВНЗ, факультет, отриманий фах ? 1985 р. - Мелітопольський інститут механізації сільського господарства, м. Мелітополь, Запоріжської обл. факультет механізації сільського господарства, інженер-механік.
2003 р.- Київський Національний економічний університет, м. Київ, факультет економіки, економіст.
2004 р.- Одеська Національна Юридична Академія, м. Одеса, факультет правоведення, ю
7.Основні та останн? місце роботи, посада ?
1979-1985 рр. ? Мелітопольський машинобудівельний завод
1985-1987 рр.- к/г ?Заповіт Леніна?, Джанкойського р-ну, Крим.
1987- 1989 рр. ? Перший Секретар Джанкойського МК ЛКСМУ Криму.
1989-1991 рр. ? Секретар ОК ЛКСМУ Криму.
1991-1994 рр. ? ТПК ?Шовковий шлях? - Президент, м. Сімферополь, Крим.
1994-2000 рр. ? ТОВ ?Південний Торгівельний Дім? - Генеральний директор, м. Сімферополь, Крим.
1999-2003 рр. ? КФ ТОВ ?Підпри?мство Рекон? - Директор ДПА України, м. Сімферополь, Крим.
1999-2007 рр. ? Корпорація ?Південна Промислова Спілка? - Президент, м. Сімферополь, Крим.
2000-2007 рр. ? голова Кримської Республіканської організації Демократичної партії України.
2006 р. до цього часу ? Голова Демократичної партії України.
1999 до цього часу ? Корпорація ?Південна Промислова Спілка? - Президент, м. Сімферополь, Крим.
8.Головні господарські та службові досягнення - Деклараційний патент ? 62905 А61 К35/30.
9.Нагороди та почесні звання ? Орден ?За заслуги? III ступеня, Орден Святого Архистратіга Михайла I ступеня.
Генерал-осавул Українського козацтва.
Президент асоціації сільського зеленого туризму Криму.
10.Участь у виборних органах ? Депутат Верховної Ради Автономної Республіки Крим V скликання.
11.Громадська діяльність:
з 2002 р. ? Повноважний Представник Гетьмана України в АР Крим.
з липня 2002 р ? Генеральний Директор Регіонального в АР Крим Представництво Центру ділового співробітництва Фонду сприяння місцевому самоврядуванню України при Президентові України.
з липня 2004-2007 рр. ? Крайовий отаман Кримського крайового товариства Українського козацтва.
з 2006 р. ? Депутат Верховної Ради Автономної Республіки Крим V скликання.
з березня 2006 року ? Голова Ради отаманів Козацьких організацій Криму.
з квітня 2006 р. - Президент Кримської асоціації сільського зеленого туризму.
з 1998 р. ? до цього часу ? член клуба ?Ротарі ?нтернейшл?
12.Сімейний стан, дружина (чоловік), діти - Одружений.
Дружина - Казаченко Лариса Владиславівна 1962 року народження;
Донька ? Казаченко Катерина Сергіївна 1983 року народження;
Донька ? Казаченко Оксана Сергіївна 1985 року народження;
Донька ? Казаченко Лілія Сергіївна 1988 року народження;
Син ? Казаченко Микита Сергійович 1995 року народження.
13.Плани та майбутн?:
Захистити дисертацію на вчену ступень з теми ??нноваційна модель АРК?
14.Житт?ве кредо ? сміливість ідей, плідна праця, цел?спрямованність, порядність - запорука успіху в житті.
15.Уподобання ? лідерство, постійне підвищення рівня самовдосконалювання, служіння суспільству та державі.
16.Найяскравіші та найбільш пам?ятні події життя:
1. Перша зустріч з коханою жінкою.
2. Народження дітей.
3. Обрання на посаду Голови Демократичної партії України.
4. Придбання першого автомобіля.

</div>

</div> <!-- Stakan -->

</body>
</html>

Знатоки, подскажите, плиз! :)

Link to comment
Share on other sites

25 answers to this question

Recommended Posts

  • 0

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

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

<script language="JavaScript">

ejump=4; /* шаг вверх-вниз по ejump-px */
delay=2; /* скорость прокрутки */

window.onload = function () {
topMenu1_fixed = parseInt(document.getElementById('Menu1').style.top); //какой top у слоя
visMenu1_fixed = document.getElementById('Menu1').offsetHeight; //высота слоя
topMenu1 = parseInt(document.getElementById('Menu1').style.top); //отдаем top скрипту
}
function do_menue()
{
ejump=-ejump; // ejump, теперь = -4
if(topMenu1<=visMenu1_fixed || topMenu1>=-visMenu_fixed) {
menue_fahren();
}
}
function menue_fahren()
{
document.getElementById('Menu1').style.top=topMenu1;
topMenu1+=ejump; // высота слоя по -4 добавляем

if(topMenu1 <= topMenu1_fixed) {
/* поднимаем */
if(topMenu1<visMenu1_fixed && topMenu1>=-visMenu1_fixed) {
if(topMenu1 <= topMenu1_fixed) {
setTimeout("menue_fahren()", delay);
}
}
} else {
/* опускаем */
if(topMenu1<visMenu1_fixed && topMenu1>=0) {
if(topMenu1 <= topMenu1_fixed) {
setTimeout("menue_fahren()", delay);
}
}
}
}

</script>

<div style="border: 1px dashed green; position:relative;">
<a href="#" onClick="java script:do_menue()">Біографія</a>
</div>

теперь задача по-сложнее...

несколько пунктов меню, первый из которых уже должен быть развернуть, все остальные свернутые.

* при нажатии на завернутый пункт - он должен развернуться, отодвинув при этом пункты меню ниже

* при нажатии на развернутый пункт - он должен свернуться, подтянув при этом пункты меню ниже

как сделаю - выложу готовое ;)

Если кто поможет - буду признателен!)

Link to comment
Share on other sites

  • 0
кто-то может объяснить это:

 if(document.layers) {
document.getElementById('Menu1').top=visMenu1;
} else {
document.getElementById('Menu1').style.top=visMenu1;
}

а именно, не могу понять, условие:

if(document.layers)

Это совместимость с NN4 - он умер уже, убери это условие...

Просто в NN4 у слоя не было объекта style...

Link to comment
Share on other sites

  • 0

Help! застрял на такой фигне!! ;)((

http://museum-ukraine.org.ua/polza/test_overflow.html

в FF - норм

в ИЕ6 - лажа :)

как спрятать контент, который заезжает-выезжает? написал же "overflow: hidden", почему может не работать? :)((

вычитал в нете, что нужно задать высоту, а как я е? задам, когда я не могу ее знать? разве что яваскриптом узнать и задать..... :(

p.s.: НЕНАВИЖУ MICROSOFT!!!!!!!!!!!!!!!!!!!!!!!!

Link to comment
Share on other sites

  • 0

Хелп, плиз!!

ума не приложу, проверил вс? что можно.. не могу никак понять, почему ИЕ6 ругается на эту строчку:

document.getElementById('Stakan1').style.height = NewHeightStakan1 - 10 + 'px';

вот код:

ejump=10; /* шаг вверх-вниз по ejump-px */
delay=2; /* скорость прокрутки */

window.onload = function () {
topMenu1_fixed = parseInt(document.getElementById('Menu1').style.top); //какой top у слоя
visMenu1_fixed = document.getElementById('Menu1').offsetHeight; //высота слоя
topMenu1 = parseInt(document.getElementById('Menu1').style.top); //отдаем top скрипту
NewHeightStakan1 = document.getElementById('Stakan1').offsetHeight; //узнаем высоту стакана
//document.getElementById('Stakan1').style.height = 100 + 'px';
}
function do_menue()
{
ejump=-ejump; // ejump, теперь = -4
if(topMenu1<=visMenu1_fixed || topMenu1>=-visMenu_fixed) {
menue_fahren();
}
}
function menue_fahren()
{
document.getElementById('Stakan1').style.display = 'block';
document.getElementById('Menu1').style.top=topMenu1;
topMenu1+=ejump; // высота слоя по -4 добавляем
NewHeightStakan1 += ejump; // уменьшаем-увеличиваем высоту стакана
//alert(NewHeightStakan1);
document.getElementById('Stakan1').style.height = NewHeightStakan1 - 10 + 'px';

if(topMenu1 <= topMenu1_fixed) {
/* поднимаем-опускаем */
if(topMenu1<visMenu1_fixed && topMenu1>=-visMenu1_fixed) {
if(topMenu1 <= topMenu1_fixed) {
setTimeout("menue_fahren()", delay);
}
} else {
//alert('test');
document.getElementById('Stakan1').style.display = 'none'; }
}
}

я проверял может ли вообще задать высоту этому слою:

//document.getElementById('Stakan1').style.height = 100 + 'px';

я проверял переменные:

//alert(NewHeightStakan1);

//alert(NewHeightStakan1 - 10 + 'px');

не понимаю, почему же он матюкается, что ему не нравится ;) кстати, в FF вс? норм.

вот в нете эта страница:

http://museum-ukraine.org.ua/polza/pvmenu_trouble.html

Link to comment
Share on other sites

  • 0

Если NewHeightStakan1 - 10 меньше 0, то эксплорер ругается (он не может задавать отрицательные значение высоте/ширине). Остальные браузеры игнорируют эти отрицательные значения. Делай проверку на

Link to comment
Share on other sites

  • 0

Так-с, один пункт готов. остальные можно по аналогии сделать.. уже легче...

в принципе вс? устраивает, но есть пару глюков, которые я даже пока что представить не могу как решить... :)

http://museum-ukraine.org.ua/polza/pvmenu1.html

1. если нажать 2-й раз в то время как скрипт работает, то он больше работать не будет.

2. когда контент прячется - пару пискелов снизу съедаются стаканом.. а когда контент выезжает, то пару пискелов снизу у стакана добавляются, но стакан потом насильно равняется с контентом. Лушче сделать не получилось у меня... :)

3. не глюк, но тоже не могу представить в голове, как можно реализовать такую фишку как в "вконтакте", когда менюшка закрыта меняется картинка (стрелочка), когда открыта - меняется на другую...

Link to comment
Share on other sites

  • 0

смысл понял. спасибо, за подсказку!

сейчас вояю.. очень путает то, что в моем скрипте нет никакого разделения на поднятие и опускание, очень путает меня))))

почти сделал, пока что перекрашиваю фон у заголовка, позже уже со стрелочками сделаю и выложу))

хренова я придумал!

Мысль, что если привязаться к переменной ejump?

она же когда допустим когда выезжает положительная, а когда заезжает - отрицательная!

ejump=-ejump;

как условие составить, не подскажите?

Link to comment
Share on other sites

  • 0

короче сделал, шо хотел, берите, кому надо:

http://museum-ukraine.org.ua/polza/pvmenu_allready.html

не устраивает пару вещей, таких как:

- если повторно нажать на ссылку, когда скрипт выполняется, то вс? идет коту под хвост до рефреша..

- код получился громоздким, не знаю как можно его оптимизировать, мыслей нет -(

если кто возьмется оптимизировать код и поставить какую-то блокировку на нажатие по ссылке во время выполнения скрипта или хотябы подскажет как реализовать - буду премного благодарен!

Link to comment
Share on other sites

  • 0

вот така попробуй, потом мне скажешь...

function do_menue() {
if(topMenu1<=visMenu1_fixed || topMenu1>=-visMenu_fixed) {
ejump=-ejump; // ejump, теперь = -25
if(ejump<0) document.getElementById('Menu1_link').className = 'up_arrow';
else document.getElementById('Menu1_link').className = 'down_arrow';
menue_fahren();
}
}

Link to comment
Share on other sites

  • 0

Вот немного исправил... Верстка просто жесть конечно, чуть глаза не сломал, но е? исправлять не стал...

<html>
<head>
<title>меню...</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<style type="text/css">
A:Link{ Color: #000000; Text-decoration: underline}
A:Visited{ Color: #000000; Text-decoration: underline}
A:Hover{ Color: #000000; Text-decoration: none}
body {font-family: verdana, arial, helvetica; font-size:14px; margin: 20px 20% 20px 20%;}

.down_arrow {
background-color: #fbeabd;
background-image: url('arr_down.gif');
background-repeat: no-repeat;
}
.up_arrow {
background-color: #fbeabd;
background-image: url('arr_up.gif');
background-repeat: no-repeat;
}

.holder {
position: relative;
margin-bottom: 10px;
overflow: hidden;
}
.content {
position: relative;
margin-top: 25px;
}

</style>

<script language="JavaScript">
var infade = new Array();

function $(i) {return document.getElementById(i)}

window.onload = function() {
$('Menu1').style.marginTop = '25px;';
$('Menu2').style.marginTop = '25px;';
}

function start(elem) {
if (infade[elem]) return;
infade[elem] = true;

var e = $(elem);
var size = 25;// на сколько будет смещаться текст за итерацию

if (e.style.display=='none') {
e.style.display='block';
fade(elem,size);
}
else fade(elem,-size,true);

return false;
}

function fade(elem,size,hide) {
var e = $(elem);

var top = parseInt(e.style.marginTop)+size;

if(top<=25&&top+e.scrollHeight>=0) { // здесь первое условие - это первоначальный марджин, который зада?тся при виндоу.онлоад (можно его вообще вынести в отдельную переменную)
e.style.marginTop = top + 'px';
setTimeout('fade("'+elem+'",'+size+','+hide+')', 15);
}
else {
if (top>25) e.style.marginTop = '25px';
if (hide) e.style.display='none';
infade[elem] = false;
}
}
/*————————————————*/
</script><!-- HEAD END HERE -->
</head>
<body topmargin="0" leftmargin="0" link="#000000" text="#000000">

<table bgcolor="#e7ad10" cellpadding="0" cellspacing="0" height="1" width="100%"><tbody><tr>
<td><img src="pvmenu_allready_files/1px.htm" height="1" width="1"></td></tr></tbody></table>
<div id="Menu1_link" class="down_arrow" style="border: 0px dashed green; position: relative;">
<a style="border: 0px dashed red; text-decoration: none; display: block;" onfocus="this.blur()" onclick="start('Menu1');" href="#biography">
<font size="3"><b>  Біографія</b></font></a>
</div>

<!-- Stakan1 -->
<div id="Stakan1" class="holder">
<!-- Biografia -->
<div id="Menu1" class="content">
1.Прізвище, ім?я, по батькові - Казаченко Сергій Васильович
2.Дата і місце народження 19 листопада 1962 р., с. Даре?вськ,
Погарського рну, Брянської обл..
3.Дата закінчення і місце знаходження школи ? 1979 р., с. Ручьі,
Раздольненцького р-ну., Кримської обл..
4.Служба в армії, військове звання ? 1984-1985 р., м. Бахчисарай,
командний склад, інженерний род військ, старший лейтенант.
5.З якого року мешка? в Криму ? 1978
6.Рік закінчення, назва і місце знаходження ВНЗ, факультет, отриманий
фах ? 1985 р. - Мелітопольський інститут механізації сільського
господарства, м. Мелітополь, Запоріжської обл. факультет механізації
сільського господарства, інженер-механік.
2003 р.- Київський Національний економічний університет, м. Київ,
факультет економіки, економіст.
2004 р.- Одеська Національна Юридична Академія, м. Одеса, факультет
правоведення, ю
7.Основні та останн? місце роботи, посада ?
1979-1985 рр. ? Мелітопольський машинобудівельний завод
1985-1987 рр.- к/г ?Заповіт Леніна?, Джанкойського р-ну, Крим.
1987- 1989 рр. ? Перший Секретар Джанкойського МК ЛКСМУ Криму.
1989-1991 рр. ? Секретар ОК ЛКСМУ Криму.
</div> <!-- Biografia -->
</div> <!-- Stakan1 -->

<table bgcolor="#e7ad10" cellpadding="0" cellspacing="0" height="1" width="100%"><tbody><tr>
<td><img src="pvmenu_allready_files/1px.htm" height="1" width="1"></td></tr></tbody></table>
<div id="Menu2_link" class="down_arrow" style="border: 0px dashed green; position: relative;">
<a style="border: 0px dashed red; text-decoration: none; display: block;" onfocus="this.blur()" onclick="start('Menu2');" href="#appearances">
<font size="3"><b>  Виступи</b></font></a>
</div>

<!-- Stakan2 -->
<div id="Stakan2" class="holder">
<!-- Vistupi -->
<div id="Menu2" class="content">Виступ
Казаченка С.В.на круглому столі
в Таврійському Національному університеті
імені Вернадського
з питання ролі університетів в розвитку регіонів Сьогодні практично всі
державні вищі учбові заклади стали університетами, отже взяли на себе
підвищені зобов?язання і функції. З часу проголошення незалежності, нам
пора задуматися про доцільність тих чи інших дій. Давайте подивимося,
що ми ма?мо тепер: ?перевиробництво? юристів і економістів і практично
повну втрату спеціалістів в технологічній сфері (інженерів-технологів,
конструкторів, механіків та інших). В економіці ? абсолютний застій в
області нової техніки і технологій. Тепер необхідно дати відповідь на
питання: ?Що таке інноваційний шлях розвитку економіки? А це створення
в економіці країни умов, механізмів і підходів, котрі забезпечували б
прискорення розробки і передачі в промисловість нових технологій і
нової техніки для забезпечення виробництва нової конкурентної продукції
і послуг. Чи можна без висококваліфікованих спеціалістів забезпечити
швидке оновлення технологій в промисловості, швидку зміну нової, в тому
числі науко?мної продукції, що користу?ться попитом у споживача? У нас
уже не залишилося часу на звичаний еволюційний шлях розвитку економіки,
бо це шлях який приріка? її на те, що вона буде плентатися в хвості не
тільки розвинутих країн, але й у тих, що розвиваються. Тільки опора на
інноваційну промисловість, тільки опора на освічені професійно
підготовлені кадри дасть нам можливість здійснити ривок в промисловості
і економіці. Які складники успіху в формуванні інноваційного шляху
розвитку вітчизняної економіки? Це:
1. Рівень освіченості нації, кваліфікованої робочої сили для роботи в
умовах інноваційної економіки.
2. Рівень розвитку науки, його технологічна направленість та
забезпечення формування у країні науко?мної економіки.
і послуг. Чи можна без висококваліфікованих спеціалістів забезпечити
швидке оновлення технологій в промисловості, швидку зміну нової, в тому
числі науко?мної продукції, що користу?ться попитом у споживача? У нас
уже не залишилося часу на звичаний еволюційний шлях розвитку економіки,
бо це шлях який приріка? її на те, що вона буде плентатися в хвості не
тільки розвинутих країн, але й у тих, що розвиваються. Тільки опора на
інноваційну промисловість, тільки опора на освічені професійно
підготовлені кадри дасть нам можливість здійснити ривок в промисловості
і економіці. Які складники успіху в формуванні інноваційного шляху
розвитку вітчизняної економіки? Це:
1. Рівень освіченості нації, кваліфікованої робочої сили для роботи в
умовах інноваційної економіки.
2. Рівень розвитку науки, його технологічна направленість та
забезпечення формування у країні науко?мної економіки.
</div> <!-- Vistupi -->
</div> <!-- Stakan1 -->

</body></html>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy