html - 使用 CSS 的选项卡式导航样式

标签 html css

我想要一个简单的选项卡式导航,它在事件状态下有一个简单的区别。我在实现我认为应该是一项非常简单的任务时遇到了一些困难。

Image of tabbed navigation

在 Fiddle 中,我展示了我是如何尝试的,尽管可以通过向 .current 添加 5px 更多的填充然后添加 margin-top: -5px 来完成.但这并没有实现外观。我知道这可能是我缺少的简单内容。

HTML:

<body>
<div class="page-wrap">
    <div class="main-nav">
        <ul>
            <li>
                <a href="#">Home</a>
            </li>
            <li>
                <a href="#">Portfolio</a>
            </li>
            <li>
                <a href="#">About</a>
            </li>
            <li>
                <a href="#" class="current">Latest Projects</a>
            </li>
            <li>
                <a href="#">Blog</a>
            </li>
            <li>
                <a href="#">Contact</a>
            </li>
        </ul>
    </div>
</div>
</body>

CSS:

body {
  width: 1000px;
  margin: 0 auto;
  font-family: "Helvetica", Helvetica, Arial, sans-serif;
}
.main-nav a {
  text-decoration: none;
  display: block;
  font-size: 12px;
}
.main-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
}
.main-nav li {
  float: left;
  display: block;
}
.main-nav ul {
  background-color: #333;
  line-height: 12px;
}
.main-nav a {
  padding: 15px 45px;
  font-weight: 700;
  text-transform: uppercase;
  color: #282b2e;
  text-shadow: 0 1px 0 #ffffff;
}
.main-nav a:hover {
  background: rgba(0, 0, 0, 0.1);
}
.main-nav .current {
  background: #ffffff;
}
.page-wrap {
  background: #ffffff;
  height: 500px;
}

fiddle : http://jsfiddle.net/j970s3mw/

最佳答案

您遇到此问题是因为您使用的是 overflow: hidden在你的 <ul> .您将需要删除它并使用 display: inline-block而不是 float: left放置您的 <li>彼此相邻。

这是一个 jsFiddle Demo .

body {
  width: 1000px;
  margin: 0 auto;
  font-family: "Helvetica", Helvetica, Arial, sans-serif;
}
.top {
  height: 100px;
  background: #000;
}
.main-nav a {
  text-decoration: none;
  display: block;
  font-size: 12px;
}
.main-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.main-nav li {
  float: none;
  display: inline-block;
}
.main-nav ul {
  background-color: #999;
  line-height: 12px;
}
.main-nav a {
  padding: 15px 45px;
  font-weight: 700;
  text-transform: uppercase;
  color: #282b2e;
  text-shadow: 0 1px 0 #ffffff;
}
.main-nav a:hover {
  background: rgba(0, 0, 0, 0.1);
}
.main-nav .current {
  background: #ffffff;
  padding-top: 20px;
  margin-top: -5px;
}
.page-wrap {
  background: #ffffff;
  height: 500px;
}
a.current:hover {
  background: #fff;
}
<body>
    <div class="top"></div>
    <div class="page-wrap">
        <div class="main-nav">
            <ul>
                <li> 
                <a href="#">Home</a></li><li> 
                <a href="#">Portfolio</a></li><li> 
                <a href="#">About</a></li><li> 
                <a href="#" class="current">Latest Projects</a></li><li> 
                <a href="#">Blog</a></li><li> 
                <a href="#">Contact</a></li>
            </ul>
        </div>
    </div>
</body>

此外,由于您不希望为非事件选项卡设置的悬停样式影响事件选项卡,您可以使用以下方法覆盖当前选项卡的样式:

a.current:hover {
      background: #fff;
      //add more styles as per your needs 
}

关于html - 使用 CSS 的选项卡式导航样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26621057/

相关文章:

javascript - 在 iPhone 5s 上的 iOS 9 上网站崩溃/无法加载

css - iPad 上闪烁的 css 动画

javascript - 使用 Jquery onclick 添加边框底部

javascript - 创建 SVG 使用

php - 与 URL 混合时未传递 GET 变量

PHP 未以正确的格式导出 MySQL 数据库

css - 名为 'for_box2' 的 css 动画无法正常工作

html - 在 Google Chrome 中使黄色自动完成透明

html - 自动 div 溢出到父 div

css - 重叠的 CSS 列