WordPress管理栏与Twitter Bootstrap导航重叠

时间:2013-02-20 作者:TheWebs

我对WordPress管理栏与Twitter引导重叠有问题(2.3.0) 导航栏。我已尝试此修复:

body.admin-bar .navbar-fixed-top {
    top: 28px;
}

.navbar .brand {
    color: #000 !important;
    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 0 30px
        rgba(255, 255, 255, 0.125);
    font-weight: bold !important;
}

.nav-container {
    padding-left: 0;
    padding-right: 0;
}

.nav-tabs, .nav-pills {
    margin-top: -6px;
}

.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a
    {
    color: #fff !important;
}

#inner-header {
    width: 100%;
}

input,textarea,select,.uneditable-input {
    margin-bottom: 0;
}

.navbar-form,.navbar-search {
    margin: 0 0 9px;
}

.navbar-search {
    padding-left: 0;
}

#s {
    width: 100px;
}
但遗憾的是,这仍然是一个问题。我想知道有哪些修复程序可用?

6 个回复
最合适的回答,由SO网友:Michael Ecklund 整理而成

How to prevent the WordPress admin bar from overlapping with your Twitter Bootstrap navigation bar.

In response to: WordPress admin bar overlapping twitter bootstrap navigation

Asked by: @TheWebs

如果您正在使用Twitter Bootstrap 具有WordPress 如果WordPress管理栏与导航栏重叠,您可能会对其中一些答案感到非常沮丧。我到处寻找解决方案,最终决定降档到较低的档位,并找到一个完全符合我需要的解决方案。

因此,这里的答案不会隐藏WordPress管理栏,也不会将WordPress管理栏移到页面底部。这个答案将使WordPress管理栏保持在它所属的位置。。。在页面顶部。

请注意,这将需要几个简短的步骤来完成,但这是值得的。这并不是一个复杂或耗时的过程。我只是想确保关于如何做到这一点的解释清楚易懂。

步骤1添加get_body_class(); 到您的主题<body> 标记主题的正文标签有一个模板标签,这将帮助主题作者更有效地使用CSS进行样式设计。模板标记被调用body_class. 此函数为body元素提供了不同的类,通常可以在header.php\'s HTML正文标记。

  1. Open 您当前使用Twitter Bootstrapdirectory激活的WordPress主题。发现header.php 打开它
  2. Find <body>.
  3. Replace with <?php echo \'<body class="\'.join(\' \', get_body_class()).\'">\'.PHP_EOL; ?>
完成上述三个步骤后,您现在已经成功地使用WordPress主体类启用了WordPress主题。

步骤2(可选!)<body> 标记默认情况下,如果您使用body_class()get_body_class() 功能。

如果您查看WordPress网站上任何呈现的前端页面的源代码,您将注意到自动添加到HTML中的两个CSS类<body> 标签为“登录”和“管理栏”。

您还将注意到,这些CSS类名只添加到HTML中<body> 标记用户是否已登录,否则不会将其添加到HTML中<body> 标签

