<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<div id="content_lalala">
this content inside the div being inside a table, needs no inline properties and the table is the one expanding to the content of this div =)
</div>
</td>
</tr>
</table>
Is this
<div class="top">
<table>
<tr>
<th>OS</th>
<th>Version</th>
</tr>
<tr>
<td>OpenBSD</td>
<td>5.7</td>
</tr>
<tr>
<td>Windows</td>
<td>Please upgrade to 10!</td>
</tr>
</table>
</div>
what you are looking for?
<br>
Or may be...
<div class="bottomwrapper">
<div class="bottom">
<table>
<tr>
<th>OS</th>
<th>Version</th>
</tr>
<tr>
<td>OpenBSD</td>
<td>5.7</td>
</tr>
<tr>
<td>Windows</td>
<td>Please upgrade to 10!</td>
</tr>
</table>
</div>
</div>
this is what you are looking for.
<div>
<table>
<tr>
<td>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ultrices feugiat massa sed laoreet. Maecenas et magna egestas, facilisis purus quis, vestibulum nibh.</td>
<td>Nunc auctor aliquam est ac viverra. Sed enim nisi, feugiat sed accumsan eu, convallis eget felis. Pellentesque consequat eu leo nec pharetra. Aenean interdum enim dapibus diam.</td>
<td>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ultrices feugiat massa sed laoreet. Maecenas et magna egestas, facilisis purus quis, vestibulum nibh.</td>
</tr>
</table>
</div>
13
对我有用的是:
display: table;
在 div . (在 Firefox 和 Google Chrome 上测试过) .
21
不知道这将出现在什么上下文中,但我相信CSS样式属性 floatleft 或 right 将具有此效果 . 另一方面,它也会产生其他副作用,例如允许文本在其周围浮动 .
30 回答
使用Firebug篡改我发现了属性值
-moz-fit-content
,它完全符合OP的要求,可以按如下方式使用:虽然它只适用于Firefox,但我找不到其他浏览器的任何等价物,例如Chrome .
Foo Hack – Cross Browser Support for inline-block Styling (2007-11-19) .
您只需使用
display: inline;
(或white-space: nowrap;
)即可 .希望这个对你有帮助 .
修改(如果你有多个孩子的话有效):你可以使用jQuery(看看JSFiddle链接)
别忘了包含jQuery ......
See the JSfiddle here
我试过
div.classname{display:table-cell;}
并且它有效!display: inline-block
为元素添加了额外的余量 .我会推荐这个:
我觉得用
会工作,但我不确定浏览器的兼容性 .
另一种解决方案是将
div
包装在另一个div
中(如果要保持块行为):HTML:
CSS:
通过在
div
标记内添加span
标记,并将CSS格式从外部div
标记移动到新的内部span
标记,我解决了类似的问题(我不想使用display: inline-block
因为项目居中) . 如果display: inline block
不是适合你的答案,那就把它当作另一种选择 .只需将样式放入CSS文件即可
我只想设置
padding: -whateverYouWantpx;
你可以试试fit-content(CSS3):
Browser support
Specification
对我来说很好:)
我知道人们有时候不喜欢 table ,但是我得告诉你,我尝试过css内联黑客,而且他们在某些div中工作但是在其他人中没有,所以,实际上只是更容易将扩展div放入其中一个表......并且......它可以具有或不具有内联属性,并且表仍然是将保持内容总宽度的表 . =)
解决方案是将
div
设置为display: inline-block
.有两个更好的解决方案
display: inline-block;
要么
display: table;
Out of these two display:table; is better.
对于
display:inline-block;
,您可以使用负边距方法来修复额外空间CSS2兼容的解决方案是使用:
你也可以浮动你的div,这将迫使它尽可能小,但你需要使用clearfix如果你的div内的任何东西是浮动的:
你想要一个块元素,它具有CSS调用的缩小宽度,而规范并没有提供一种有福的方式来获得这样的东西 . 在CSS2中,缩小到适合不是目标,而是意味着处理浏览器“必须”凭空捏造宽度的情况 . 那些情况是:
浮动
绝对定位元素
内联块元素
表元素
没有指定宽度时 . 我听说他们想在CSS3中添加你想要的东西 . 现在,请使用上述之一 .
不直接公开该功能的决定可能看起来很奇怪,但有充分的理由 . 它是昂贵的 . 缩小到适合意味着格式化至少两次:在知道元素的宽度之前,不能开始格式化元素,并且无法计算整个内容的宽度 . 另外,人们可能不会像人们想象的那样经常使用缩小到合适的元素 . 为什么你的 table 周围需要额外的div?也许表格 Headers 就是您所需要的 .
你的问题的答案在未来奠定了我的朋友......
即“内在”即将推出最新的CSS3更新
不幸的是 IE 落后于它所以它还不支持它
更多关于它:CSS Intrinsic & Extrinsic Sizing Module Level 3和Can I Use?: Intrinsic & Extrinsic Sizing .
现在你必须满足
<span>
或<div>
设置为您可以使用
inline-block
作为@ user473598,但要注意旧版浏览器..Mozilla根本不支持内联块,但它们的
-moz-inline-stack
大致相同一些跨浏览器的
inline-block
显示属性:https://css-tricks.com/snippets/css/cross-browser-inline-block/你可以在这个属性中看到一些测试:https://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/
我的CSS3 flexbox解决方案有两种形式:顶部的那个表现得像一个 Span ,底部的表现就像一个div,在包装器的帮助下占据所有宽度 . 他们的课程分别是“顶部”,“底部”和“底部包装” .
这已在评论中提及,很难在其中一个答案中找到:
如果您出于任何原因使用
display: flex
,则可以使用:This is also widely supported across browsers.
这将使父div宽度与最大元素宽度相同 .
OK, 在许多情况下你甚至不需要做任何事情,因为默认div有
height
和width
为auto,但如果不是你的情况,应用inline-block
display会为你工作...看看我为你创建的代码和这是你想要的:对我有用的是:
在
div
. (在 Firefox 和 Google Chrome 上测试过) .不知道这将出现在什么上下文中,但我相信CSS样式属性
float
left
或right
将具有此效果 . 另一方面,它也会产生其他副作用,例如允许文本在其周围浮动 .如果我错了,请纠正我,我不是百分百肯定,目前无法自己测试 .
试试
display: inline-block;
. 要使其与浏览器兼容,请使用以下css代码 .如果你有容器破线,下班后看一个好的CSS解决方案,找不到,I now use jQuery代替:
这里有一个工作演示 -
我们可以在 div 元素上使用以下两种方式中的任何一种:
要么,
我更喜欢使用
display: table;
,因为它自己处理所有额外的空间 . 虽然display: inline-block
需要一些额外的空间修复 .