当前位置:  开发笔记 > 编程语言 > 正文

如何使div不大于其内容?

如何解决《如何使div不大于其内容?》经验,为你挑选了28个好方法。

我的布局类似于:

我希望div只扩展到我的范围table.



1> 小智..:

解决方案是将您设置divdisplay: inline-block.


@ leif81你可以使用`span`或`div`或`ul`或其他任何东西,重要的部分是你希望最小宽度的容器有CSS属性`display:inline-block`
请注意,一旦你有`display:inline-block`属性设置`margin:0 auto;`将无法按预期工作.在这种情况下,如果父容器具有`text-align:center;`,那么`inline-block`元素将水平居中.
对于带有span的我来说,它不适用于chrome,但使用white-space:nowrap;
如果有人想知道:那么可以通过在其父级上设置"text-align:center"并在其上设置"text-align:left"来使表格的父级居中(例如 < span style ="text-align:left; display:inline-block;"> ... )
`inline-block`对我不起作用,但`inline-flex` DID.
请解释为什么你的内联块解决方案有效.

2> buti-oxa..:

你想要一个块元素,它具有CSS调用的缩小宽度,而规范并没有提供一种有福的方式来获得这样的东西.在CSS2中,缩小到适合不是目标,而是意味着处理浏览器"必须"凭空捏造宽度的情况.那些情况是:

浮动

绝对定位元素

内联块元素

表元素

没有指定宽度时.我听说他们想在CSS3中添加你想要的东西.现在,请使用以上其中一项.

不直接公开该功能的决定可能看起来很奇怪,但有一个很好的理由.它是昂贵的.缩小到适合意味着格式化至少两次:在知道元素的宽度之前,不能开始格式化元素,并且无法计算整个内容的宽度.另外,人们可能不会像人们想象的那样经常使用缩小到合适的元素.为什么你需要额外的桌子?也许你只需要表格标题.


我会说`inline-block`正是为了这个目的而完美地解决了这个问题.
我认为他们正在添加css4,它将是`content-box,max-content,min-content,available,fit-content,auto`
新的[`fit-content`](https://www.w3.org/TR/css-sizing-3/#fit-content)关键字(首次编写此答案时不存在,仍然[不完整]支持](http://caniuse.com/#feat=intrinsic-width))允许您明确地将"缩小到适合"大小调整应用于元素,如果您幸运的话,无需使用此处建议的任何黑客足以只支持具有支持的浏览器.尽管如此; 这些仍然有用!

3> mbillard..:

我觉得用

display: inline-block;

会工作,但我不确定浏览器的兼容性.


另一个解决方案是将您包装div在另一个中div(如果您想保持块行为):

HTML:

content

CSS:

.yourdiv
{
    display: inline;
}


要回答浏览器兼容性问题:这不适用于DIV元素上的IE7/8.您必须使用SPAN元素.
请解释为什么你的内联块解决方案有效.

4> Salman von A..:

display: inline-block 为您的元素添加额外的余量.

我会推荐这个:

#element {
    display: table; /* IE8+ and all other modern browsers */
}

奖励:你现在也可以#element通过添加来轻松地将这个花哨的新东西放在中心位置margin: 0 auto.


指定`display:inline-block`不会添加任何边距.但CSS处理内联元素之间显示的空白.
+1 - 这是现代浏览器的最佳,最干净的解决方案,它也允许元素居中.对于inline-block使元素无法在其父元素中定位(例如,如果有文本对齐:中心,则无法将其固定在左侧)显示:table is perfect :)

5> nikib3ro..:
display: -moz-inline-stack;
display: inline-block;
zoom: 1;
*display: inline;

Foo Hack - 跨浏览器支持内联块样式(2007-11-19).


任何有此问题的人都应该添加所有这些样式.不使用`-moz-inline-stack`时Firefox增加了利润

6> Sony Santos..:

对我有用的是:

display: table;

div.(在Firefox谷歌浏览器上测试过).


是的,特别是如果你需要以保证金为中心:auto.那种情况内联块不是解决方案.

7> Vitalii Fedo..:

