我有一个宽度为200px,高度为500px的主分区。根据一些事件,我需要将宽度为50px和高度为50px的子分区添加到主分区中。我需要从左上到下添加它并向右流动。
|---------------|
| | |
| 1 | 4 |
|-------|-------|
| | |
| 2 | 5 |
|-------|-------|
| | |
| 3 | 6 |
|-------|-------|
我已经尝试过这些CSS,但它无效。
.SubDiv {
height: 50px;
width: 50px;
background: red;
}
.MainDiv {
max-height: 200px;
height: 200px;
width: 200px;
background: blue;
min-width: 100px;
direction: inherit;
}
<div>
<div id="SimulationPage">
<div id = "ParentDiv" class="MainDiv">
</div>
</div>
<input type='button' id = "adddiv" value='add div' />
</div>
$(document).ready(function () {
$('#adddiv').bind('click', function (eventargs) {
$("#ParentDiv").append('<div class="SubDiv"> </div>');
});
});
可以帮助我实现我想要的目标。
答案 0 :(得分:1)
你想要实现的目标不能仅仅在css中完成,因为你在父类中有未知数量的孩子,并且要将它们左右浮动,你必须找到最中间的孩子和从那里漂浮它。
如果jQuery让你满意(,因为你已在其中标记了这个问题)
here is a solution for dynamic count with jQuery
使用jQuery:
var count = $(".MainDiv").children().length; /*get total childs */
var mid_child = Math.ceil(count / 2) + 1; /* find mid child */
var x = 1; /*parameter to set negtaive margin, to push right float on top*/
var current_div_number = mid_child; /* div number to set margin */
/*assign class name to 2nd half childs, to float them right
through css, can be done through jQuery too!!*/
$(".MainDiv .SubDiv:nth-child(n+" + mid_child + ")").addClass("mid");
/* check each .mid class and assign negative margin-top*/
$(".MainDiv .mid").each(function (index) {
$(".MainDiv .SubDiv:nth-child(" + current_div_number + ")").css('margin-top', -(mid_child * 50) + (50 * x) + 'px');
x = x + 1;
current_div_number = current_div_number + 1;
});
<强> CSS 强>
.MainDiv > div.mid {
float:right;
background: green;
}
答案 1 :(得分:0)
<style>
.MainDiv {
max-height: 200px;
height: 200px;
width: 200px;
background: blue;
min-width: 100px;
direction: inherit;
}
.DivHolder {
width: 50px;
height: 150px;
float: left;
}
.SubDiv {
height: 50px;
width: 50px;
background: red;
}
</style>
<div id="SimulationPage">
<div class="MainDiv">
<div class="DivHolder" id="Row1"></div>
<div class="DivHolder" id="Row2"></div>
</div>
</div>
<script language="javascript">
$(document).ready(function () {
var col = 1;
var row = 1;
$('#adddiv').bind('click', function (eventargs) {
if(row <= 3)
{
$("#Row"+col).append('<div class="SubDiv"> </div>');
row = row + 1;
}
else
{
col = col + 1;
row = 1;
$("#Row"+col).append('<div class="SubDiv"> </div>');
row = row + 1;
}
});
});
</script>
你可以动态地去添加DivHolders并添加你想要的颜色
答案 2 :(得分:0)
由于您已经知道MainDiv
和SubDiv
的维度,因此您还知道每列和每行中SubDiv's
的数量。如果您正在寻找仅CSS解决方案,您可以考虑使用position
属性。使用一些硬编码(动态性较差)的CSS类,您可以通过这种方式实现它。我考虑了3X3
的{{1}}矩阵。这只是建议你采用不同的方法。
<强> JSFIDDLE DEMO 强>
<强> HTML 强>
SubDivs
<强> CSS 强>
<div class="MainDiv">
<div class="SubDiv">1</div>
<div class="SubDiv">2</div>
<div class="SubDiv">3</div>
<div class="SubDiv">4</div>
<div class="SubDiv">5</div>
<div class="SubDiv">6</div>
</div>
答案 3 :(得分:-1)
尝试在float:left;
.SubDiv