2016-12-07 78 views
-1

在下面的例子中,我怎样才能使outer div以适应盒子的宽度?我发现的所有解决方案都表示外部div必须有display: inline-block,但如果子元素也是inline-block,那么似乎不起作用。是否有任何其他的解决方案:适合外部div与其内容

https://jsfiddle.net/45fexke7/

总之outer DIV应内部wrapper居中和具有内部内容的宽度。

编辑:

这必须响应! wrapper在这个例子中有一个固定的宽度,但假设它是width: 100%。它应该在一行中显示尽可能多的方框,但它必须有一个剩余空间,方框必须居中。

+0

怎么样,我们中心的所有内部的div - 一些这样的事https://jsfiddle.net/45fexke7/1/ –

+0

@HudhaifaYoosuf这是一个选项,但我不如果最后一个盒子没有填满这行,就想让最后一个盒子居中...... –

+0

你如何设置一个固定的外部,你显然知道内部值为220px * 3为3个盒子+余量。可以是外部宽度 –

回答

0

您可以将外部类的显示属性设置为flex。带有这些附加属性的 。

https://jsfiddle.net/sambit_satpathy/h2gurosb/

#outer { 
    display: flex; 
    justify-content:center; 
    text-align: left; 
    background-color: black; 
    width:100%; 
    flex-wrap:wrap; 
} 
+0

请注意:“总之,外部div应该在包装内居中并且具有内容的宽度。”在问题 – SKLTFZ

0

您正在寻找这样的事情?

#wrapper { 
 
    width: 800px; 
 
    background-color: red; 
 
    text-align: center; 
 
    margin: 0 auto; 
 
} 
 
#outer { 
 
    /* display: inline-block; */ 
 
    text-align: left; 
 
    background-color: black; 
 
    width: 100%; 
 
} 
 
.inner { 
 
    width: 33%; 
 
    height: 200px; 
 
    /* margin: 5px; */ 
 
    background-color: green; 
 
    display: inline-block; 
 
}
<div id="wrapper"> 
 

 
    <div id="outer"> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    </div> 
 

 
</div>

+0

没有.''外''不应该有'宽度:100%;' –

+0

'外'在@ hunzaboy回答100%%回答 –

+0

@KingJulien为什么? – Aslam

0

我认为你可以做到这一点,但你需要脚本来帮助使外部的宽度。注意你的inner包含margin,因此你需要在脚本中处理它。

$(function ($) { 
 
    var longestWidth = 0; 
 
    var sumwidth = 0; 
 
    $("#outer").children().each(function() { 
 
     var child = $(this); 
 
    if(sumwidth + child.width()+10<800) 
 
     sumwidth+=child.width()+10; 
 
    else 
 
    { 
 
     if(longestWidth<sumwidth) 
 
     longestWidth = sumwidth+10; 
 
     console.log(longestWidth); 
 
     sumwidth = 0; 
 
    } 
 
     
 
    }); 
 
    $("#outer").width(longestWidth); 
 
});
#wrapper { 
 
    width: 800px; 
 
    background-color: red; 
 
    text-align:center; 
 
} 
 

 
#outer { 
 
    
 
    background-color: black; 
 
    display: inline-block; 
 
} 
 

 
.inner { 
 
    width: 220px; 
 
    height: 200px; 
 
    margin: 5px; 
 
    background-color: green; 
 
display: inline-block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="wrapper"> 
 
    <div id="outer"> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    </div> 
 
</div>

0

这应该去当你的期望。

将内部div宽度更改为百分比并更改了边距。

.inner { 
    margin-left: 6px; 
    margin-top: 5px; 
    width: 32%; 
    height: 200px; 
    background-color: green; 
    display: inline-block; 
} 

#wrapper { 
 
    width: 800px; 
 
    background-color: red; 
 
    text-align: center; 
 
} 
 

 
#outer { 
 
    width: 100%; 
 
    display: inline-block; 
 
    text-align: left; 
 
    background-color: black; 
 
} 
 

 
.inner { 
 
    margin-left: 6px; 
 
    margin-top: 5px; 
 
    width: 32%; 
 
    height: 200px; 
 
    background-color: green; 
 
    display: inline-block; 
 
}
<div id="wrapper"> 
 

 
    <div id="outer"> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    <div class="inner"></div> 
 
    </div> 
 

 
</div>

+0

'.innser'应该没有百分比宽度。必须有尽可能多的栏框。根据'wrapper'的宽度。但是整个列的外框必须居中,因为框宽的总和可能不等于“包装”的宽度。 –

+0

但你已经定义了固定的内部? –

+0

是的,是吗? 'wrapper'的宽度是未知的。 –