Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Меню


Автор: vitalina 26.3.2011, 18:18
На некоторых сайтах есть такое:

Несколько меню (первое, второе, третье...). Нажали на меню, открылась страница и меню было синим, а стало красным. Нажали на второе, открылась страница и второе меню стало красным.

Например, как тут: http://design4free.org/templates/index.php

Как это сделать? 

Автор: bars80080 26.3.2011, 18:43
на новой странице при построении меню, выбранному пункту дописали класс с красной картинкой

Автор: vitalina 26.3.2011, 18:46
Не поняла. Дописали и что дальше сделали?

Автор: bars80080 26.3.2011, 18:50
ничего

Код

<div id="menu">
<a href="#">link1</a>
<a href="#">link2</a>
<a href="#">link3</a>
<a href="#" class="selected">link4</a>
<a href="#">link5</a>
</div>


Код

#menu a { background: url(blue_button.png); }
#menu a.selected { background: url(red_button.png); }

Автор: vitalina 26.3.2011, 19:10
А когда я нажимаю на link3 оно не становится красным! Link4 не должен быть все время красным! Вы же видите какое там меню! Нажали на кнопку и она изменила цвет до тех пор пока не нажмётся другая.

Добавлено через 6 минут и 40 секунд
http://design4free.org/articles/index.php
http://design4free.org/books/index.php

Автор: SelenIT 26.3.2011, 19:48
vitalina, предполагается, что этот класс ('selected', как в примере выше, или 'active', как в примере по ссылке, или какой-то другой) назначается тому или иному пункту при генерации страницы серверным скриптом.

Автор: vitalina 26.3.2011, 20:56
Пример можно?

Автор: bars80080 26.3.2011, 23:53
святые угодники! у вас 63% сообщений в разделе пхп и вы до сих пор не знаете, как пользоваться оператором echo ?

Автор: vitalina 27.3.2011, 01:28
Знаю, а причем тут echo? Ну и что я там напишу???  smile 

Автор: blah 27.3.2011, 05:57
http://www.sebastiansulinski.co.uk/tutorials/show_item/56/active_button_with_php_and_css
http://forum.htmlbook.ru/index.php?showtopic=24141
http://stackoverflow.com/questions/2913415/how-add-class-active-to-html-menu-with-php

vitalina, спасибо, u made my day. smile 

Автор: bars80080 27.3.2011, 11:21
Код

$ar = array('главная', 'продукты', 'содержание', 'контакты');

$page = (isset($_GET['page'])) ? intval($_GET['page']) : 0;

$links = '';
foreach($ar as $key => $v) {
    $sel = ($page == $key) ? ' class="selected"' : '';
    $links .= '<a href="/?page='.$key.'" '.$sel.'>'.$v.'</a>';
}

$menu = '<div id="menu">'.$links.'</div>';

echo $menu;


 smile 

Автор: vitalina 27.3.2011, 14:45
Спасибо!

Автор: vitalina 28.3.2011, 21:09
Вот мой вариант:

Код

<table >
  <tr>
<?php

$ru = array('glava'=>'ÃËÀÂÍÀß', 'cv_gor'=>'ÖÂÅÒÎ×ÍÛÉ ÃÎÐÎÑÊÎÏ', 'zap_gor'=>'ÇÀÏÀÄÍÛÉ ÃÎÐÎÑÊÎÏ');

$page = (isset($_GET['file'])) ? intval($_GET['file']) : 0;
$links = '';

foreach($ru as $key => $v) {
    $sel = ($page == $key) ? ' class="r"' : '';
    $links .= '<td><a href="/?file='.$key.'" '.$sel.'>'.$v.'</a></td>';

}
$menu = $links;
echo $menu;
?>
</tr></table>


Только активными становятся все пункты меню. Почему???

Автор: vitalina 28.3.2011, 21:55
Почему?

Автор: vitalina 29.3.2011, 11:00
Кто мне может помочь?

Автор: bars80080 29.3.2011, 13:47
потому что параметр страницы у тебя - текст, а проверка взятая с меня

$page = (isset($_GET['file'])) ? intval($_GET['file']) : 0;

приводит входящую переменную к числовому виду. в итоге $page всегда равен 0.
затем при сравнении 

$sel = ($page == $key) ? 

этот ноль сравнивается со строкой, которая в виду не соответствия типов тоже приводится к числовому виду, а любая строка в виде числа - 0.
то есть равенство есть всегда




замени
$page = (isset($_GET['file'])) ? intval($_GET['file']) : 0;
на
$page = (isset($_GET['file'])) ? $_GET['file'] : '';

и всё будет хорошо

Автор: vitalina 29.3.2011, 14:15
Ну помогите, пожалуйста! Я не хочу страницы называть 0.php, 1.php, 2.php, 3.php ... А если я захочу удалить 2.php или поменять порядок пунктов меню, что мне опять файлы переименовывать и как я вспомню, что скрывается, допустим в 2.php?

Автор: bars80080 29.3.2011, 19:08
Цитата(vitalina @  29.3.2011,  14:15 Найти цитируемый пост)
Ну помогите, пожалуйста!

ё. т... м...


Цитата(bars80080 @  29.3.2011,  13:47 Найти цитируемый пост)
замени
$page = (isset($_GET['file'])) ? intval($_GET['file']) : 0;
на
$page = (isset($_GET['file'])) ? $_GET['file'] : '';

и всё будет хорошо 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)