【问题标题】:Two-part Bootstrap navigation menu with logo in the center两部分 Bootstrap 导航菜单,中间有徽标
【发布时间】:2017-02-19 18:50:32
【问题描述】:

我正在使用 nav_walker 在导航栏中制作动态 wordpress 链接。我如何在 wordpress nav_walker 中实现这样的中心:

+-----------------------------+-----------+------------------------------+
+---------------HOME--ABOUT---|-LOGO HERE-|---CONTACT--PROFILE-----------+
+-----------------------------+-----------+------------------------------+

我该怎么做,或者提供一些 jsfiddle 来解决这个问题。 左右导航是两个nav_walker函数吗?如何在中心插入导航栏品牌?谁能给我结构。谢谢。

我的代码:

<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
    </div>

    <div class="navbar-brand navbar-center">

    </div>

    <?php wp_nav_menu(array(
        'menu'           => 'primary-1',
        'theme_location' => 'primary-1',
        'depth'          => 2,
        'container'      => 'div',
        'container_class'   => 'collapse navbar-collapse navbar-center',
        'container_id'      => 'bs-example-navbar-collapse-1',
        'menu_class'        => 'nav navbar-nav',
        'fallback_cb'       => 'wp_bootstrap_navwalker::fallback',
        'walker'            => new wp_bootstrap_navwalker()
        )); 
    ?>
</nav>

