正在尝试整理 JQuery 的算法
Trying to sort out algorithm for JQuery
试图在此处改进此答案:
我一直在努力弄清楚如何创建一个 jQuery,它将动态设置 div 的 margin-top
,具体取决于与高度总和相比的累积高度总数divs.
的相邻列
css:
div {outline:solid 1px red; }
// Set media container widths small to test code.
@media (min-width: 400px) {
.container {
max-width: 1170px;
}
.left {
max-width:50%;
width: 50%;
float:left;
clear:left;
}
.right {
max-width:50%;
width: 50%;
float:left;
}
}
@media (min-width: 150px) {
.container {
max-width: 400px;
}
.col-sm-12 {
width: 100%;
}
}
Html:
<div id="1" class="left col-sm-12" style="height:100px;background-color:yellow;">DIV 1</div>
<div id="2" class="right col-sm-12" style="height:80px;">DIV 2</div>
<div id="3" class="left col-sm-12" style="height:50px;background-color:yellow;">DIV 3</div>
<div id="4" class="right col-sm-12" style="height:70px;">DIV 4</div>
<div id="5" class="left col-sm-12" style="height:20px;background-color:yellow;">DIV 5</div>
<div id="6" class="right col-sm-12" style="height:80px;">DIV 6</div>
<div id="7" class="left col-sm-12" style="height:50px;background-color:yellow;">DIV 7</div>
<div id="8" class="right col-sm-12" style="height:90px;">DIV 8</div>
Js:
$(function () {
// Get div by id.
var idR = $("div").attr('id');
var idNumder =parseInt(idR);
// check if it's a right div.
if((idNumber % 2 ==0) && (idNumber > 2)){
var className = $("div").attr('class');
var leftHeight = 0;
var rightHeight = 0;
for(int i =0; i<idNumber; i++){
// count up left side heights.
if(className.localeCompare("left")==0){
leftHeight += $("#"+idNumber.ToString()).height;
}
// count up right side heights.
if(className.localeCompare("right")==0){
rightHeight += $("#"+idNumber.ToString()).height;
}
var diff = leftHeight - rightHeight;
// Determine which side is shorter.
if(leftHeight > rightHeight){
$("#idR").css({
"margin-top":"-"+ diff + "px",
});
}
else{
var idL = (idNumber + 1).toString();
$("#idL").css({
"margin-top":"-"+ diff + "px",
"clear":"both",
});
}
}
}
});
fiddle:http://jsfiddle.net/kermit77/hswxc06w/26/
想法是,将高度差作为负上边距应用到较短的 div,使其在其上方的 dive 下方齐平。
我不确定自己做错了什么,我怀疑不止一件事。我一直在摆弄它(没有双关语意)并且无法让它工作。
我认为根本没有采取任何行动。
如果有任何反馈,我将不胜感激
我在接受的答案的帮助下解决了这个问题,请在此处查看完整代码:
看看我找出解决方案的方法。
我拿了几个新的 div,让现有的 div 隐藏在后面,然后按照 class 将 div 附加到两个 div 的右边和左边。
JS fiddle link
下面是我将现有的 div 添加到两个新的 div 的代码
$('#div1').css("float", "left");
$('#div2').css("float", "right");
$('#div1').append($('.left'));
$('#div2').append($('.right'));
试图在此处改进此答案:
我一直在努力弄清楚如何创建一个 jQuery,它将动态设置 div 的 margin-top
,具体取决于与高度总和相比的累积高度总数divs.
css:
div {outline:solid 1px red; }
// Set media container widths small to test code.
@media (min-width: 400px) {
.container {
max-width: 1170px;
}
.left {
max-width:50%;
width: 50%;
float:left;
clear:left;
}
.right {
max-width:50%;
width: 50%;
float:left;
}
}
@media (min-width: 150px) {
.container {
max-width: 400px;
}
.col-sm-12 {
width: 100%;
}
}
Html:
<div id="1" class="left col-sm-12" style="height:100px;background-color:yellow;">DIV 1</div>
<div id="2" class="right col-sm-12" style="height:80px;">DIV 2</div>
<div id="3" class="left col-sm-12" style="height:50px;background-color:yellow;">DIV 3</div>
<div id="4" class="right col-sm-12" style="height:70px;">DIV 4</div>
<div id="5" class="left col-sm-12" style="height:20px;background-color:yellow;">DIV 5</div>
<div id="6" class="right col-sm-12" style="height:80px;">DIV 6</div>
<div id="7" class="left col-sm-12" style="height:50px;background-color:yellow;">DIV 7</div>
<div id="8" class="right col-sm-12" style="height:90px;">DIV 8</div>
Js:
$(function () {
// Get div by id.
var idR = $("div").attr('id');
var idNumder =parseInt(idR);
// check if it's a right div.
if((idNumber % 2 ==0) && (idNumber > 2)){
var className = $("div").attr('class');
var leftHeight = 0;
var rightHeight = 0;
for(int i =0; i<idNumber; i++){
// count up left side heights.
if(className.localeCompare("left")==0){
leftHeight += $("#"+idNumber.ToString()).height;
}
// count up right side heights.
if(className.localeCompare("right")==0){
rightHeight += $("#"+idNumber.ToString()).height;
}
var diff = leftHeight - rightHeight;
// Determine which side is shorter.
if(leftHeight > rightHeight){
$("#idR").css({
"margin-top":"-"+ diff + "px",
});
}
else{
var idL = (idNumber + 1).toString();
$("#idL").css({
"margin-top":"-"+ diff + "px",
"clear":"both",
});
}
}
}
});
fiddle:http://jsfiddle.net/kermit77/hswxc06w/26/
想法是,将高度差作为负上边距应用到较短的 div,使其在其上方的 dive 下方齐平。
我不确定自己做错了什么,我怀疑不止一件事。我一直在摆弄它(没有双关语意)并且无法让它工作。
我认为根本没有采取任何行动。
如果有任何反馈,我将不胜感激
我在接受的答案的帮助下解决了这个问题,请在此处查看完整代码:
看看我找出解决方案的方法。
我拿了几个新的 div,让现有的 div 隐藏在后面,然后按照 class 将 div 附加到两个 div 的右边和左边。
JS fiddle link
下面是我将现有的 div 添加到两个新的 div 的代码
$('#div1').css("float", "left");
$('#div2').css("float", "right");
$('#div1').append($('.left'));
$('#div2').append($('.right'));