更新:根据以下答案之一简化 HTML 和 CSS。然而,问题仍然存在。
我有一个像这样的工作导航:
item11item2item3 Centered item4item5item6
我想在项目之间添加填充,所以它看起来像这样:
item1 item2 item3 Centered item4 item5 item6
左边的项目是右对齐的。右边的项目是左对齐的。
问题
- 如果我
float: right;
用来证明列表的合理性,我会得到item3 item2 item1
. - 如果我使用
float: left;
并将容器宽度设置为auto
,我可以获得正确的布局,但只有当我使用px
填充时。 当我使用
%
填充时,padding-left: 3%;
它会中断并看起来像这样:item1 item2 Centered item4 item5 item6 item3
这是我的HTML:
<div class="container">
<nav>
<ul class="left">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<ul class="center">
<li>Centered</li>
</ul>
<ul class="right">
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
</ul>
</nav>
</div>
这是我的CSS:
/* Reset */
html, body, nav, li {
margin: 0; padding: 0; border: 0;
}
li {
list-style-type: none;
list-style-position: outside;
}
/* Styles */
.container {
width: 100%;
height: auto;
}
nav {
width: 80%;
margin: 0 auto;
}
nav > ul.left {
position: absolute;
right: 55%;
}
nav > ul.left > li {
float: left;
padding-right: 5%;
}
.center {
position: absolute;
left: 45%;
width: 10%;
}
.center li {
text-align: center;
}
nav > ul.right {
position: absolute;
left: 55%;
width: 45%;
}
nav > ul.right > li {
float: left;
padding-left: 5%;
}
笔记:
- 我正在使用绝对定位和容器以保持“居中”完全居中,即使左右导航项的宽度不相同。
- 我使用基于 % 的宽度,因为它是灵活的布局(响应式)
- 上面的代码工作正常,但我真的很想基于填充百分比,所以它很灵活。
因此,当我使用像素时,似乎li-container
div 正确地继承了宽度并考虑了填充,但当我使用百分比时却没有。这是典型的行为吗?解决办法是什么?
这是一个 jsFiddle,以防您想玩弄它。
附加更新:
主要问题似乎是需要将“左”项右对齐。如果我使用float:right
,那么我会得到相反的顺序,这不好。如果我float:left
在左边的项目上使用,那么顺序是正确的,但我需要从容器中删除明确的宽度,或者项目不是右对齐的。删除显式容器宽度会导致我遇到的问题。