Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Странности IE
Форумы портала PHP.SU » Клиентская разработка » HTML, Дизайн & CSS » Странности IE

Страниц (1): [1]
 

1. SergeantPEPPER - 30 Октября, 2008 - 11:32:36 - перейти к сообщению
Доброго времени суток.

Никак не могу разобраться со странным глюком. Я сделал меню, при наведении на него указателя мыши выпадает подменю выбранного пункта через JS и CSS. Мудился достаточно долго, чтобы это смертельно надоело Улыбка и наконец, вышло...
Но как оказалось работает корректно во всех браузерах, кроме IE (как всегда Недовольство, огорчение) По непонятной причине пункты выпадающего меню (элементы LI) становятся неактивными (т.е. отображаются, но своих функций не выполняют)... ВСЕ КРОМЕ ПЕРВОГО! Как объяснить это я действительно не знаю...

Посмотреть на это можно здесь http://vmk4[dot]kzn[dot]ru/account_sys

Меню в HTML выглядит так:
CODE (text):
скопировать код в буфер обмена
  1. <div class="menu">
  2.                 <ul style="padding-left: 0.1em;" onmouseover="showItem('item1');highlightItem('hItem1');" onmouseout="hideItem('item1');lowlightItem('hItem1');">
  3.                         <li>
  4.                                 <a href="#" id="hItem1">File</a>
  5.                                 <ul id="item1" onmouseout="hideItem('item1');lowlightItem('hItem1');">
  6.                                         <li><a href="#">Option1</a></li>
  7.                                         <li><a href="#">Option2s</a></li>
  8.                                         <li><a href="#">Option3</a></li>
  9.                                         <li><a href="#">Option4</a></li>
  10.                                 </ul>
  11.                         </li>
  12.                 </ul>
  13.                 <ul onmouseover="showItem('item2');highlightItem('hItem2');" onmouseout="hideItem('item2');lowlightItem('hItem2');">
  14.                         <li>
  15.                                 <a href="#" id="hItem2">Fonts2</a>
  16.                                 <ul id="item2" onmouseout="hideItem('item2');lowlightItem('hItem2');">
  17.                                         <li><a href="#">Option1</a></li>
  18.                                         <li><a href="#">Option2</a></li>
  19.                                         <li><a href="#">Option3</a></li>
  20.                                         <li><a href="#">Option4</a></li>
  21.                                 </ul>
  22.                         </li>
  23.                 </ul>
  24.                 <ul onmouseover="showItem('item3');highlightItem('hItem3');" onmouseout="hideItem('item3');lowlightItem('hItem3');">
  25.                         <li>
  26.                                 <a href="#" id="hItem3">Fonts3</a>
  27.                                 <ul id="item3" onmouseout="hideItem('item3');lowlightItem('hItem3');">
  28.                                         <li><a href="#">Option1</a></li>
  29.                                         <li><a href="#">Option2</a></li>
  30.                                         <li><a href="#">Option3</a></li>
  31.                                         <li><a href="#">Option4</a></li>
  32.                                 </ul>
  33.                         </li>
  34.                 </ul>
  35.         </div>

JS функции так:
CODE (text):
скопировать код в буфер обмена
  1. function showItem(id)
  2. {document.getElementById(id).style.display='block';}
  3. function hideItem(id)
  4. {document.getElementById(id).style.display='none';}
  5. function highlightItem(id)
  6. {
  7.         document.getElementById(id).style.backgroundColor='#669933';
  8.         document.getElementById(id).style.color='#FFF';
  9.         document.getElementById(id).style.borderColor='#558822';
  10. }
  11. function lowlightItem(id)
  12. {
  13.         document.getElementById(id).style.backgroundColor='#EEE';
  14.         document.getElementById(id).style.color='#444';
  15.         document.getElementById(id).style.borderColor='#DDD';
  16. }

