使居中的DIV内宽DIV展开,内容宽度

问题描述:

我使用2个div,父母和孩子。父级宽度为100%,其内容以文本对齐为中心。使居中的DIV内宽DIV展开,内容宽度

孩子的div应该有一个宽度为零(或接近它的东西),并自动扩大其宽度与其内容,同时仍居于父div。例如:

+------------ PARENT DIV ------------+ 
|         | 
|   ..some content..   | 
|         | 
|   +--CHILD DIV--+   | 
|   |Inside child |   | 
|   +-------------+   | 
|         | 
+------------------------------------+ 

+------------ PARENT DIV ------------+ 
|         | 
|   ..some content..   | 
|         | 
|  +------ CHILD DIV ------+  | 
|  |Inside child with more |  | 
|  +-----------------------+  | 
|         | 
+------------------------------------+ 

如果我把一个固定的宽度,以孩子的div,我可以正确居中:

.parent { 
    width: 100%; 
} 
.child { 
    width: 100px; 
    margin-left: auto; 
    margin-right: auto; 
} 

但是,这不是我所需要的,我需要的是儿童的div扩大其宽度根据其内容。所以,我尝试使用floatnowrap

.parent { 
    width: 100%; 
} 
.child { 
    float: left; 
    white-space: nowrap; 
    margin-left: auto; 
    margin-right: auto; 
} 

,对孩子本身的工作原理,但随后不再中心作为父的内容。

我可以通过使用Javascript解决它,但我真的不喜欢。

我一直在四处寻找类似的问题,但我还没有找到一个完全回答这种情况。

有人可以扔我一盏灯吗?

在此先感谢您的任何意见。

旧金山

您可以使用display: inline-block;(在< IE7不支持),但你必须用另一个块级元素的所有其他内容(如<p>或其他<div>

.parent { 
    width: 100%; 
    text-align: center; 
     border: 1px solid #000; 
} 
.child { 
    display: inline-block; 
     border: 1px solid #f00; 
} 

http://jsfiddle.net/4kpsK/

(点击红色有边距的div来添加更多内容并且看到解决方案有效。)

+0

非常感谢!:-)我认为我不应该过分担心使用IE6或更低版本的人。我相信他们已经看到目前网络中至少有50%已经被扭曲了。无论如何,我想他们会看到小孩div扩展到100%,这不是我想要的,但它不会破坏其他任何东西。谢谢! – 2013-04-25 09:14:56

你必须让你的孩子inline

.parent { 
    width: 100%; 
    text-align: center; 
} 
.child { 
    display: inline; 
} 

见小提琴这里:http://jsfiddle.net/4wXTd/1/

+0

内联元素不支持边距和宽度。 – Kyle 2013-04-25 08:54:04

+0

对不起,这里的东西是父母的“文本对齐”中心。我删除了边距和宽度 – Brewal 2013-04-25 08:55:26

+0

谢谢,但那不行。子div具有适用于块元素的其他样式属性。这使得它的行为与我仅仅使用span元素而不是div完全相同。凯尔Sevenoaks的答案似乎更好地工作(内联块)。 – 2013-04-25 09:10:42

我认为与其width可以使用max-widthdisplay:inline。 但这有缺点:max-width在IE中不会被正确解释(我想至少有< 9),但在Webkit/Moz/Opera浏览器中,您应该是安全的。

.child{display:block; margin: auto;} 

应该工作。

+0

这使得子div自动宽度变为100%。另外,显示'block'是div的默认显示。 – 2013-04-25 09:08:35

+0

嗯,我已经多次使用这段代码来处理div,图像和文本,并且它还有其他的元素,元素的宽度就和它的内容需要的一样多。 – ITFarmer 2013-04-25 09:17:12

+0

也许你没有使用严格的验证的HTML?自己看看吧。 :-) http://jsfiddle.net/4wXTd/3/ – 2013-04-25 09:27:28