jquery - 在一行 float 元素之间添加一个元素

标签 jquery html css css-float

我有一堆在网格中对齐的盒子。

它们都向左浮动,然后一个盒子的边距和宽度约为33%,这样一旦三个盒子彼此相邻,下一个盒子就会进入下一行。相当均匀的三分之一。

这就是我的开始: Start

当单击一个框时,我现在想在我单击的框下添加一个框。

我希望看到它以一种几乎只是增加了这排盒子之间的空间,并且新盒子被挤进该空间的方式发生。

这就是我想看到的: desired goal

目前我只是使用 jquery 的 .after() 在我点击的框后面添加一个框。这个框有 clear:both; 并且它可以完美工作,但仅当单击第三个框时...当我单击第二个或第一个框时,同一行的以下框会 float 进入下一行。 当然这是完全可以预见的,因为它完全按照我告诉它的方式去做。 但我希望他们留在那里!我只是不知道怎么办。

这就是我得到的: the problem

实现这一目标的最佳方法是什么?

这是我的代码示例: http://jsfiddle.net/z3ggf/1/

最佳答案

所以基本上,您需要找到该行中的最后一个(第三个)框,然后附加一些 html

$(".box").click(function(){
    var next_third_box_index = Math.floor($(this).index('.box') / 3) * 3 + 2;            
    var $third = $('#container .box:eq('+next_third_box_index+')');      
    $third.after('<div class="break"></div>');                   
});

jQuery 演示:

文档:

<小时/>

这是在单击 div 的行中查找第三个框的索引的方法:

Math.floor($(this).index('.box') / 3) * 3 + 2;
  • 如果单击框 0,则第三个框索引等于 Floor(0/3) * 3 + 2 = 2
  • 如果单击框 1,则第三个框索引等于 Floor(1/3) * 3 + 2 = 2
  • 如果单击框 2,则第三个框索引等于 Floor(2/3) * 3 + 2 = 2
  • 如果单击框 3,则第三个框索引等于 Floor(3/3) * 3 + 2 = 5
  • 如果单击框 4,则第三个框索引等于 Floor(4/3) * 3 + 2 = 5
  • 如果单击框 5,则第三个框索引等于 Floor(5/3) * 3 + 2 = 5
  • 如果单击框 6,则第三个框索引等于 Floor(6/3) * 3 + 2 = 8
  • ...

关于jquery - 在一行 float 元素之间添加一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19260434/

相关文章:

html下拉菜单颜色

javascript - 在不离开页面的情况下将数据从html发送到php页面

javascript - 创建一个用于图像上传的 md 对话框,在 angularjs 中进行图像查看、裁剪和上传

html - 验证 |需要 ="true"/"false"| HTML 表格

html - 动画 gif 背景在 Ipad 上滞后有什么解决办法吗?

html - 带有 float 中间元素的四个等长框

javascript - 在刷新页面时记住类名

javascript - 尝试将我的所有 JS 连接到一个文件中并需要一些 JS 框架/模式类型建议

javascript - jQuery 图像 slider 封面图像定位问题

css - Font Awesome 随机不显示图标,没有任何改变