【问题标题】:Better method than float:right in navigation bar?比浮动更好的方法:在导航栏中?
【发布时间】:2013-10-22 20:16:23
【问题描述】:

我已经使用样式做了一个水平导航栏,但是我遇到了一个大问题...由于<li>是块元素,我无法使用text-align:right对齐它,这导致我无法对齐它正确。我已经尝试对 list-item 元素使用 display:inline; 语法,但这也没有任何区别(这实际上是有道理的)。

我的问题是,有没有什么方法可以水平对齐<li>,而不必使用float:right;?我希望它适合当前列表的格式(我已经调整它以适合父 div),并且使用 float 并不是一个好的或安全的方法。 Here's 到目前为止我得到的截图(由于最近添加了图像,布局有些混乱)。正如你所看到的,我已经设法正确放置了“我的页面”和“注销”,但是一旦我添加了一些更“复杂”的东西(比如“+”,它现在被放置在普通列表中) ,搞砸了……我真的不明白其他网站是如何做到这一点的。

【问题讨论】:

  • 请使用 jsfiddle 发布您的代码
  • 您是否明确将它们声明为block?因为lis 默认为display:list-item;。 => w3.org/TR/html-markup/li.html#li-display
  • @PlantTheIdeal 我确实为所选列表项声明了list-style-type:none;display:inline;。但是,我真的不知道它们是默认的“列表项”而不是“块”。不过,这并没有改变什么吗?
  • 另外,我将继续编辑问题,添加我在样式表中声明的内容。

标签: html css


【解决方案1】:

你必须为包含元素定义text-align: right

HTML:

<ul class="nav">
    <li class="menu">1</li>
    <li class="menu">2</li>
    <li class="menu">3</li>
    <li class="menu">4</li>
    <li class="menu">5</li>
</ul>

CSS:

.nav {
    text-align: right;
}

.menu {
    display: inline;
}

JSFiddle

如果您愿意,您可以将菜单分成左右两部分。根据需要添加或删除填充和边距

HTML:

<ul class="nav left-nav">
    <li class="menu">1</li>
    <li class="menu">2</li>
    <li class="menu">3</li>
</ul>
<ul class="nav right-nav">
    <li class="menu">4</li>
    <li class="menu">5</li>
</ul>

CSS:

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

.left-nav {
    text-align: left;
}

.right-nav {
    text-align: right;
}

.menu {
    display: inline;
}

JSFiddle

【讨论】:

  • 很棒的信息,真的!但是,我有点需要一半的菜单在一侧,并且创建一个新的 ul 元素似乎可以创造空间......这是我的意思的图片:prntscr.com/1z21fk(我尝试使用span 和其他东西也一样,但没有效果)
  • 您可以有两个列表,一个用于左侧,一个用于右侧。查看更新的答案。
  • 但问题是,我正在经历两者之间的空间。这是我制作的新列表(仅使用您的代码和我的特殊 div):prntscr.com/1z268a。如您所见,div 有点拉伸。我有点希望它们出现在同一个“行”上。
  • 那你必须返回float: leftfloat: right,看这个jsfiddle.net/nucyX/2,或者使用position: absolute,看这里jsfiddle.net/nucyX/3
  • 感谢您向我解释这一点。我决定直接使用float:right;float:left,因为你说这是必须的。现在它可以工作了,因为我将这些与overflow-y:auto; 结合在一起,它仍然可以调整 div 的高度,因此背景清晰可见。
【解决方案2】:

给你,我想这就是你要找的:

jsfiddle.net/Sdw5h/

【讨论】:

  • 这是我一直在使用的方法,但不幸的是它结束了float:right,这是我在这种情况下并不真正想要的。编辑:等等,刚刚看到一些有趣的东西......我会进一步调查你的答案。
  • 这种方法也可以,但它与(有些复杂的)原始代码有点不同(而且,我不太习惯使用&lt;nav&gt; 标签......感觉有点新对我来说,这可能意味着与旧浏览器的兼容性问题)。不过还是谢谢。
  • 您可以将
猜你喜欢
  • 1970-01-01
  • 2017-03-06
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
相关资源
最近更新 更多