CSS怎么让div中的多个div居中显示?

比如:
<body>
<div id="A">

<div id="B"></div>

<div id="C"></div>
<div id="D"></div>
</div>
</body>
要让A居右显示(宽度200px),要让B、C、D在A中居中显示(宽依次为50px,30px,20px),CSS应该怎么写?
假设宽度用的是百分比(A:90%,B:50%,C:20%,D:10%),又改怎么实现?

<style type="text/css"> 

.main{ height:100px; background:red; margin:0px auto; width:480px; 

p{ text-align:center; width:500px; height:200px; background:yellow;}

</style> 

 <body>

<div class="main"></div>

<p>在中间</p>

 </body>

效果图:

红色区域永远是水平居中的,无论浏览器宽度是多少的。

margin:0px auto;(记得设定这个div的宽度) 

text-align:center;是用于文字的水平居中。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-30
A居右显示可以加css:float:right;试试
至于BCD居中显示 可以给BCD分别加上 margin-left:auto;margin-right:auto;
或者A设置css加上text-align:center 然后BCD加上text-align:left
这样2种都试试 BCD宽度直接定义 应该和布局关系不大吧
第2个回答  2013-08-30
下面是css代码,你试试吧
#A{width:200px;height:200px;float:right;}
#B{width:50px;height:20px;margin:0px auto;}
#C{width:30px;height:20px;margin:0px auto;}
#D{width:20px;height:20px;margin:0px auto;}追问

如果是百分比呢?

追答

百分比也是好用的,margin:0px auto;自动计算并且居中

追问

那怎么让BCD并排居中呢?BCD还是有宽度哈,不要用inline,似乎用了它宽度属性之类的就不管用了

追答

首先BCD都是div属于行元素,也就是说独自占据一行,如果想两个div或者多个div要在同一行显示那就需要进行设置成为浮动或者变成行内元素(inline)。楼主不要inline那也就只有float了。但是前提是float不能自动的进行居中距离,因此只能将父层进行设定,里面浮动。根据父层的宽度设定BCD的margin,padding的值

追问

那可不可以适当改动上面的层结构(比如增加容器)来实现我说的效果呢(宽度用百分比)?

追答

以我的能力认为css是不支持div并排显示并且都自动居中处理的。你只能float加上marigin进行设定,表面上看是居中的,实际居中只能对单一元素,例如div的margin:0px auto,内容居中text-align:center;

第3个回答  2013-08-30
#A{width:90%;height:200px;float:right;}
#B{width:50%;height:20px;inline-height:20px;margin:0px auto;}
#C{width:20%;height:20px;inline-height:20px;margin:0px auto;}
#D{width:10%;height:20px;inline-height:20px;margin:0px auto;}

追问

那怎么让BCD并排居中呢?BCD还是有宽度哈,不要用inline,似乎用了它宽度属性之类的就不管用了

追答

并排居中,div宽度必须一样,不然每个div里面的内容居中后是对不起的。

追问

那就把宽度设置成一样的吧,可适当增加容器(div)

追答#A{width:100%;height:200px;float:right;}
#B{width:600px;height:20px;inline-height:20px;margin:0px auto;}
#C{width:600px;height:20px;inline-height:20px;margin:0px auto;}
#D{width:600px;height:20px;inline-height:20px;margin:0px auto;}


inline-height可以垂直居中,比如宽度设置50px;想要内容垂直居中,可以设置height:50px;inline-height:50px;不需要垂直居中的话inline-height不设置。

追问

我是说把层中的div并排居中,不是把里边文字之类的居中

追答#A{width:800px;height:200px;float:right;}
#B{width:600px;height:20px;inline-height:20px;margin-left:100px;margin-right:100px;}
#C{width:600px;height:20px;inline-height:20px;margin-left:100px;margin-right:100px;}
#D{width:600px;height:20px;inline-height:20px;margin-left:100px;margin-right:100px;}

追问

谢谢

本回答被提问者采纳
第4个回答  2019-06-09
可以用flex布局,不过有兼容性问题
相似回答