我需要创建一个具有未固定宽度的formbox-popup(基于另一个元素的宽度,而该另一个元素的宽度又取决于页面的宽度)。
弹出窗口应显示1/2/3 / n列,具体取决于弹出窗口的宽度。
这是我目前的代码示例:
http://codepen.io/FezVrasta/pen/eItyu
.box {
width: 500px;
outline: 1px solid purple;
.row {
display: inline-block;
label {
display: inline-block;
width: 50px;
}
input {
width: 120px;
}
}
}
问题是我需要一种方法来使输入+标签足够大以填充整个盒子的宽度。
所以我的例子应该是这样的:
http://codepen.io/FezVrasta/pen/cIDFs
我能找到的唯一解决方案是使用媒体查询,但它看起来并不是一个非常干净的解决方案。
我该如何解决这个问题?
答案 0 :(得分:4)
如何使用CSS表:
<强> FIDDLE 强>
<div class="box">
<div class="row">
<label>label</label>
<input type="text" />
</div>
<div class="row">
<label>label</label>
<input type="text" />
</div>
</div>
.box {
width: 500px;
outline: 1px solid purple;
display:table;
}
.row {
width: 50%;
display: table;
float:left;
}
label {
width: 50px;
display: table-cell;
}
input {
display: table-cell;
width: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
答案 1 :(得分:0)
你可以通过javascript或jquery来做,如果你想显示一列,这里有一个例子
$('input').each(function(index,input){
var _this = $(input);
//box width
var w1 = _this.parent().width();
//label width
var w2 = _this.prev().width();
_this.css('width',w1 - w2);
});
答案 2 :(得分:0)
我认为您应该使用自适应对象,因为您提到列的数量可能会有所不同,我的提案是响应式设计,因此您需要添加数量弹出窗口宽度上的列,所以媒体查询,如你所说,是最合适的解决方案(在我看来):
<div class="box">
<div class="row">
<label for="input">Label:</label>
<input type="text" id="input"/>
</div>
<div class="row">
<label for="input">Label:</label>
<input type="text" id="input"/>
</div>
<div class="row">
<label for="input">Label:</label>
<input type="text" id="input"/>
</div>
<div class="row">
<label for="input">Label:</label>
<input type="text" id="input"/>
</div>
<div class="row">
<label for="input">Label:</label>
<input type="text" id="input"/>
</div>
<div class="row">
<label for="input">Label:</label>
<input type="text" id="input"/>
</div>
</div>
.box{
width:100%;
}
.row {
float:left;
}
.row label{
display:inline-block;
width:25%;
}
.row input{
width: 68%;
}
@media screen and (min-width:250px){
.row{width:100%;}
}
@media screen and (min-width:500px){
.row{width:50%;}
}
@media screen and (min-width:750px){
.row{width:33%;}
}
@media screen and (min-width:1000px){
.row{width:25%;}
}
@media screen and (min-width:1250px){
.row{width:20%;}
}