Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Реализация меню (https://javascript.ru/forum/dom-window/9526-realizaciya-menyu.html)

Welt 22.05.2010 14:49

Реализация меню
 
Друзья есть вот такое меню http://www.afnor.com/ ,подскажите как сделать такое же?

Я новичок, hасскажите куда думать и как действовать :)

Welt 22.05.2010 15:45

Во во)) а по подробнее расскажите как 1-класснику как сделать

Welt 24.05.2010 11:06

Вобщем я сделал вот так:


<div class="topmenu">
<ul>
<li class="visible"><a href="#" title="Меню 1">Меню 1</a></li>
<li class="visible"><a href="#" title="Меню 2">Меню 2</a></li>
<li class="visible"><a href="#" title="Меню 3">Меню 3</a></li>
</ul>
</div>
<div class="menu1">
hghh
</div>
<div class="menu2">
</div>
<div class="menu3">
</div>




ul
{
display: table;
}
li
{
display: table-cell;
}
a
{
display: block;
}
.topmenu
{
position: relative;
}
.menu1 .menu2 .menu3
{
position: absolute;
}
.visible
{
}

А как дальше делать????

SkyLight 24.05.2010 11:13

Вы бы хоть разобрались в принципе работы, тогда может понимание и само пришло. Вам надо заставить нужный блок появляться по наведению на нужную ссылку. Как это сделать - читайте про hover, onmouseover, onmouseout и все что с ними связано. К тому же есть готовые реализации, надо только поискать.
Вообще, ответ, найденный самостоятельно (пусть и со сторонней помощью) вдвойне приятней для себя же.

Welt 24.05.2010 11:39

Вот если можете подкинуть ссылочку на готовую реализацию буду очень благодарен,вот такого плана меню как требуется я нигде не нашел

Gvozd 24.05.2010 11:48

сверстайте само меню, для чего вам следует изучить верстку и CSS на хорошем уровне
почитайте про анимацию, и прикрутите ее к сверстанному вами меню
возможно будет проще использовать какой-то фреймворк

в любом случае это достаточно трудоемко сделать такое меню на JS
если вы новичек, то вам следует начать с более простых задач

SkyLight 24.05.2010 16:05

Как раз такое не сильно сложно, т.к. не надо заботиться о его позиции - блок всегда будет занимать всю ширину. ТС'у надо только понять, как сверстать подобное и какую обработку написать.
Welt, все мои "ссылочки" - в гугле, никто за вас их искать не будет (может кто-то и будет, но я вредный). Постарайтесь сами хотя бы что-то сделать для решения задачи. Вот если в процессе будут непонятки - задавайте конкретные вопросы с приведением кода, будем разбираться вместе.

Welt 24.05.2010 16:16

Окэй,вот вобщем что я сделал

<script>
        $(function () {
            $('.show-one').mouseover(function () {
                $('#menu1').attr('style', 'display: block').addClass('.show-one');
            });
            $('#menu1').mouseout(function () {
                $('#menu1').attr('style', 'display: none').addClass('.show-one');
            });
            $('.show-two').mouseover(function () {
                $('#menu2').attr('style', 'display: block').addClass('.show-two');
            });
            $('#menu2').mouseout(function () {
                $('#menu2').attr('style', 'display: none').addClass('.show-two');
            });
            $('.show-three').mouseover(function () {
                $('#menu3').attr('style', 'display: block').addClass('.show-three');
            });
            $('#menu3').mouseout(function () {
                $('#menu3').attr('style', 'display: none').addClass('.show-three');
            });
            $('.show-four').mouseover(function () {
                $('#menu4').attr('style', 'display: block').addClass('.show-four');
            });
            $('#menu4').mouseout(function () {
                $('#menu4').attr('style', 'display: none'.addClass('.show-four'));
            });
        });
    </script>


CSS
.menu
{
    float: left;
    width: 900px;
}

ul
{
    padding: 0;
    margin: 0;
}

.menu li
{
    float: left;
    list-sltye: none;
    width: 80px;
    padding: 0;
    list-style: none;
    height: 30px;
    background: #20548E;
    color: White;
    text-align: center;
    border-right: 1px solid white;
    
}

#menu1, #menu2, #menu3, #menu4
{
    position: absolute;
    top: 125px;
    background: #20548E;
    display: none;
    width: 900px;
    height: 100px;
    color: White;
}
#menu2 .a
{
    text-decoration: none;
    color: White;
}

body
{
    margin: 0;
    padding: 0;
    font-family: "Trebuchet MS" , Verdana, Arial, Helvetica, sans-serif;
}
#show-one
{
    color: White;
    text-align: center;
}
#show-one a:hover
{
    background: #1A4473;
}
.menu li a:hover
{
    background: #1A4473;
}

.menu a
{
    color: White;
    text-decoration: none;
}
.menu a:hover
{
    color: White;
    text-decoration: none;
}


и сам код
<div>
                    <div class="menu">
                        <ul>
                            <li class="show-one"><a href="<%= Url.Action("Index", "Home")%>">Home</a></li>
                            <li class="show-two"><a href="#"><span>Services</span></a></li>
                            <li class="show-three"><a href="#"><span>Publications</span></a></li>
                            <li class="show-four"><a href="#"><span>References</span></a></li>
                            <li><a href="#"><span>About Us</span></a></li>
                            <li><a href="#"><span>Contacts</span></a></li>
                        </ul>
                    </div>
                    <div id="menu1">
                        qwerty</div>
                    <div id="menu2">
                        <div>
                            <ul style="float:left; margin-right:15px;">
                                <li>General consulting</li>
                                <li>Market analysis</li>
                                <li>Business-Plan</li>
                                <li>Fact finding</li>
                            </ul>
                            <ul style="float:left;">
                                <li>Russina accounting </li>
                                <li>Payroll</li>
                            </ul>
                            <ul>
                                <li><a href="#"><span>Busines Set-Up</span></a> </li>
                                <li><a href="#"><span>Accounting/Reporting</span></a> </li>
                                <li><a href="#"><span>Due Diligence/Internal Audit</span></a> </li>
                                <li><a href="#"><span>Legal Address/Office Space</span></a> </li>
                                <li><a href="#"><span>Taxation</span></a> </li>
                                <li><a href="#"><span>Human Resources</span></a> </li>
                                <li><a href="#"><span>Interim Managment</span></a> </li>
                            </ul>
                        </div>
                    </div>
                    <div id="menu3">
                        sdflkgjsdflkgsdf kdfjg lkfjgd flkgjsdf lgkjs</div>
                    <div id="menu4">
                        32485734985 34958743 987</div>
                </div>



Работает,но работает весьма криво :) помогите доработать напильником

первая проблема это то что открываемый див работает отлично везде кроме IE как я понимаю это из за Position absolute; как обойти? Вторая проблема это то что когда я навел мышку на меню у меня появляется всплывающее окошко, и убраться оно должно когда либо я перехожу на новое меню либо убираю мышку с всплывшего окна..как понимаю надо поправить скрипт, вобщем помогите :)

SkyLight 24.05.2010 16:34

Во-первых - отформатируйте код, для этого тут есть специальные кнопки. Такое читать невозможно.
Во-вторых - слишком много кода. Все пункты меню выполняют одно и то же действие - скрывают ненужные подменю и отображают нужное. Значит можно сгруппировать.

Welt 24.05.2010 19:36

Отформатировал


Часовой пояс GMT +3, время: 20:22.