基本上我有一个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>
答案 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
答案 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框架都使用表。