0

基本上我有一个 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>
4

5 回答 5

2

您可以将它们包含在 li 中并使用此 css:

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

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

jsfiddle Jsfiddle 视图

于 2013-08-20T17:15:38.840 回答
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,但它不适用于按钮,这就是为什么我省略了这些浏览器的属性。

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

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%;
}
于 2013-08-20T16:57:25.293 回答
0

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

例如类似的东西

.grid4button { width: 25%; }
.grid3button { width: 33.33333% }
.grid2button { width: 50%; }

等(我想你明白了)

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

编辑:

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

可能是使用 jquery 进行的示例性 js 检查。

于 2013-08-20T16:36:54.690 回答
0

尽管表格已经过时,但我只会使用一个包含一行 () 的表格并为每个按钮动态添加单元格 ()。给出宽度:100%,你就完成了。大多数实现 Toolbar 类的 js 框架都使用表格。

于 2013-08-20T16:37:33.520 回答
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>

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

根据您的要求,使用 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>
于 2013-08-20T16:24:16.390 回答