А стили CSS так:
/* Class selectors */
CODE (text):
скопировать код в буфер обмена
  1. .menu{
  2.         width: 63.8em;
  3.         height:  2.1em;
  4.         margin: 0 0.5em 0.3em 0.5em;
  5.         background-color: #336699;
  6.         border: 0.1em solid <?php echo $Config['header_bord_color']; ?>;
  7.         line-height: 1.4em;
  8.         white-space: nowrap;
  9. }
  10. .menu ul {
  11.         display: block;
  12.         list-style-type: none;
  13.         z-index: 90;
  14.         text-align: center;
  15. }
  16. .menu ul li{
  17.         width: 13em;
  18.         white-space: nowrap;
  19.         float: left;
  20.         position: relative;
  21. }
  22. .menu ul li a{
  23.         font-size: 0.95em;
  24.         font-weight: normal;
  25.         text-decoration: none;
  26.         text-transform: uppercase;     
  27.         background-color: <?php echo $Config['menu_bg_color']; ?>;
  28.         color: <?php echo $Config['menu_font_color']; ?>;
  29.         border: 0.1em solid <?php echo $Config['menu_bord_color']; ?>;
  30.         padding: 0.3em 1.6em;
  31.         display: block;
  32.        
  33. }
  34. .menu ul li a:hover{
  35.         text-decoration: none;
  36.         background-color: <?php echo $Config['smenu_bg_color']; ?>;
  37.         color: <?php echo $Config['smenu_font_color']; ?>;
  38.         border: 0.1em solid <?php echo $Config['smenu_bord_color']; ?>;
  39. }
  40. .menu ul li ul{
  41.         position: absolute;
  42.         left: 0;
  43.         top: auto;
  44.         display: none;
  45.         z-index: 200;
  46.         width: 13em;
  47. }
  48. .menu ul li ul li{
  49.         position: relative;
  50. }
  51. .menu ul li ul li a{
  52.         padding: 0.3em 1.6em;
  53.         font-size: 0.8em;
  54. }
К вышесказанному дополню: нечаянно у меня получился такой фокус: я перемещаю мышь на первый пункт (который работает нормально - т.е. весь пункт является ссылкой, а не только текст), нажимаю правую кнопку мыши, вылезает popup IE, в это время перемещаю курсор на второй пункт и несколько раз щелкаю левой кнопкой по ссылке, затем перемещаю курсор обратно на первый пункт и VOILA: теперь нормально работает уже два пункта! Оказалось, что так можно активировать все пункты... Вот такое вот странное извращение. Что же делать? Я просто первый раз такое меню творю, мне достаточно сложно. Ведь там в принципе все подобные меню на сайтах схожи, т.е. те, кто этим занимался наверное знают как это обходить и ЧТО это вообще Улыбка

P.S. Это меню я сам делал по примеру чужого сайта с работающим меню. Правда, там табличная верстка, а я в этот раз решил попробовать через DIV-ы. Там (www[dot]zamzamplus[dot]ru ) меню работает, но этот косяк частично присутствует: в пунктах начиная со второго ссылкой является не весь пункт, а только текст в нем.
2. IOpeH - 30 Октября, 2008 - 12:11:09 - перейти к сообщению
если так не получилось, попробуй подругому. используй везде дивы. я тоже делал как т о меню, использовал списки сначало, о потом что то там с ие не сложилось, в итоге все на дивах сделал
3. Viper - 30 Октября, 2008 - 13:25:41 - перейти к сообщению
может стоит почитать статью _http://beholder-eye.info/2006/03/30/dropdown-menu-css
4. SergeantPEPPER - 03 Ноября, 2008 - 17:37:23 - перейти к сообщению
Viper пишет:
может стоит почитать статью _http://beholder-eye.info/2006/03/30/dropdown-menu-css


Почитал Улыбка
Даже пример посмотрел. У меня на IE5 это css-меню приведенное там, работало через раз и ОЧЧЧЕНЬ нестабильно: иногда выпадает-иногда нет, да и потом все пункты вдруг потеряли свой контент (текст то есть) Недовольство, огорчение

Вообщем по-любому надо JS+CSS делать Улыбка Кой чего наковырял в связи с этим - посмотрю, если решу проблему - отпишусь

 

Powered by ExBB FM 1.0 RC1