Горизонтальное мощное меню на CSS3
#1
Отправлено 29 January 2013 - 06:30 PM
Демо-сайт: http://mocne-menu.freeiz.com/
Скрин:
Безымянный123123123.JPG 64.39К 186 Количество загрузок:
#2
Отправлено 29 January 2013 - 06:56 PM
#3
Отправлено 29 January 2013 - 07:09 PM
Вот таблица, поддержки CSS3 в разних версиях браузеров, где меню отображается нормально
#4
Отправлено 29 January 2013 - 07:59 PM
код для этого меню на 2 уровня, разделение по колонкам по 3 элемента
<ul id="menu"> {if $big_categories_tree && $big_categories_tree_count>0} {section name=h loop=$big_categories_tree} {if $big_categories_tree[h].parent == 1} <li class="{if $big_categories_tree[h].subcount > 0}drop {/if}{if $categoryID == $big_categories_tree[h].categoryID}active {/if}"> <a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}" {if $categoryID == $big_categories_tree[h].categoryID}class="bf"{/if}>{$big_categories_tree[h].name}</a> {if $big_categories_tree[h].subcount > 0} <div class="dropdown_3columns"> <div class="col_1"> <ul> {assign var="tmp" value=0} {section name=h1 loop=$big_categories_tree} {if $big_categories_tree[h1].parent == $big_categories_tree[h].categoryID} {assign var="tmp" value=`$tmp+1`} <li> <a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h1].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h1].categoryID}{/if}" {if $categoryID == $big_categories_tree[h1].categoryID}class="bf"{/if}>{$big_categories_tree[h1].name}</a> </li> {if $tmp is div by 3 && !$smarty.section.h1.last}</ul></div><div class="col_1"><ul>{assign var="tmp" value=0}{/if} {/if} {/section} </ul> </div> <div> {/if} </li> {/if} {/section} {else} <div align="center">{$smarty.const.STRING_NO_CATEGORIES}</div> {/if} </ul>
css, можно взять по ссылке из первого поста
#5
Отправлено 29 January 2013 - 08:36 PM
eugene_wb,
Наверное все таки совпадение, я ету менюшку никому больше и не показывал, понравилась и решил сюда на обозрения закинуть))
но все же, есть возможность сделать ето меню на 3 уровня, через вывод "4 Column" (см. в демо)???
#6
Отправлено 29 November 2013 - 05:18 PM
У меня на главной стоит блок ротатор баннеров. Так вот выпадающее меню подкатегорий отображается за этим слайдером!
Спасибо заранее.
#7
Отправлено 29 November 2013 - 05:25 PM
напримерz-index: 99
#9
Отправлено 02 December 2013 - 11:23 PM
1. Как убрать промежуток между шапкой и горизонтальным меню?
2. Как разместить пункты в горизонтальном меню по центру?
Спасибо.
#10
Отправлено 03 December 2013 - 12:30 AM
margin: 30px auto 0; width: 100%;
Это уберет отступ сверху и покажет правую сторону меню со скругленными углами, которая сейчас вылазит за пределы.
#11
Отправлено 03 December 2013 - 12:59 AM
#12
Отправлено 10 December 2013 - 11:26 AM
Нужно доделать менюшку, не воткнусь как
Вот код:
<li id="menu-item-22" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22 {if $smarty.server.REQUEST_URI == '/page_0.html'}current-menu-item current_page_item{/if}"> <a >Магазин</a> {if $categories_tree} <ul class="sub-menu" style="display: none; visibility: hidden;"> {section name=h loop=$big_categories_tree} {if $big_categories_tree[h].categoryID != 1} <li class="level_{$big_categories_tree[h].level}_parent_"> {section name=j loop=$big_categories_tree max=$big_categories_tree[h].level} {/section} {if $smarty.const.CONF_SHOW_COUNTPROD eq 1}<span style="float:right"> {$big_categories_tree[h].products_count}</span>{/if} <a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}" {if $categoryID == $big_categories_tree[h].categoryID}class="bf"{/if}>{$big_categories_tree[h].name}</a> {*<br />level: {$big_categories_tree[h].level} parent: {$big_categories_tree[h].parent} след {$big_categories_tree[h.index_next].parent} categoryID: {$big_categories_tree[h].categoryID}*} {if $big_categories_tree[h].categoryID == $big_categories_tree[h.index_next].parent} <ul class="sub-menu" style="display: none; visibility: hidden;"> {/if} {if ($big_categories_tree[h.index_next].parent != $big_categories_tree[h].categoryID) } </li> {/if} {if $big_categories_tree[h.index_next].level != $big_categories_tree[h].level} {if ($big_categories_tree[h.index_next].parent != $big_categories_tree[h].categoryID) } </ul> {/if} {/if} {if $smarty.section.h.index ne $big_categories_tree_count-1} {/if} {/if} {/section} </ul> {/if} </li>которым выводится менюшка: Главная Магазин О магазине,
так вот Магазин - содержит подкатегории, а те соответственно свои, не могу разввернуть те 4 подкатегории которые выпадают в пункте Магазин.
Т.е. мне нужно что бы в меню стали вместо Магазин эти 4 выпадающие категории со своими подкатегориями.
с данным движком знаком несколько поверхностно, помогите пожалуйста товарищи))))
#13
Отправлено 07 April 2014 - 12:42 PM
/upd:
с этим разобрался, но возникла другая проблема -
выпадающее меню перекрывается названиями блоков (см. в прикрепленном изображении).
Как это можно решить?
Прикрепленные файлы
#14
Отправлено 07 April 2014 - 03:34 PM
Увеличить z-index у менюшек либо уменьшить у названий блоков.выпадающее меню перекрывается названиями блоков (см. в прикрепленном изображении). Как это можно решить?
Если не понятно, что такое z-index, то почитать об этом на htmlbook.ru/css/z-index, где-то там.
#15
Отправлено 07 April 2014 - 08:45 PM
Спасибо за помощь! Все получилось как надо.Увеличить z-index у менюшек либо уменьшить у названий блоков.выпадающее меню перекрывается названиями блоков (см. в прикрепленном изображении). Как это можно решить?
Если не понятно, что такое z-index, то почитать об этом на htmlbook.ru/css/z-index, где-то там.
#16
Отправлено 12 January 2015 - 12:53 PM
Сегодня именно это меню сделал для заказчика ( совпадение ? )
код для этого меню на 2 уровня, разделение по колонкам по 3 элемента<ul id="menu"> {if $big_categories_tree && $big_categories_tree_count>0} {section name=h loop=$big_categories_tree} {if $big_categories_tree[h].parent == 1} <li class="{if $big_categories_tree[h].subcount > 0}drop {/if}{if $categoryID == $big_categories_tree[h].categoryID}active {/if}"> <a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h].categoryID}{/if}" {if $categoryID == $big_categories_tree[h].categoryID}class="bf"{/if}>{$big_categories_tree[h].name}</a> {if $big_categories_tree[h].subcount > 0} <div class="dropdown_3columns"> <div class="col_1"> <ul> {assign var="tmp" value=0} {section name=h1 loop=$big_categories_tree} {if $big_categories_tree[h1].parent == $big_categories_tree[h].categoryID} {assign var="tmp" value=`$tmp+1`} <li> <a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h1].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h1].categoryID}{/if}" {if $categoryID == $big_categories_tree[h1].categoryID}class="bf"{/if}>{$big_categories_tree[h1].name}</a> </li> {if $tmp is div by 3 && !$smarty.section.h1.last}</ul></div><div class="col_1"><ul>{assign var="tmp" value=0}{/if} {/if} {/section} </ul> </div> <div> {/if} </li> {/if} {/section} {else} <div align="center">{$smarty.const.STRING_NO_CATEGORIES}</div> {/if} </ul>
css, можно взять по ссылке из первого поста
Здравствуйте!
Не подскажете как сделать, чтобы в выпадающем меню возле названия подкатегории отображалось фото , которое добавляется при редактировании категории?
Спасибо заранее
#17
Отправлено 12 December 2015 - 10:54 AM
Ткните пожалуйста носом как сделать так, чтоб выпадающая часть меню автоматом выпадала либо влево, либо вправо. Чтоб позиционировалась правильно. А то в этом варианте меню выпадает всегда вправо и для категорий, которые в правой части меню подкатегории оказываются за экраном. Спасибо всем поделившимся знаниями!
Кстати, добавил картинки возле выпадающих подкатегорий.
Может кому пригодиться.
Вот код файла menu.tpl.html
{*горизонтальное меню*} <link rel="stylesheet" href="data/{$smarty.const.TPL}/menu.css" type="text/css" media="all" /> <ul id="menu"> {if $big_categories_tree && $big_categories_tree_count>0} {section name=h loop=$big_categories_tree} {if $big_categories_tree[h].parent == 1} <li class="{if $big_categories_tree[h].subcount > 0}drop {/if}{if $categoryID == $big_categories_tree[h].categoryID}active {/if}"> <a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h].categoryID}.html{else}index.php?categoryID= {$big_categories_tree[h].categoryID}{/if}" {if $categoryID == $big_categories_tree[h].categoryID}class="bf"{/if}> {$big_categories_tree[h].name}</a> {if $big_categories_tree[h].subcount > 0} <div class="dropdown_5columns"> <div class="col_2"> <ul> {assign var="tmp" value=0} {section name=h1 loop=$big_categories_tree} {if $big_categories_tree[h1].parent == $big_categories_tree[h].categoryID} {assign var="tmp" value=`$tmp+1`} <li> <table> <tr> <td><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h1].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h1].categoryID}{/if}" {if $categoryID == $big_categories_tree[h1].categoryID} class="bf"{/if}><img src="data/category/{$big_categories_tree[h1].picture}" alt="{$big_categories_tree[h1].name}" title="{$big_categories_tree[h1].name}" align="left" style="max-width:60px; max-height:60px;"></td> <td><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}category_{$big_categories_tree[h1].categoryID}.html{else}index.php?categoryID={$big_categories_tree[h1].categoryID}{/if}" {if $categoryID == $big_categories_tree[h1].categoryID} class="bf"{/if}> {$big_categories_tree[h1].name}</a></td> </tr> </table> </li> {if $tmp is div by 6 && !$smarty.section.h1.last}</ul></div><div class="col_2"><ul>{assign var="tmp" value=0}{/if} {/if} {/section} </ul> </div> <div> {/if} </li> {/if} {/section} {else} <div align="center">{$smarty.const.STRING_NO_CATEGORIES}</div> {/if} </ul> {*конец горизонтальное меню*}
#18
Отправлено 12 December 2015 - 01:16 PM
Конкретно в этом меню не знаю, не пробовал.Ткните пожалуйста носом как сделать так, чтоб выпадающая часть меню автоматом выпадала либо влево, либо вправо. Чтоб позиционировалась правильно. А то в этом варианте меню выпадает всегда вправо и для категорий, которые в правой части меню подкатегории оказываются за экраном
В общем случае в CSS-меню (которые берутся за основу для создания своего) обычно есть класс, который определяет. в какую сторону от родительского элемента строить выпадающий список - вправо или влево. По умолчанию обычно вправо, а с применением этого класса - влево. Как правило, этот класс наывается что-то-rtl или просто rtl.
На PHP-уровне проходимся по массиву элементов меню и, скажем, для двух последних элементов первого уровня (или для старшей половины корневых элементов) проставляем какой-нибудь признак типа menu[i]['rtl']=1.
Ну а в шаблоне меню в нужном месте в класс дописываем {if menu[i]['rtl']} rtl-класс{/if}
При этом два последних (или вся правая половина) корневых элементов меню будет выпадающий список строить влево от себя, а не вправо.
Ну а если rtl-класса в css-файле нет, то придется написать его самому .
#19
Отправлено 12 December 2015 - 01:22 PM
#20
Отправлено 12 December 2015 - 08:34 PM
Спасибо!
Направление понятно, теперь будем ковырять!