我仍然是一个 CSS 新手。多年来,我一直使用嵌套表格来管理我的布局,我知道所有使用 CSS 的人都会告诉我这是邪恶的。多年来,我一直在研究 CSS,但从一开始我就无法让它按照我想要的方式控制我的布局。
简而言之,我想要的是拥有一个仅与其内容一样宽的
一张 table 完美地做到了这一点。使用
典型的例子是当我想创建一个整页的分栏布局时,左栏包含导航链接,右栏包含内容。我希望左栏与导航链接一样宽。不多也不少。 (导航链接不是静态的;它们是动态创建的,并且可以随时更改大小/长度)。右边的(“内容”)列应该是剩下的。最重要的是,当我使浏览器屏幕变宽或变窄时,我希望左栏仍然与导航链接一样宽:不多也不少。如果浏览器的宽度太窄,我希望内容根据需要自动换行。在任何情况下,我都不希望文本被遮挡或超出定义的列。
简而言之,我想要一个可以像表格一样工作的
或者举一个有点相关的简单例子(也许这个很简单):
<ul style="background: orange;">
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
整个东西和浏览器屏幕一样宽。但我希望它只和最长的元素一样宽。我如何使用 CSS 做到这一点?我可以像这样把整个东西放在一张 table 里
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<ul style="background: orange;">
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</td></tr></table>
...它做我想做的事。我如何使用 CSS 而不是使用那些“邪恶”的表格来做到这一点?
我试过 miku 的例子。
它不起作用(对于我想要它做的事情)。
如果我把超长的导航线做成像这样的长字符串
an&nbps;extra&nbps;long&nbps;navigation&nbps;link&nbps;goes&nbps;here&nbps;-&nbps;this&nbps;could&nbps;even&nbps;be&nbps;an&nbps;image!
我希望左侧导航侧根据需要展开。我不想要最大宽度。 使用上面的示例,超长行将被“main”div 遮盖。
此外,“main”div 应该是浏览器的其余部分的宽度,在这种情况下,它只和里面的文本一样宽。
最佳答案
不太确定你的问题。我知道,您想拥有一个最大宽度的动态左侧边栏。如果侧边栏中的某些文本太长,则应将其换行。以下是我想象的解决方案的代码和屏幕截图:
- 侧边栏将和那里最长的链接(或其他东西)一样宽(在下面的示例中,那里有一个列表)
- 如果侧边栏中的某些内容超过了
max-width
属性指定的最大值(此处:200px),它会被换行。 - 主要内容占据剩余宽度。
调整 #main
div 的大小(通过调整浏览器窗口的大小)通过 overflow:hidden
起作用.
<html><head></head><body>
<div id="sidebar-left"
style="background:#EFEFEF; max-width:200px; float:left">
<ul>
<li>Navigation 1</li>
<li>Navigation 2</li>
<li>Extra Long Navigation item,
that exceeds our limit of 200px - and should be wrapped</li>
</ul>
</div>
<div id="main" style="background:gray; overflow:hidden;">
<p>Hello there - main content goes here</p>
</div>
</body></html>
如果您不想要最大尺寸的侧边栏,只需删除 max-width
属性。
关于html - CSS div 与其内容一样宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7015099/