因此,如果您不想使用默认的WordPress CSS类名,您可以很容易地添加自己的类名。

  1. Open 您当前使用Twitter引导目录的活动WordPress主题。发现functions.php 打开它
  2. Add add_filter(\'body_class\', \'mbe_body_class\'); 到文件的顶部
  3. Add 下面的代码,位于文件的底部

The code:

function mbe_body_class($classes){
    if(is_user_logged_in()){
        $classes[] = \'body-logged-in\';
    } else{
        $classes[] = \'body-logged-out\';
    }
    return $classes;
}
现在,如果您查看WordPress网站上任何呈现的前端页面的源代码,如果用户已登录,您将看到“body logged in”已添加到HTML中<body> 标记,如果用户已注销,您将看到HTML中添加了“body logged out”<body> 标签

第3步将CSS代码添加到主题中这是代码的一部分,它将更正主题以正确显示WordPress管理栏和Twitter引导导航,无论用户是登录还是注销您的网站。

  1. Open 您当前使用Twitter引导目录的活动WordPress主题。发现functions.php 打开它
  2. Add add_action(\'wp_head\', \'mbe_wp_head\'); 到文件的顶部
  3. Add 下面的代码,位于文件的底部

The code:

function mbe_wp_head(){
    echo \'<style>\'.PHP_EOL;
    echo \'body{ padding-top: 70px !important; }\'.PHP_EOL;
    // Using custom CSS class name.
    echo \'body.body-logged-in .navbar-fixed-top{ top: 28px !important; }\'.PHP_EOL;
    // Using WordPress default CSS class name.
    echo \'body.logged-in .navbar-fixed-top{ top: 28px !important; }\'.PHP_EOL;
    echo \'</style>\'.PHP_EOL;
}

EDIT TO CODE

add_action(\'wp_head\', \'mbe_wp_head\');
function mbe_wp_head(){
    echo \'<style>\'
    .PHP_EOL
    .\'body{ padding-top: 70px !important; }\'
    .PHP_EOL
    .\'body.body-logged-in .navbar-fixed-top{ top: 46px !important; }\'
    .PHP_EOL
    .\'body.logged-in .navbar-fixed-top{ top: 46px !important; }\'
    .PHP_EOL
    .\'@media only screen and (min-width: 783px) {\'
    .PHP_EOL
    .\'body{ padding-top: 70px !important; }\'
    .PHP_EOL
    .\'body.body-logged-in .navbar-fixed-top{ top: 28px !important; }\'
    .PHP_EOL
    .\'body.logged-in .navbar-fixed-top{ top: 28px !important; }\'
    .PHP_EOL
    .\'}</style>\'
    .PHP_EOL;
}
此版本的mbe\\u wp\\u head功能包括一个mobile first media查询,以确保您的头被向下推到适当的距离。对于移动设备,WP管理栏的高度为48px。在783px断点之后,管理栏缩短到只有28px高

给你。如果用户已登录,您现在应该将WordPress管理栏放在页面的最上方,然后立即启动推特导航。如果用户已从WordPress网站注销,您的Twitter引导导航仍应适当显示在网站顶部。

SO网友:Filtah

对我来说不管用,但我找到了一个很好的解决办法。在标题中。php使用wordpress函数查询工具栏是否显示,然后在导航栏div下面创建一个空div:

<div class="navbar navbar-inverse navbar-fixed-top">
<?php 
  // Fix menu overlap
  if ( is_admin_bar_showing() ) echo \'<div style="min-height: 32px;"></div>\'; 
?>
<div class="navbar-inner">

SO网友:Tamara

您可以尝试以下操作:

   .navbar-fixed-top { top: 0px; }
    body.admin-bar .navbar-fixed-top { top: 28px !important; }
如果这确实对你有用(应该是这样!),然后,您必须将wp管理栏移到底部,将下面的代码粘贴到插件文件夹或您的函数中。php文件:

function fb_move_admin_bar() {
    echo \'
    <style type="text/css">
    body { 
    margin-top: -28px;
    padding-bottom: 28px;
    }
    body.admin-bar #wphead {
       padding-top: 0;
    }
    body.admin-bar #footer {
       padding-bottom: 28px;
    }
    #wpadminbar {
        top: auto !important;
        bottom: 0;
    }
    #wpadminbar .quicklinks .menupop ul {
        bottom: 28px;
    }
    </style>\';
}
// on backend area
add_action( \'admin_head\', \'fb_move_admin_bar\' );
// on frontend area
add_action( \'wp_head\', \'fb_move_admin_bar\' );
作为替代方案,您可以使用this plugin

我真的不喜欢使用插件,因为大多数主题都用我不需要的伪代码加载我的脚本。。。上面的解决方案1和2运行良好,但如果对您不起作用,您可以尝试下面的解决方案3:

function stick_admin_bar_to_bottom_css() {
echo "

html {
padding-bottom: 28px !important;
}

body.admin-bar {
margin-top: -28px;
}

#wpadminbar {
top: auto !important;
bottom: 0;
}

#wpadminbar .quicklinks .menupop ul {
bottom: 28px;
}

";
}

add_action(\'admin_head\', \'stick_admin_bar_to_bottom_css\');
add_action(\'wp_head\', \'stick_admin_bar_to_bottom_css\');
这对我来说似乎很好,没有28px的问题。。

SO网友:timhc22

在我将此添加到body标签之前,它对我不起作用:

<body <?php body_class(); ?>>
然后它工作得很好!

SO网友:user49936

修复Bootstrap 2和;3.navbar-fixed-top 防止站点菜单与WordPress管理菜单重叠

.admin-bar .navbar-fixed-top {
  top:46px;
  @media screen and (min-width:782px) {
    top:32px;
  }
}
修复引导4fixed-top 防止站点菜单与WordPress管理菜单重叠

.admin-bar .fixed-top {
  top:46px;
  @media screen and (min-width:782px) {
    top:32px;
  }
}

SO网友:Brandon Morgan

完美的然而,正如我所期待的,我在步骤3中做了一些稍微不同的事情。不确定这是否重要,但我的代码如下所示。。。

    function mbe_wp_head(){
    echo \'<style>\'.PHP_EOL;
    echo \'body{ padding-top: 70px !important; }\'.PHP_EOL;
    // Using custom CSS class name.
    echo \'body.body-logged-in .navbar-fixed-top{ top: 28px !important; }\'.PHP_EOL;
    // Using WordPress default CSS class name.
    echo \'body.logged-in .navbar-fixed-top{ top: 28px !important; }\'.PHP_EOL;
    echo \'</style>\'.PHP_EOL;
}
add_action(\'wp_head\', \'mbe_wp_head\');
你提到在不同的地方添加,但我一直都是这样做的,看起来效果不错。感谢修复!

结束