你可以试试fit-content(CSS3):

div {
  width: fit-content; 
  /* To adjust the height as well */ 
  height: fit-content;
}

浏览器支持

规格


这太有意义了,当然它缺乏支持。

8> Shuvo Habib..:

有两个更好的解决方案

    display: inline-block;

    要么

    display: table;

这两个display:table;更好.

因为display: inline-block;您可以使用负边距方法来修复额外的空间


@NathanielFord,`display:table`将元素保留在块格式化上下文中,因此您可以像往常一样用边距等控制其位置.另一方面,`display:-inline-*`将元素放入Inline格式化上下文,导致浏览器在其周围创建匿名块包装器,包含带有继承字体/行高设置的行框,并插入块进入该行框(默认情况下按基线垂直对齐).这涉及更多"魔力",因此潜在的惊喜.
您介意解释“ display:table”为什么更好吗?

9> trojan..:

你的问题的答案在未来奠定了我的朋友......

即"内在"即将推出最新的CSS3更新

width: intrinsic;

不幸的是,IE支持它,所以它还不支持它

更多关于它:CSS内在和外在大小模块3级,我可以使用吗?:内在和外在尺寸.

现在你必须满意

设置为

display: inline-block;


`intrinsic`作为一个值是非标准的.它实际上是`width:max-content`.请参阅[MDN页面](https://developer.mozilla.org/en/docs/Web/CSS/width#max-content)或已链接的草稿.

10> falstro..:

不知道在什么情况下,这将出现,但我相信,CSS-style属性float要么left还是right会产生这样的效果.另一方面,它也会产生其他副作用,例如允许文本在其周围浮动.

如果我错了,请纠正我,我不是百分百肯定,目前无法自己测试.



11> 小智..:
width:1px;
white-space: nowrap;

对我来说很好:)



12> Soviut..:

CSS2兼容的解决方案是使用:

.my-div
{
    min-width: 100px;
}

你也可以浮动你的div,这将迫使它尽可能小,但如果你的div内的任何东西是浮动的,你需要使用一个clearfix:

.my-div
{
    float: left;
}


min-width在Firefox 3和IE 8中不起作用.
这应该.您使用的是哪种doctype?

13> Alireza..:

好吧,在许多情况下你甚至不需要做任何事情,因为默认div heightwidthauto 都有,但如果不是你的情况,应用inline-block显示将为你工作...看看我为你创建的代码,它是做的你在找什么:

div {
  display: inline-block;
}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ultrices feugiat massa sed laoreet. Maecenas et magna egestas, facilisis purus quis, vestibulum nibh. 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. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ultrices feugiat massa sed laoreet. Maecenas et magna egestas, facilisis purus quis, vestibulum nibh.


14> youngrrrr..:

这已在评论中提及,很难在其中一个答案中找到:

如果您display: flex出于任何原因使用,您可以使用:

div {
    display: inline-flex;
}

这也得到了浏览器的广泛支持.



15> miksiii..:

您只需使用display: inline;(或white-space: nowrap;)即可.

希望这个对你有帮助.



16> Edward..:
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 =)

我知道人们有时候不喜欢桌子,但是我得告诉你,我尝试过css inline hacks,他们有点在一些div中工作但是在其他人没有,所以,真的只是更容易将扩展div放入一个表......并且......它可以具有或不具有内联属性,并且表仍然是将保持内容总宽度的表.=)


这不是"正确的"方式,但是当事情变得有点复杂时,IE6/7/8通常不会很好玩,所以我完全明白为什么你会这样做.你得到了我的投票.

17> RPichioli..:

您可以使用inline-block@ user473598,但要注意旧版浏览器..

/* Your're working with */
display: inline-block;

/* For IE 7 */
zoom: 1;
*display: inline;

/* For Mozilla Firefox < 3.0 */
display:-moz-inline-stack;

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/



18> Abrar Jahin..:

这是一个工作演示 -

.floating-box {
    display:-moz-inline-stack;
    display: inline-block;

    width: fit-content; 
    height: fit-content;

    width: 150px;
    height: 75px;
    margin: 10px;
    border: 3px solid #73AD21;  
}

