【问题标题】:Nav bar align: Logo on left, links on right导航栏对齐:左侧的徽标,右侧的链接
【发布时间】:2016-05-11 20:34:35
【问题描述】:

我无法在导航栏上正确对齐。我试图弄清楚如何让徽标部分留在导航栏的左侧,但将链接放在右侧。我试过使用 float: 对,但我似乎无法让它只在链接上工作。我该怎么做?

https://jsfiddle.net/t46bcayd/1/

<nav>
    <ul>
        <li><a href="http://google.com/" class="logo">Logo</a></li>
        <li><a href="http://google.com/">One</a></li>
        <li><a href="#">Two</a></li>
        <li><a href="#">Three</a></li>
    </ul>
</nav>

【问题讨论】:

  • 听说过伪类吗?看到这个jsfiddle.net/t46bcayd/4
  • flexbox 的完美案例......不要让浮动毁了你的一天

标签: css html


【解决方案1】:

Flexbox 在这里是完美的...无需更改结构,除非您愿意。

body {
  margin: 0;
  padding: 0;
  font-size: 15px;
}
nav {
  background-color: black;
  margin: 0;
  overflow: hidden;
}
nav ul {
  margin: 0;
  padding: 0;
  display: flex;
}
nav ul li {
  display: inline-block;
  list-style-type: none;
}
nav ul li a {
  color: white;
  background-color: red;
  display: block;
  line-height: 3em;
  padding: 1em 3em;
  text-decoration: none;
}
nav ul li:first-child {
  margin-right: auto;
}
nav ul li a.logo {
  background-color: green;
}
nav ul li a:hover {
  background-color: blue;
}
<nav>
  <ul>
    <li><a href="http://google.com/" class="logo">Logo</a>
    </li>
    <li><a href="http://google.com/">One</a>
    </li>
    <li><a href="#">Two</a>
    </li>
    <li><a href="#">Three</a>
    </li>
  </ul>
</nav>

【讨论】:

    【解决方案2】:

    如果您删除列表项的 inline-block 规则,您可以将第一个向左浮动,其他向右浮动:

    li {
        float: right;
    }
    
    li:first-child {
        float: left;
    }
    

    jsFiddle example

    您还需要重新排序浮动到右侧的列表项:

    <li><a href="http://google.com/" class="logo">Logo</a></li>
    <li><a href="#">Three</a></li>
    <li><a href="#">Two</a></li>
    <li><a href="http://google.com/">One</a></li>
    

    【讨论】:

      【解决方案3】:

      您可以为此使用 flexbox。

      <style>
          nav{
             display:flex;
             justify-content: space-between;
             align-items: center;
          }
      </style>
      <nav>
          <a href="http://google.com/" class="logo">Logo</a>
          <ul>
              <li><a href="http://google.com/">One</a></li>
              <li><a href="#">Two</a></li>
              <li><a href="#">Three</a></li>
          </ul>
      </nav>
      

      记住前缀 ... 适用于 IE > 9

      【讨论】:

        【解决方案4】:

        使用float:left 属性

        body {
            margin: 0;
            padding: 0;
            font-size: 15px;
        }
        
        nav {
            background-color: black;
            margin: 0;
            overflow: hidden;
        }
        
        nav ul {
            margin: 0;
            padding: 0;
        }
        
        nav ul li:not(:first-child) {
          float: right;
        }
        
        nav ul li {
            display: inline-block;
            list-style-type: none;
        }
        
        nav ul li a {
            color: white;
            background-color: red;
            display: block;
            line-height: 3em;
            padding: 1em 3em;
            text-decoration: none;
        }
        
        nav ul li a.logo {
            background-color: green;
        }
        
        nav ul li a:hover {
            background-color: blue;
        }
        <nav>
          <ul>
            <li><a href="http://google.com/" class="logo">Logo</a></li>
              <li><a href="http://google.com/">Three</a></li>
              <li><a href="#">Two</a></li>
              <li><a href="#">One</a></li>
          </ul>
        </nav>

        我确实必须更改顺序,以便他们正确显示

        【讨论】:

        • 创建无效的 HTML
        • &lt;div&gt; 不能是 &lt;ul&gt; 的子代
        • 我刚刚意识到并修复了它
        • 好的,但是现在右导航的顺序是向后的。 3 2 1 而不是 1 2 3。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-13
        • 1970-01-01
        • 2022-11-10
        • 2023-03-13
        • 1970-01-01
        • 2019-04-22
        • 1970-01-01
        相关资源
        最近更新 更多