让div孩子分享父母的宽度

时间:2013-08-20 16:18:19

标签: html css css3

基本上我有一个div父母,它包含1个以上的div子元素(每个元素中都有一个按钮)。 现在我想按钮填充父母的整个宽度 - 但是分享它。 也就是说,如果有一个子按钮,它应该填充100% - 如果有2个,它们的宽度应该是每个等尺寸的50%。

我该怎么做?

编辑:根据要求 - 这是代码(虽然我认为上面的解释更好):

.buttons
{
    background: #f1f1f1;
    border-top: 1px solid #ddd;
    padding: 15px;
    height: 34px;
}

.submitbutton
{
    width: inherit;
    background: #C2E5FC; /* Old browsers */
    background: -moz-linear-gradient(top, #C2E5FC 0%, #008BE8 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C2E5FC), color-stop(100%,#008BE8)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, #C2E5FC 0%,#008BE8 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, #C2E5FC 0%,#008BE8 100%); /* Opera11.10+ */
    background: -ms-linear-gradient(top, #C2E5FC 0%,#008BE8 100%); /* IE10+ */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#C2E5FC', endColorstr='#008BE8',GradientType=0 ); /* IE6-9 */
    background: linear-gradient(top, #C2E5FC 0%,#008BE8 100%); /* W3C */
    border: 1px solid #008BE8;
    -webkit-border-radius: 20px;
    -moz-border-radius: 20px;
    border-radius: 20px;
    line-height: 20px;
    font-size: 16px;
    padding: 6px 12px;
    color: #fff;
    text-shadow: -1px -1px #008BE8;
    margin-left: 10px;
    cursor: pointer;
}

html:

<div class="buttons">
    <input class="submitbutton" type="submit" value="Register">
    <input class="submitbutton" type="submit" value="Cancel">
</div>

5 个答案:

答案 0 :(得分:1)

如果您希望避免使用纯CSS添加额外的标记,那么Flexbox就是您所需要的。

http://codepen.io/cimmanon/pen/qekml

.buttons {
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
}

.submitbutton {
  -moz-box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
}

大多数浏览器都支持某些版本的Flexbox,但IE在版本10之前不支持它(请参阅:http://caniuse.com/#feat=flexbox)。请注意,虽然较旧的Webkit浏览器(包括移动设备)确实支持Flexbox,但它doesn't work on buttons,这就是为什么我省略了这些浏览器的属性。

如果您需要更好的浏览器支持,则需要使用额外的元素。

http://cssdeck.com/labs/gefz5oxi

<div class="buttons">
  <div class="foo"><input class="submitbutton" type="submit" value="Register"></div>
  <div class="foo"><input class="submitbutton" type="submit" value="Cancel"></div>
</div>

CSS:

.buttons {
  display: table;
  width: 100%;
  box-sizing: border-box; /* optional */
}

.foo {
  display: table-cell;
}

.foo .submitbutton {
  width: 100%;
}

答案 1 :(得分:1)

您可以将它们封装在li中并使用此css:

.buttons > li {
display: table-cell !important; 
width: 1% !important;
float: none !important;
}

.buttons > li >* {
width:100%
}

参见jsfiddle Jsfiddle view

答案 2 :(得分:0)

您可以将子元素宽度定义为百分比或其父元素。像这样:

<div id="parent" style="width:1000px;">
<div id="child1" style="width:25%"></div>
<div id="child2" style="width:25%"></div>
<div id="child3" style="width:25%"></div>
<div id="child4" style="width:25%"></div>
</div>

在这种情况下,每个子元素的宽度为250px。

根据您的要求,使用CSS类也是一样:

<style type="text/css">
.parent {
    width:1000px;
}
.child {
    width:25%;
}
</style>
<div id="parent" class="parent">
<div id="child1" class="child"></div>
<div id="child2" class="child"></div>
<div id="child3" class="child"></div>
<div id="child4" class="child"></div>
</div>

答案 3 :(得分:0)

如果您不确定您将拥有多少个子按钮,您可以为您的孩子使用一些故障安全课程。

e.g。

之类的东西
.grid4button { width: 25%; }
.grid3button { width: 33.33333% }
.grid2button { width: 50%; }

等(我想你明白了)

现在你需要一些js来检查子按钮的数量,并将所需的类名附加到每个按钮上。

编辑:

var childs = $(".buttons").children().length;
$('buttons .submitbutton').addClass('grid'+childs+'button');

可能是jquery的一个examplatory js检查。

答案 4 :(得分:0)

尽管表是despassé,我只会使用一个带有一行()的表,并为每个按钮动态添加单元格()。给出宽度:100%,你就完成了。实现工具栏类的大多数js框架都使用表。