css - 导航栏中的水平列表项

标签 css responsive-design

我正在尝试构建一个类似于 Github 的导航栏(不使用 Bootstrap nav* 选择器 - 请参阅 this jsfiddle enter image description here

所以我有以下 HTML:

<div class="container" style="margin-top: 20px;">
    <div class="span9">
        <ul class="unstyled main-tabs">
            <li>
                <a href="#">Link1</a>
            </li>
            <li>
                <a href="#">Link2</a>
            </li>
            <li>
                <a href="#">Link3</a>
            </li>
        </ul>
    </div>
</div>

请注意我使用的 span9 类强制导航栏仅占据屏幕的 9/12。

以及以下 CSS:

.main-tabs {
    position: relative;
    margin-bottom: 20px;
    font-size: 12px;
    font-weight: bold;
    background-color: #eaeaea;
    background-image: -moz-linear-gradient(#fafafa, #eaeaea);
    background-image: -webkit-linear-gradient(#fafafa, #eaeaea);
    background-image: linear-gradient(#fafafa, #eaeaea);
    background-repeat: repeat-x;
    border: 1px solid #eaeaea;
    border-bottom-color: #cacaca;
    border-radius: 3px;
}

.main-tabs a {
    display: block;
    text-align: center;
    line-height: 35px;
    font-size: 12px;
    color: #777;
    text-decoration: none;
    text-shadow: 0 1px 0 white;
    border-right: 1px solid #eee;
    border-right-color: rgba(0,0,0,0.04);
    border-left: 1px solid #fcfcfc;
    border-left-color: rgba(255,255,255,0.7);
    border-bottom: 2px solid #DADADA;
}

.main-tabs li {
    list-style-type: none;
}

.main-tabs li .active {
    border-bottom: 2px solid greenyellow;
}

结果是: enter image description here

我将 .main-tabs li 更改为:

 .main-tabs li {
        list-style-type: none;
        float: left;
    }

然后

.main-tabs li {
    list-style-type: none;
    display: block;
}

这仍然给出相同的结果:(

但这并没有真正帮助。 enter image description here

问题 如果不对 liul 元素的宽度进行硬编码(对于响应性问题),是否有办法获得与 Github 上相同的导航栏?

最佳答案

一种久经考验的旧方法是使用表格布局:

.nav {
    display: table;
    width: 100%;
    margin: 0;
    padding: 0;
}

.nav li {
    display: table-cell;
}

现代的方法是使用 flexbox(IE 10+,可能需要很多前缀,因为标准有三个版本):

.nav-alt {
    display: flex;
    margin: 0;
    padding: 0;
}

.nav-alt li {
    flex: auto;
    list-style-type: none;
}

两个版本的演示:http://jsfiddle.net/3qM5y/1/

关于css - 导航栏中的水平列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18967412/

相关文章:

javascript - 通过使用事件监听器而不是内联 onclick 或 jquery 更改带有按钮的 div 的颜色

html - Vimeo 播放器 iframe 高度

html - 如何在另一个 div 类中引用一个 div 类? (内联使用样式标签)

css - 如何在不同的断点处填充上面的折叠

html - 如何在响应式网页中创建视频背景?

Facebook 移动应用响应式

html - 如何将图像与文本对齐然后堆叠它们(响应式)

image-scaling - Chrome 正在拉伸(stretch)我的最大宽度图像的高度

css - 编译 CSS Assets Heroku SASS 时出错

html - 盒子以显示器为中心,但不在平板电脑上