Jump to content
  • 0

Выпадающее меню по клику - помогите доделать


NonCommalg
 Share

Question

Здравствуйте, помогите доделать выпадающее меню по клику.

Например, если посетитель попал в какой-либо подразел раздела_1 меню, то надо чтобы цвет фона этого подраздела изменился, а сам раздел_1 был раскрыт, а остальные свёрнуты.

<script type="text/javascript">
function shiftSubDiv(n)
{var el = document.getElementById('subDiv'+n);
if ( el.style.display == 'none' )
el.style.display = 'block'
else
if ( el.style.display == 'block' )
el.style.display = 'none';};
</script>

<ul>

<li style="color:#000000; background:#E3E7D9; padding:3px; margin: 3px 0; width:200px;
cursor:hand; text-decoration:none; list-style-type:none">
<div id="navHeader1" onclick="shiftSubDiv(1)">Раздел 1</div></li>

<div id="subDiv1" style="display: none;">
<li><p><a href="">Подраздел 1.1</a></p></li>
<li><p><a href="">Подраздел 1.2</a></p></li>
<li><p><a href="">Подраздел 1.3</a></p></li>
</div>

<li style="color:#000000; background:#E3E7D9; padding:3px; margin: 3px 0; width:200px;
cursor:hand; text-decoration:none; list-style-type:none">
<div id="navHeader2" onclick="shiftSubDiv(2)">Раздел 2</div></li>

<div id="subDiv2" style="display: none;">
<li><p><a href="">Подраздел 2.1</a></p></li>
<li><p><a href="">Подраздел 2.2</a></p></li>
<li><p><a href="">Подраздел 2.3</a></p></li>
</div>

<ul>

Или для этого, вообще, надо другой скрипт использовать? :)

Заранее спасибо!

Edited by NonCommalg
Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

Насчёт css всё понятно.

Что нужно добавить ещё в js, чтобы, если посетитель попал в какой-либо подразел, например, раздела_1, цвет фона этого подраздела изменился, а сам раздел_1 был раскрыт, а остальные свёрнуты??

В джаве не спец, что смог, то сделал.

Помогите, пожалуйста, доделать.

Edited by NonCommalg
Link to comment
Share on other sites

  • 0
  NonCommalg said:
Насчёт css всё понятно.

Что нужно добавить ещё в js, чтобы, если посетитель попал в какой-либо подразел раздела_1 (например) меню, цвет фона этого подраздела изменился, а сам раздел_1 был раскрыт, а остальные свёрнуты??

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

Link to comment
Share on other sites

  • 0
  NonCommalg said:
swetlana, спасибо.

Люди кто разбирается, если не трудно, помогите доделать меню, пожалуйста.

Или скиньте ссылку.

Дружище, ты либо давай уже, сам начни что то делать, либо если хочешь, чтобы за тебя сделали, плати.

Link to comment
Share on other sites

  • 0

function shiftSubDiv(n)
{var el = document.getElementById('subDiv'+n);
if ( el.style.display == 'none' )
el.style.display = 'block'
else
if ( el.style.display == 'block' )
el.style.display = 'none';};

А зачем так длинно? Второй if вообще излишен

e1.style.display=(e1.style.display == 'none')?'block':'none';

Между прочим, иногда так бывает, что блок показан, а style.display не определён, так что приведённый автором вариант не сработает, именно поэтому лучше использовать else, а не elseif

Link to comment
Share on other sites

  • 0
  swetlana said:
NonCommalg, вот здесь за вас сделают.

А в этом разделе как правило помогают тем, кто хочет сделать сам.

Я хочу сделать, для чего написал то, что у меня получилось.

Но пока, к сожалению, никто конкретно по сути вопроса ничего не подсказал, поэтому до сих пор прошу помочь.

Надеюсь в разделе Для начинающих не требуется от вопрошающих быть спецами.

  psywalker said:
  NonCommalg said:

swetlana, спасибо.

Люди кто разбирается, если не трудно, помогите доделать меню, пожалуйста.

Или скиньте ссылку.

Дружище, ты либо давай уже, сам начни что то делать, либо если хочешь, чтобы за тебя сделали, плати.

Прошу прощение. Имел ввиду ссылку не на готовое решение моей проблемы, а на то, где почитать, как это делается.

Edited by NonCommalg
Link to comment
Share on other sites

  • 0
  wanntuzz said:
у тебя липа!

<head>
<style type="text/css">
div.s-menu {width: 196px; background: #DCDCDC; border: 1px solid #A9B8C2; vertical-align: top;}
ul.s-ul {padding: 8px; margin: 0; list-style-type: none;}
li.s-li-top {list-style-type: none; font-family: Helvetica, sans-serif; font-size: 13px; font-weight: bold;
color: #115098; border-bottom: 1px solid #327AA5; padding: 0px; margin: 0px 0px 8px 0px; cursor: s-resize;}
ul.s-ul li p {margin: 0px 0px 8px 7px; line-height: 1.2;}
ul.s-ul li p a {font-family: Arial, sans-serif; font-size: 12px; color: #0000cc; text-decoration: none;}
ul.s-ul li p a:hover {color: #dc143c;}
</style>
</head>

<body>
<div class="s-menu">
<ul class="s-ul">

<li class="s-li-top">Интегральное исчисление</li>
<li><p><a href="">Интеграл Ньютона-Лейбница</a></p></li>
<li><p><a href="">Интеграл Римана</a></p></li>
<li><p><a href="">Интеграл Лебега</a></p></li>

<li class="s-li-top">Теория вероятностей</li>
<li><p><a href="">Основные понятия теории вероятностей</a></p></li>
<li><p><a href="">Зависимые и независимые случайные события</a></p></li>
<li><p><a href="">Формулы сложения и умножения вероятностей</a></p></li>

</ul>
</div>
</body>
</head>

Edited by NonCommalg
Link to comment
Share on other sites

  • 0
  Quote
как тогда правильно задать интервалы между строками пункта и самими пунктами меню?

line-height и padding/margin для li соответственно?

Вообще, формально, абзацы в пункте списка вполне имеют право на жизнь. Но вот в менюшке они, пожалуй, и вправду лишние...

Link to comment
Share on other sites

  • 0
  SelenIT said:
line-height и padding/margin для li соответственно?

Вообще, формально, абзацы в пункте списка вполне имеют право на жизнь. Но вот в менюшке они, пожалуй, и вправду лишние...

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

Google не помог :unsure:

Edited by NonCommalg
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