【问题标题】:Full-width tab bar that has equal left/right padding between text and tab edges全宽标签栏,在文本和标签边缘之间具有相等的左/右填充
【发布时间】:2014-10-08 22:43:34
【问题描述】:

我有一个标签栏需要扩展 100% 的页面布局。我需要它们在文本的左/右侧与选项卡边缘之间具有相同数量的左/右填充,而不是每个选项卡具有相同的宽度。 (请注意除了产品详细信息之外的所有选项卡中都有很多空间)

这可以使用纯 CSS 来实现吗?如果没有,如何使用 jQuery 来完成?

HTML

<nav>
  <ul>
    <li><a href="home.html">Home</a></li>
    <li><a href="about.html">About</a></li>
    <li><a href="services.html">Services</a></li>
    <li><a href="product-details.html">Products Detail</a></li>
    <li><a href="jobs.html">Jobs</a></li>
    <li><a href="contact.html">Contact</a></li>
  </ul>
</nav>

CSS

body {
  font-family: Arial, sans-serif;
  padding: 4px;
  text-align: center;
}

h1 {
  text-align: center;
  font-weight: normal;
}

nav {
  background: #f0f0f0;
  border: 1px solid #ccc;
  border-right: none;
  width: 100%;
  margin-bottom: 20px;
}

nav ul {
  margin: 0;
  padding: 0;
}

nav ul li {
  list-style: none;
  text-align: center;
  border-left: 1px solid #fff;
  border-right: 1px solid #ccc;
}

nav ul li:first-child {
  border-left: none;
}

nav ul li a {
  display: block;
  text-decoration: none;
  color: #616161;
  padding: 10px 0;
}

nav {
  display: table;
  table-layout: fixed;
}

ul {
  display: table-row;
}

ul li {
  display: table-cell;
}

.x {
  display: none;
}

.p {
  text-align: center;
  font-size: 14px;
  margin-top: 80px;
}

.d {
  color: #ccc;
}

@media (max-width: 430px) {

  nav {
    font-size: .8em;
  }

  nav ul li {
    display: block;
    border-bottom: 1px solid #ccc;
  }

}

这是我的JSFiddle

【问题讨论】:

  • 我不知道你想要什么。 lz能再解释一下吗?

标签: jquery css tabs padding


【解决方案1】:

Afaik 最接近使用纯 CSS 的方法是将表格布局更改为自动:

nav {
  display: table;
  table-layout: auto;
}

【讨论】:

  • 您可以通过向链接添加左/右填充来更接近padding:10px;
【解决方案2】:

你可以使用 flexbox:

nav ul {
    display: flex;
}

nav ul li {
    flex-grow: 1;
}

例如http://jsfiddle.net/2eqk1kcs/

不过你应该看看browser support

【讨论】: