Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Система Управлением Сайта | Народный SF Fusion
# 1 Тема: Всплывающие менюшки в сабхедере
RR42
Пользователь

Avatar пользователя




новичек

Сообщений: 7
Откуда: Russia
Зарегистрирован: 24 Февраля 2009, 13:33:47
Сказали спасибо 0 раз
Статус: offline
ICQ статус 232472328
Опубликовано 22 Марта 2009, 17:14:44
Простенькое всплывающее меню в сабхедере. Это не релиз. Просто размышления на тему.

Usage:

На примере меню прописано ручками (без мускула). Пример:

//печатаем java-скрипт
menuScript();

//все, что надо, чтобы нарисовать меню
menu(Array(
Array("value" => "Персоналии", "menu" => Array(option("Чапаев","chapaev.php"),option("Пупкин", "pupkin.php"))),
Array("value" => "Навигация", "menu" => Array(option("Лучи", "generator.php"))),
Array("value" => "Сервис", "menu" => Array(option("Обратная связь", "contact.php")))));



Все простенько. Вот код php-функций:

function subMenu($menu_id, $options) {
echo "<div id=\"".$menu_id."\" style=\"left: -1000px;overflow: hidden;position: absolute;top: -1000px;\">\n<table cellpadding=1 cellspacing=0 width=200 onMouseOut=\"hidemenu()\" onMouseOver=\"cancelhide()\">\n";
foreach ($options as $value) {
echo "<tr>\n<td width=200 align=\"center\"";
//if ($value['sub_menu'] != null) {
// echo " onMouseOver=\"show(this,'".$value['sub_menu']."')\"";
//}
echo "><a href=\"".$value['link']."\">".$value['value']."</a></td>\n</tr>\n&q
uot;;
}
echo "</table>\n</div>\n\n";
return $menu_id;
}

function menu($sub_menu) {
$res = "<table width=\"600\" onMouseOut=\"hidemenu()\" onMouseOver=\"cancelhide()\" cellspacing=\"0\" cellpadding=\"0\"><tr>";
$i = 0;
foreach ($sub_menu as $value) {
$res .= "<td width=200 align=\"center\" onMouseOver=\"show(this,'".subMenu("Menu".$i, $value['menu'])."')\"><a href=\"\"><b><span style='color:red'>".$value['value']."</span></b></a></td>";
$i++;
}
$res .= "</tr></table>";
echo $res;
}

function option($value, $link) {
return Array("link" => $link, "value" => $value);
}



Вот код функций на java, оптимизированный под IE, NS, Opera.

function menuScript() {
echo '<Script Language="JavaScript">
cm=null;
hide_delay=500;
tstat=0;
isNS4 = (document.layers) ? true : false;
isIE4 = (document.all && !document.getElementById) ? true : false;
isIE5 = (document.all && document.getElementById) ? true : false;
isNS6 = (!document.all && document.getElementById) ? true : false;
function switchDiv(objElement,bolVisible){
if(isNS4||isIE4){
if(!bolVisible) {
objElement.visibility ="hidden"
} else {
objElement.visibility ="visible"
}
} else if (isIE5 || isNS6) {
if(!bolVisible){
objElement.style.display = "none";
} else {
objElement.style.display = "";
}
}
return 1;
}

function getPos(el,sProp) {
var iPos = 0;
while (el!=null) {
iPos+=el["offset" + sProp]
el = el.offsetParent
}
return iPos

}

function getelementbyid(myid) {
if (isNS4){
objElement = document.layers[myid];
}else if (isIE4) {
objElement = document.all[myid];
}else if (isIE5 || isNS6) {
objElement = document.getElementById(myid);
}
return(objElement);
}

function show(el,m) {

if (cm!=null) {
switchDiv(cm,false);
}

if (m!=null) {
m=getelementbyid(m);
m.style.left = getPos(el,"Left")+"px";
m.style.top = getPos(el,"Top")+el.offsetHeight+"px";
switchDiv(m,true);
cm=m;
}
}

function hidemenu() {
timer1=setTimeout("show(null,null)",hide_delay);
tstat=1;
return 1;
}

function cancelhide() {
if (tstat==1) {
clearTimeout(timer1);
tstat=0;
}
return 1;
}

</Script>';
}



В аттаче картинка. Внешний вид менюшек никак не оформлен.
Прикрепленные файлы click to enlarge
111111_1.jpg   ( width:569 height:77 )


[Изменил(а) RR42, 25 Марта 2009, 23:15:41]  
^ наверх ^ 232472328
# 2  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 22 Марта 2009, 17:55:02
Удобства не хватает... smiley


--------------------
Retired
^ наверх ^
# 3  
RR42
Пользователь

Avatar пользователя




новичек

Сообщений: 7
Откуда: Russia
Зарегистрирован: 24 Февраля 2009, 13:33:47
Сказали спасибо 0 раз
Статус: offline
ICQ статус 232472328
Опубликовано 22 Марта 2009, 21:22:34
Это не релиз. Мне еще графику не сделали. Релиз скоро будет.
 
^ наверх ^ 232472328
Перейти на форум:


95,288,808 уникальных посетителей
сейчас: 29 Апреля 2024, 17:43:20
Генерация страницы: 0.09 сек.