使居中的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扩大其宽度根据其内容。所以,我尝试使用float
和nowrap
:
.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;
}
(点击红色有边距的div来添加更多内容并且看到解决方案有效。)
你必须让你的孩子inline
:
.parent {
width: 100%;
text-align: center;
}
.child {
display: inline;
}
见小提琴这里:http://jsfiddle.net/4wXTd/1/
我认为与其width
可以使用max-width
和display:inline
。 但这有缺点:max-width
在IE中不会被正确解释(我想至少有< 9),但在Webkit/Moz/Opera浏览器中,您应该是安全的。
.child{display:block; margin: auto;}
应该工作。
这使得子div自动宽度变为100%。另外,显示'block'是div的默认显示。 – 2013-04-25 09:08:35
嗯,我已经多次使用这段代码来处理div,图像和文本,并且它还有其他的元素,元素的宽度就和它的内容需要的一样多。 – ITFarmer 2013-04-25 09:17:12
也许你没有使用严格的验证的HTML?自己看看吧。 :-) http://jsfiddle.net/4wXTd/3/ – 2013-04-25 09:27:28
非常感谢!:-)我认为我不应该过分担心使用IE6或更低版本的人。我相信他们已经看到目前网络中至少有50%已经被扭曲了。无论如何,我想他们会看到小孩div扩展到100%,这不是我想要的,但它不会破坏其他任何东西。谢谢! – 2013-04-25 09:14:56