我有3个div - 每个div在父div中,宽度为100%。 CSS:
.parentDiv {
height: 454px;
width: 100% auto;
}
.Div1, .Div2, .Div3{
display: block;
position: relative;
text-align: center;
height: 434px;
margin-top: 10px;
margin-bottom: 10px;
}
.Div1 {
margin-left: 10px;
float: left;
width: 351px;
}
.Div2 {
width: 351px;
padding: 0px;
margin: auto;
display: block;
}
.Div3 {
margin-right: 10px;
float: right;
width: 351px;
}
Divs的排序方式与HTML中的CSS相同。 然而,结果是左元素(Div1)在正确的位置,假定居中的元素居中(Div2),尽管它的两边都有填充整个父Div的边距。因此,我认为这会导致Div3溢出父Div并垂直“崩溃”。
我真正想知道的是如何对齐div,使左边有一个,一个居中,一个居中。以前关于类似问题的问题在这种情况下似乎没有帮助我:/如果有办法缩短Div2的边距,以便他们可以允许所有的Div在父div中保持正确对齐 - 我真的很想知道如何(最好不要使用绝对像素测量)
这可能没有任何意义 - 但我真的很感激所有的建议/答案:) 干杯
补充说明: 这就是目前的情况: Div1Div2Div3 我想要的是什么: Div1 Div2 Div3 其长度等于parentDiv
HTML(本节内容)
<div class="parentDiv">
<div class="Div1">
<!--Insert code here-->
</div>
<div class="Div2">
<!--Insert code here-->
</div>
<div class="Div3">
<!--Insert code here-->
</div>
</div>
答案 0 :(得分:1)
解决方案#1
您可能会看到JSFIDDLE DEMO。
HTML CODE
<div class="parentDiv">
<div class="Div1">
Div 1 - Some text
</div>
<div class="Div2">
Div 2 - Some text
</div>
<div class="Div3">
Dive 3 - Some text
</div>
</div>
CSS代码
.parentDiv {
height: 454px;
width: 100% auto;
}
.parentDiv div{
float:left;
}
.Div1, .Div2, .Div3{
display: block;
position: relative;
text-align: center;
height: 434px;
margin-top: 10px;
margin-bottom: 10px;
border: 1px solid #c4c4c4;
}
.Div1 {
margin-left: 10px;
width: 351px;
}
.Div2 {
width: 351px;
padding: 0px;
display: block;
}
.Div3 {
margin-right: 10px;
width: 351px;
}
解决方案#2
请浏览FIDDLE DEMO。
以下是完整的源代码:
代码:
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<style>
.parentDiv {
height: 454px;
width: 100% auto;
}
.parentDiv div{
/* float:left; */
}
.Div1, .Div2, .Div3{
display: block;
position: relative;
text-align: center;
height: 434px;
margin-top: 10px;
margin-bottom: 10px;
border: 1px solid #c4c4c4;
}
.Div1 {
margin-left: 10px;
width: 351px;
}
.Div2 {
display: block;
margin-left: 361px;
padding: 0;
width: 351px;
}
.Div3 {
margin-left: 714px;
width: 351px;
}
</style>
</head>
<body>
<div class="parentDiv">
<div class="Div1">
Div 1 - Some text
</div>
<div class="Div2">
Div 2 - Some text
</div>
<div class="Div3">
Dive 3 - Some text
</div>
</div>
</body>
</html>
正如您将观察到的那样:
margin
移除Div2
。.parentDiv div
添加了新的css - 所以您可以从其他个别div中删除float
。BORDER
。我的建议
答案 1 :(得分:0)
尝试在div2上执行此操作:
.Div2 {
width: 351px;
padding: 0px;
margin: auto;
display: block;
margin: 0 auto;
float: left;
}
答案 2 :(得分:0)
如果您想要一个比浮动元素更好的解决方案,请将其更改为display:inline-block elements。
.parentDiv > div { font-size: 1em; display: inline-block; vertical-align: top; }
.parentDiv { font-size : 0; }
这有效,并且优于浮动。 Float仅适用于浮动元素,不适用于设计布局。这是一些前端开发人员的错误和最常见的技术。感谢浮动,您可以在页面上看到数千吨的clearfix。这是残酷的,废话。
答案 3 :(得分:0)
不用担心,最终使用一些jQuery来解决它:
$(document).ready(function(){
var width = $(".parentDiv").css("width")
var width = width.replace("px","");
var width = parseInt(width,10);
var val1 = width-1073;
var val2 = val1/2;
$(".Div2").css("margin-left",val2);
$(".Div2").css("margin-right",val2);
$(window).resize(function(){
var width = $(".parentDiv").css("width");
var width = width.replace("px","");
var width = parseInt(width,10);
if(1073>width) {
$(".Div3").css("display","hidden")
}
else {
var val1 = width-1073;
var val2 = val1/2;
$(".Div2").css("margin-left",val2);
$(".Div2").css("margin-right",val2);
}
});
我知道它不是最有效的,也不是漂亮的代码(我对jQuery和Javascript很新) - 但它确实有用:)我想向任何人道歉非常友好地试图破译我令人震惊的解释:/
请注意,我还将Child Div的定位类型设置为绝对,然后将Div1设置为left:0;和Div3为右:0;