html - 首次加载时 Bootstrap Navheader Safari 奇怪的布局

标签 html css twitter-bootstrap safari

我在使用 Bootstrap 导航 header 的 Safari 中看到一个奇怪的布局。这有时只会出现在第一页加载时。刷新页面会给出正确的布局(打开一个新窗口并粘贴 url 会相当一致地触发不正确的布局。)

这是当前布局的图片:

Correct

这是我有时重新打开页面时的布局:

Incorrect

我希望链接部分与品牌位于同一行,位于右侧。

这里是相关的 html(我尽量减少它):

<header>
    <nav class="navbar navbar-default navbar-fixed-top">
        <div class="container-fluid">
            <div class="navbar-header">
                <button class="navbar-toggle" data-target=
        "#collapser" data-toggle="collapse"
        type="button">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="/" id="brand">
                <img src=
    "http://upload.wikimedia.org/wikipedia/commons/f/f1/Android_sample.svg"
    style="height: 40px">
                </a>
                <ul class="navbar-nav pull-left" id="path">
                    <li>
                        <a href="link">a link</a>
                    </li>
                </ul>
            </div>
            <div id="collapser" class="collapse navbar-collapse">
                <a class="navbar-right btn btn-default" id="navbar-login">login</a>
            </div>
        </div>
    </nav>
</header>

还有样式:

#brand {
    line-height: 50px;
    padding: 0 1.2rem;
    padding-right: 0;
    width: 120px;
}

#path {
    list-style: none;
    margin: 0;
    padding-top: 16px;
    padding-left: 0;
}

#path li {
    float: left;
}

#path  li:before {
    content: "/";
    padding: 0 0.6rem;
}

关于解决这种奇怪行为的任何想法?

最佳答案

这似乎是 Safari 的一个错误。

我用下面的方法解决了它:

  • 绝对定位真正的标志。
  • #path
  • 添加 120px( Logo 的宽度)左边距

这因导航栏折叠部分而变得复杂,它会在折叠时将 #path 转移到 Logo 中。最简单的解决方案是将 #path 包装在另一个 .navbar-brand 类中,#path-nav 在这里。最后,Firefox 需要 path-nav 才能使用 float: none

这是修改后的工作示例:

<header>
    <nav class="navbar navbar-default navbar-fixed-top">
        <div class="container-fluid">
            <div class="navbar-header">
                <button class="navbar-toggle" data-target=
        "#collapser" data-toggle="collapse"
        type="button">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="/" id="brand">
                <img src=
    "http://upload.wikimedia.org/wikipedia/commons/f/f1/Android_sample.svg"
    style="height: 40px">
                </a>
                <div id="path-nav" class="navbar-brand">
                    <u id="path">
                        <li>
                            <a href="link">a link</a>
                        </li>
                    </ul>
                </div>
            </div>
            <div id="collapser" class="collapse navbar-collapse">
                <a class="navbar-right btn btn-default" id="navbar-login">login</a>
            </div>
        </div>
    </nav>
</header>

.

#brand {
    line-height: 50px;
    padding: 0 1.2rem;
    padding-right: 0;
    width: 120px;
    position: absolute;
}

#path {
    list-style: none;
    margin: 0;
    margin-left: 120px;
    padding-top: 4px;
    padding-left: 0;
}

#path li {
    float: left;
}

#path li:before {
    content: "/";
    padding: 0 0.6rem;
}

/* for firefox */ 
#path-nav {
    float: none;
}

关于html - 首次加载时 Bootstrap Navheader Safari 奇怪的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29091569/

相关文章:

html - 单击菜单项后导航栏和子菜单不折叠

javascript - 在 React 组件中渲染时模态不显示

html - 标题标题的 IE 不兼容

jquery - Bootstrap 弹出窗口 : Align on top right

html - 如何将 mime 类型添加到 htaccess 文件?

javascript - HTML5 Canvas 游戏- 背景不工作

javascript - 当有人进入时提醒文本字段值

ios - Contenteditable 元素背景在触摸元素内部时闪烁

javascript - 将...替换为阅读更多(自定义省略号)

html - 如何在 CSS 中水平居中 10000px(比全屏宽)的 div?