【问题讨论】:

  • 到目前为止你有没有尝试过?
  • @Nikhil Nanjappa 是的,先生。我尝试了两个 div,但它失败了。我做了两个导航。它不符合我想要的。 :(请帮帮我先生。谢谢你的回答
  • 我猜你在问如何从你的 wordpress 菜单中获取菜单项并将它们分开。看看this
  • 先生,我已经有了菜单。我只需要像我发布的那样将它们分开即可。可以自动将它们分成两部分的对齐方式
  • "wp_nav_menu" 显示完整菜单。但是“wp_get_nav_menu_items”为您提供菜单中的实际项目。可以得到返回的数组的长度,然后一分为二。

标签: html css wordpress twitter-bootstrap wp-nav-walker


【解决方案1】:

好的,尝试使用下面的标记来实现您正在寻找的内容,您还需要调整一些 CSS 以覆盖引导程序的默认样式。

HTML

<nav class="navbar navbar-default navbar-fixed-top">
  <div class="container">
    <div id="navbar" class="navbar-collapse collapse">
      <ul class="nav navbar-nav">
         <li class="active"><a href="#">Home</a></li>
         <li><a href="#about">About</a></li>
         <a class="navbar-brand">Your logo</a>
         <li><a href="../navbar/">Contact</a></li>
         <li><a href="../navbar/">Profile</a></li>
      </ul>
    </div><!--/.nav-collapse -->
  </div>
</nav>

实现你想要的CSS(确保它覆盖了默认的引导样式)

.navbar-nav {
    float: none;
    margin: auto;
    max-width: 40%; //adjust to your requirements
}

Codepen here

【讨论】:

  • 如何将 navwalker 分成两部分先生.. 感谢您的回答
  • 你能告诉我你说的一分为二是什么意思吗? Check this codepen 请。
  • 我的意思是动态 navwalker wordpress 功能先生,它使导航动态添加页面。我怎样才能让它自动分成两部分,中间是标志先生
【解决方案2】:

不久前,我在寻找完全相同的东西,偶然发现了这支笔。 支持Bryan Willis

Bootstrap 3 Headers看最后一个例子!

HTML

<div class="container">
<nav class="navbar navbar-default">
<div class="container-fluid">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar9">
      <span class="sr-only">Toggle navigation</span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>
  </div>

  <div class="brand-centered">
  <a class="navbar-brand" href="http://disputebills.com"><img style="margin-right: 10px; padding: 0;" src="http://res.cloudinary.com/disputebills/image/upload/v1462474206/blue-mark_cnzgry.png" alt="Dispute Bills">Dispute Bills
  </a>
  </div>

  <div id="navbar9" class="navbar-collapse collapse">
    <ul class="nav navbar-nav navbar-left">
      <li class="active"><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
    </ul>
    <ul class="nav navbar-nav navbar-right">
      <li class="active"><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
    </ul>
  </div>
  <!--/.nav-collapse -->
</div>
<!--/.container-fluid -->

CSS

.navbar-brand {
  padding: 0px;
}
.navbar-brand>img {
  height: 100%;
  padding: 15px;
  width: auto;
}
/* EXAMPLE 9 - Center with Flexbox and Text*/
.brand-centered {
  display: flex;
  justify-content: center;
  position: absolute;
  width: 100%;
  left: 0;
  top: 0;
}
.brand-centered .navbar-brand {
  display: flex;
  align-items: center;
}

【讨论】:

    【解决方案3】:

    如果您在左右两侧有相同数量的项目,它可以非常简单。只需创建一个列表,将徽标放在中间并执行text-align: center。见这里:https://jsfiddle.net/DTcHh/26132/

    当左右稍微不均匀时,麻烦就开始了。我建议创建两个列表,每个列表占屏幕的一半。它们将向中心对齐,并在中心为徽标留出空间。

    在这里查看:https://jsfiddle.net/DTcHh/26133/

    html:

    <div class="navbar navbar-default">
        <div class="logo-wrapper">
            <div class="logo"><img class="logo" src="http://www.hsdtaxlaw.com/wp-content/uploads/2016/05/logo_placeholder.png" alt=""></div>
        </div>
        <div class="half">      
            <ul class="left-navlist">
                <li>Home</li>
                <li>About</li>
            </ul>
        </div>
        <div class="half">      
            <ul class="right-navlist">
                <li>Contact</li>
                <li>Profile</li>
                <li>Maps</li>
            </ul>
        </div>
    </div>
    

    css:

    .logo-wrapper {
        text-align: center;
        margin-bottom: -37px;
    }
    
    .logo {
        width: 100px;
        display: inline-block;
    }
    
    .navbar li {
        display: inline-block;
        padding: 0 10px 10px;
    }
    
    .half {
        width: 50%;
        display: block;
        float: left;
    }
    
    .right-navlist {
        padding-left: 60px;
    }
    
    .left-navlist {
        text-align: right;
        padding-right: 60px;
    }
    

    至于如何用 wordpress 实现这一点,我相信你将不得不摆脱 navwalker 插件。只需在 wordpress 中创建两个菜单:left-primaryright-primary。然后只需使用wp_get_nav_menu_items('left-primary') 迭代它们并按照我的建议构建菜单。这是没有导航步行器的 php 代码:

    <div class="navbar navbar-default">
        <div class="logo-wrapper">
            <div class="logo"><img class="logo" src="http://www.hsdtaxlaw.com/wp-content/uploads/2016/05/logo_placeholder.png" alt=""></div>
        </div>
        <div class="half">      
            <ul class="left-navlist">
                <?
                    $menu = wp_get_nav_menu_items('left-primary');
                    foreach ($menu as $menu_item) {
                        $title = $menu_item->title;
                        $link = $menu_item->url;
                        ?>
                            <li href="<?=$link?>"><?=$title?></li>
                        <?
                    ?
                ?>
            </ul>
        </div>
        <div class="half">      
            <ul class="right-navlist">
                <?
                    $menu = wp_get_nav_menu_items('right-primary');
                    foreach ($menu as $menu_item) {
                        $title = $menu_item->title;
                        $link = $menu_item->url;
                        ?>
                            <li href="<?=$link?>"><?=$title?></li>
                        <?
                    ?
                ?>
            </ul>
        </div>
    </div>
    

    【讨论】:

    • 非常感谢您的回答先生。我编辑了我的帖子,不知何故..我想知道如何划分我的 navwalker,因为我使用的是 wordpress。
    • 我觉得这应该被接受为答案,因为它完全符合 OP 的要求。
    • @JcJohn 我添加了没有 navwalker 的 php 代码。您只需在 wordpress 中添加两个菜单:wpbeginner.com/beginners-guide/…
    • @JcJohn 总是乐于提供帮助。您也可能只有一个菜单,将偶数项放在左侧,奇数项放在右侧。
    猜你喜欢
    • 2015-11-04
    • 2015-09-22
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2017-06-21
    相关资源
    最近更新 更多