The Way is using inline-block

Supporting elements are also added in CSS.
Floating box
Floating box
Floating box
Floating box
Floating box
Floating box
Floating box
Floating box


19> 小智..:

只需将样式放入CSS文件即可

div { 
    width: fit-content; 
}


目前在Edge中不起作用:https://caniuse.com/#search=fit-content

20> 小智..:

我的CSS3 flexbox解决方案有两种形式:顶部的那个表现得像一个跨度,底部的表现就像一个div,在包装器的帮助下占据所有宽度.他们的课程分别是"顶部","底部"和"底部包装".

body {
    font-family: sans-serif;
}
.top {
    display: -webkit-inline-flex;
    display: inline-flex;
}
.top, .bottom {
    background-color: #3F3;
    border: 2px solid #FA6;
}
/* bottomwrapper will take the rest of the width */
.bottomwrapper {
    display: -webkit-flex;
    display: flex;
}
table {
    border-collapse: collapse;
}
table, th, td {
    width: 280px;
    border: 1px solid #666;
}
th {
    background-color: #282;
    color: #FFF;
}
td {
    color: #444;
}
th, td {
    padding: 0 4px 0 4px;
}
Is this
OS Version
OpenBSD 5.7
Windows Please upgrade to 10!
what you are looking for?
Or may be...
OS Version
OpenBSD 5.7
Windows Please upgrade to 10!
this is what you are looking for.


21> Jaimin Dave..:
// HTML elements

这将使父div宽度与最大元素宽度相同.



22> 小智..:

试试display: inline-block;.要使其与浏览器兼容,请使用以下css代码.

div {
  display: inline-block;
  display:-moz-inline-stack;
  zoom:1;
  *display:inline;
  border-style: solid;
  border-color: #0000ff;
}
Column1 Column2 Column3


23> Hamed Momeni..:

篡改Firebug我发现了属性值-moz-fit-content,它完全符合OP的要求,可以按如下方式使用:

width: -moz-fit-content;

虽然它只适用于Firefox,但我找不到任何与Chrome等其他浏览器相同的功能.


-webkit-fit-content for chrome 31+.http://caniuse.com/#search=fit-content

24> Jessica Brow..:

display: inline-block通过在span标签内添加div标签,并将CSS格式从外部div标签移动到新的内部span标签,解决了类似的问题(我不想使用,因为项目居中).如果display: inline block对你来说不合适,那就把它当作另一种选择.



25> Novice..:

我们可以在div元素上使用以下两种方式中的任何一种:

display: table;

要么,

display: inline-block; 

我更喜欢使用display: table;,因为它自己处理所有额外的空间.虽然display: inline-block需要一些额外的空间固定.



26> 小智..:
div{
  width:auto;
  height:auto;
}



27> Ogdila..:

修改(如果您有多个孩子,则有效):您可以使用jQuery(查看JSFiddle链接)

var d= $('div');
var w;


d.children().each(function(){
 w = w + $(this).outerWidth();
 d.css('width', w + 'px')
});

别忘了包含jQuery ......

在这里查看JSfiddle



28> cregox..:

如果你有容器破线,在几小时后寻找一个好的CSS解决方案并找不到,我现在使用 jQuery代替:

$('button').click(function(){

  $('nav ul').each(function(){
    
    $parent = $(this).parent();
    
    $parent.width( $(this).width() );
    
  });
});
nav {
  display: inline-block;
  text-align: left; /* doesn't do anything, unlike some might guess */
}
ul {
  display: inline;
}

/* needed style */
ul {
  padding: 0;
}
body {
  width: 420px;
}

/* just style */
body {
  background: #ddd;
  margin: 1em auto;
}
button {
  display: block;
}
nav {
  background: #bbb;
  margin: 1rem auto;
  padding: 0.5rem;
}
li {
  display: inline-block;
  width: 40px;
  height: 20px;
  border: solid thin #777;
  margin: 4px;
  background: #999;
  text-align: center;
}






推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有