Css 如何保持<;李>;固定宽度单线上的元素<;ul>;?
我有一个标题Css 如何保持<;李>;固定宽度单线上的元素<;ul>;?,css,html-lists,fixed-width,Css,Html Lists,Fixed Width,我有一个标题div,下面有一个菜单ul。我想完成两件事: 1) ul的宽度应与div的宽度相同(外部垂直边框与x位置完全相同 2) 我希望保持li元素之间的间距大致相等 通过对li的边距和填充的一些尝试和错误,我在Google Chrome中大致达到了第一点(请参见此),但在Firefox中li不适合ul,因此它们不会停留在一行上。此外,放大/缩小时,最后一个li往往会“溢出”到第二行 我在li元素上尝试了margin:5px auto和padding:5px auto,但这里auto似乎表示零
div
,下面有一个菜单ul
。我想完成两件事:
1) ul
的宽度应与div
的宽度相同(外部垂直边框与x位置完全相同
2) 我希望保持li
元素之间的间距大致相等
通过对li
的边距和填充的一些尝试和错误,我在Google Chrome中大致达到了第一点(请参见此),但在Firefox中li
不适合ul
,因此它们不会停留在一行上。此外,放大/缩小时,最后一个li
往往会“溢出”到第二行
我在li
元素上尝试了margin:5px auto
和padding:5px auto
,但这里auto
似乎表示零
这真的很难/不可能,还是我忽略了一些显而易见的事情
我还尝试了
width:fit contents
,但也没有效果。您需要调整ul#mmenu
中的填充,我将填充改为padding:7px 23px代码>并保持在一行中,但在最后一个菜单的右端将有一个空格。像这样
ul#mmenu li
{
padding:7px;
}
您可以为li项指定绝对位置并对其进行定位(第一个为左:0,第二个为左:100px左右…最后一个为右:0,依此类推)。这样,当您缩放时,它们将始终位于同一位置。我在您的CSS中编辑了很多内容,请检查
基本上,我就是这么做的:
HTML:
ul显示为表格,li显示为表格单元格,宽度与页眉相同。在li中,我将锚点显示为一个块,使它们填充整个li。希望它适合你
请注意,当您使用此功能时,请确保从ul
中删除cf
类。我认为一些沮丧的同事可能会发现此功能很有用:
.main-menu ul li ul li{
white-space: nowrap;
}
对于那些想要避免使用CSStable
和table cell
的人,顺便说一句,我对它们没有问题,你可以在UL
上使用text align:justify
,并进行一些调整
基本HTML:
<ul id='mmenu'>
<li><a href='#'>Blah Blah Blah Blah</a></li>
<li><a href='#'>Blah Blah</a></li>
<li><a href='#'>Blah Blah Blah Blah</a></li>
<li><a href='#'>Blah Blah</a></li>
</ul>
我还删除了ul#mmenu liI中删除字母间距的中的:first child
样式。我看不出您的小提琴中FF和CR之间有任何区别。。你能发布一个解释欲望行为的屏幕截图吗?这很好,尽管我通常对人们说,虽然这是一个完美可行的解决方案,除非你处理表格数据,为什么不使用其他选项呢?好吧,它使元素像一个表一样工作,而不是一个表。我不介意这样使用它。当人们试图使用列表或div来显示表格数据时,我更为烦恼。(offtopic)我需要在单行中显示更多li,如果宽度为low,则它将隐藏内容并隐藏溢出
.main-menu ul li ul li{
white-space: nowrap;
}
<ul id='mmenu'>
<li><a href='#'>Blah Blah Blah Blah</a></li>
<li><a href='#'>Blah Blah</a></li>
<li><a href='#'>Blah Blah Blah Blah</a></li>
<li><a href='#'>Blah Blah</a></li>
</ul>
ul#mmenu{
width:100%;
margin:15px 0 10px 0;
overflow:hidden;
text-align:justify; /*Added this*/
}
ul#mmenu li{
letter-spacing:.05em;
color:#0a93cd;
/*Now inline blocks instead of blocks floated left*/
display:inline-block;
font:24px arial;
padding:7px 26px;
background:#fff;
border-left:2px solid #0a93cd;
border:2px solid #0a93cd;
border-radius:13px;
text-align:center;
}
/*Now for the hacky part....
...justify does not, by design, justify the last row of text
therfore we need to add an additional, invisible line*/
ul#mmenu:after {
content: "";
width: 100%;
display: inline-block;
}