全角标签栏,在文本和标签边之间具有相等的左/右填充

时间:2014-08-15 06:47:59

标签: jquery css tabs padding

我有一个标签栏需要扩展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

2 个答案:

答案 0 :(得分:0)

Afaik你最接近使用纯css将table-layout更改为auto:

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

答案 1 :(得分:0)

您可以使用flexbox:

nav ul {
    display: flex;
}

nav ul li {
    flex-grow: 1;
}

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

但是你应该看一下browser support