Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Помогите в JS определить высоту блока и присвоить отступ.

Автор: erroraccount
Дата сообщения: 22.06.2016 20:36
Имеется меню, в котором при наведении на корневой пункт выдвигается всплывающий блок с подпунктами на всю ширину горизонтального меню.

Хочу сделать, чтобы когда появлялось это подменю, то увеличивался отступ от основного контента. Чтобы всплывающий блок подменю как бы отталкивал от себя блок с контентом если это подменю появляется.

Для этого, как я понимаю, в js надо основному блоку меню присвоить margin-bottom равный высоте всплывающего подменю, если это всплывающее меню появляется.

Помогите пожалуйста написать такой кусок кода. Я честно признаюсь, что пока больше html + css ничего не знаю. js только настраивал когда для анимации на css надо было классы присваивать. Но этого тут мало. Надеюсь на помощь знающих и добрых людей )))

Вот js с меню

Код: $(document).ready(function() {

    megamenu_adapMenu();

    if($("#megamenu-menu").width() >= 938){
        var current_url = "http://" + window.location.hostname + window.location.pathname + window.location.search,
            href = '';

        $("#megamenu-menu .nav a").each(function(e){
            href = $(this).attr("href");

            if(current_url == href){
                $(this).parents(".dropdown-menu").css({"top" : 49, "opacity" : 1});
                return false;
            }
        });
    }


    $( window ).resize(function() {
        megamenu_adapMenu();
    });
$( "#megamenu-menu a.dropdown-toggle" ).bind( "click", function() {
    if(($(this).attr('href')!="javascript:void(0);")&&($( document ).width()>1024))
    {
    window.document.location=$(this).attr('href');
    }
});
/*
$('ul.nav li.dropdown').hover(function() {
    $(this).find('.dropdown-menu').hide();
$(this).find('.dropdown-menu').stop(true, true).delay(500).fadeIn(100);
}, function() {
$(this).find('.dropdown-menu').stop(true, true).delay(10).fadeOut(10);
});
*/
});
function megamenu_adapMenu(){
    $(".megamenu-bigblock").css('width',$("#megamenu-menu").outerWidth()-10);
    $('#megamenu-menu .dropdown-menu').each(function() {
        var menu = $('#megamenu-menu').offset();
        var dropdown = $(this).parent().offset();


        var i = (dropdown.left + $(this).outerWidth()) - (menu.left + $('#megamenu-menu').outerWidth());



        /*
        if (i > 0) {
            $(this).css('margin-left', '-' + (i + 5) + 'px');
        }
        var l=$(this).outerWidth()-2;
        $(this).find(".megamenu-ischild-simple").css('left',l);
        */

    });

}
Автор: Mavrikii
Дата сообщения: 22.06.2016 20:48
erroraccount
не стоит по одному и тому же вопросу создавать кучу тем - Как сделать чтобы меню не сворачивалось когда открыт корень?

если уж объясняете что то особенное, то показывайте на картинках.
Автор: erroraccount
Дата сообщения: 22.06.2016 22:15

Цитата:
если уж объясняете что то особенное, то показывайте на картинках.

Да, конечно покажу.

Рис. 1: Так меню выглядит без выпадающего блока с подпунктами. Под меню, через 15px идет блок с контентом.


Рис. 2: Так в итоге должно получиться. Подменю выползло и отодвинуло контент так, что до него по прежнему 15px только уже не от основного меню, а от вспомогательного.


Рис. 3: То что пока происходит у меня, когда выползает вспомогательное меню. Ему задано 100% ширины, но оно выходит вправо + оно наползает на контент.
Автор: Mavrikii
Дата сообщения: 22.06.2016 23:38
erroraccount
самый простой способ, обернуть меню в div и менять его высоту в соответствии с выпавшим меню. это отодвинет все, что идет ниже. для реализации желательно видеть еще и html код меню вместе с css
Автор: erroraccount
Дата сообщения: 23.06.2016 03:11
Меню бутстропавское.
Вот хтмл:
[more]
Код: <div class="container">
<div class="row menu-row">
<script type="text/javascript" src="catalog/view/javascript/megamenu/megamenu.js?v3"></script>
<link rel="stylesheet" property="stylesheet" href="catalog/view/theme/sstore/stylesheet/megamenu.css?v3">

<nav id="megamenu-menu" class="navbar">
<div class="container">
<div id="search">
<div id="sb-search" class="sb-search">
    
        <input class="sb-search-input" type="text" name="search" id="story" value="" placeholder="Поиск товара по каталогу">
        <input class="sb-search-submit" type="submit" value="">
        <span class="sb-icon-search"><i class="fa fa-search"></i></span>
    
</div>
</div>
<script>
    new UISearch( document.getElementById( 'sb-search' ) );
</script> <div class="navbar-header">
<button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"><i class="fa fa-bars"></i></button>
<span id="category" class="visible-xs">Меню</span>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="javascript:void(0);" class="dropdown-toggle dropdown-img" data-toggle="dropdown">Цифровая техника</a>











<div class="dropdown-menu megamenu-type-information " style="top: 49px; opacity: 1;">
<div class="dropdown-inner">


<ul class="list-unstyled megamenu-haschild ">
<li class="info-href"><a href="http://localhost/remteh/index.php?route=information/information&amp;information_id=4">О нас</a>


</li>
<li class="info-href"><a href="http://localhost/remteh/index.php?route=information/information&amp;information_id=6" class="current-link">Информация о доставке</a>


</li>
</ul>
</div>
</div>







</li>



<li class="dropdown">
<a href="javascript:void(0);" class="dropdown-toggle dropdown-img" data-toggle="dropdown">Бытовая техника</a>











<div class="dropdown-menu megamenu-type-information ">
<div class="dropdown-inner">


<ul class="list-unstyled megamenu-haschild ">
<li class="info-href"><a href="http://localhost/remteh/index.php?route=information/information&amp;information_id=8">Ремонт стиральных машин</a>


</li>
<li class="info-href"><a href="http://localhost/remteh/index.php?route=information/information&amp;information_id=5">Условия соглашения</a>


</li>
</ul>
</div>
</div>







</li>



<li class="dropdown">
<a href="javascript:void(0);" class="dropdown-toggle dropdown-img" data-toggle="dropdown">Магазин</a>

<div class="dropdown-menu megamenu-type-category-simple">
<div class="dropdown-inner">


<ul class="list-unstyled megamenu-haschild simple-category">
<li class=""><a href="http://localhost/remteh/index.php?route=product/category&amp;path=25_28_35">test 1</a>

</li>
<li class=""><a href="http://localhost/remteh/index.php?route=product/category&amp;path=25_28_36">test 2</a>

</li>
<li class=""><a href="http://localhost/remteh/index.php?route=product/category&amp;path=25_31">Сканеры</a>

</li>
<li class=""><a href="http://localhost/remteh/index.php?route=product/category&amp;path=25_30">Принтеры</a>

</li>
<li class=""><a href="http://localhost/remteh/index.php?route=product/category&amp;path=25_29">Мышки</a>

</li>
<li class=""><a href="http://localhost/remteh/index.php?route=product/category&amp;path=25_32">Веб-камеры</a>

</li>
<li class=" megamenu-issubchild"><a href="http://localhost/remteh/index.php?route=product/category&amp;path=25_28">Мониторы</a>

<ul class="list-unstyled megamenu-ischild megamenu-ischild-simple">
<li><a href="http://localhost/remteh/index.php?route=product/category&amp;path=25_28_35">test 1</a></li>
<li><a href="http://localhost/remteh/index.php?route=product/category&amp;path=25_28_36">test 2</a></li>
</ul>
</li>
</ul>



</div>
</div>















</li>



</ul>
<div class="clearfix"></div>
</div>
</div>
</nav>
</div>
</div>
Автор: erroraccount
Дата сообщения: 23.06.2016 09:36

Цитата:
самый простой способ, обернуть меню в div и менять его высоту в соответствии с выпавшим меню. это отодвинет все, что идет ниже. для реализации желательно видеть еще и html код меню вместе с css

А можете показать простой способ?
Автор: Mavrikii
Дата сообщения: 23.06.2016 20:09
erroraccount

Цитата:
А можете показать простой способ?

если бы ваше меню изначально работало - показал бы на нем, а так взял первое попавшееся меню - https://jsfiddle.net/uw9nb9qL/

так как набросал по быстрому, то для подразделов меню не работает, но можно доработать.
и без анимации все еще проще - не нужно тогда step функции реализовывать.

ну я обошелся без обертки в что то - просто меняю margin-bottom у меню.

Страницы: 1

Предыдущая тема: Как сделать чтобы меню не сворачивалось когда открыт корень?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.