javascript - 具有多个不同高度小部件的两列布局,如何使小部件可折叠并保持页面流动?

标签 javascript jquery html css responsive-design

我有一个正在处理的主页,它有 2 个等宽的列,页面上有多个小部件。该页面是响应式的,小部件的数量是可变的。目前我有一个解决方案,它运行良好并且不使用像 masonry 或 salvattore 这样的插件。我反对使用这些插件的原因是我不希望页面是两个固定的列,我希望小部件能够流动并适合可用空间。

这让我想到了我的问题 - 我希望能够折叠这些小部件中的任何一个,而其他小部件应该四处流动并适合剩余空间。这是我目前所拥有的原型(prototype):

http://codepen.io/charge-valtech/pen/bzJfj

这是我写的 jquery:

function layoutWidgets() {
  console.log('layout widgets');
  if ($(".left-widget").css("float") == "left") {
    $('.left-widget').each(function (index, value) {
      var widgetPosition = $(this).position().left;
      if (widgetPosition >= 30) {
        $(this).removeClass('left-widget').addClass('right-widget');
      }
    });
    $('.right-widget').each(function (index, value) {
      var widgetPosition = $(this).position().left;
      if (widgetPosition <= 30) {
        $(this).removeClass('right-widget').addClass('left-widget');
      }
    });
  }
}

layoutWidgets();
$(window).resize(layoutWidgets);

$('.collapse').click(function () {
  $(this).closest('.widget').toggleClass('collapsed');
});

但出于某种原因,如果我将 layoutWidgets 函数放在用于折叠小部件的点击函数中,它就不起作用。

有什么想法吗?

最佳答案

要么将您的代码放在 document.ready 函数中,要么在加载所有内容后将其包含在页脚中。您不能将点击事件附加到尚不存在的元素。

关于javascript - 具有多个不同高度小部件的两列布局,如何使小部件可折叠并保持页面流动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20265218/

相关文章:

javascript - 通过单击按钮将所选文本从一个内容 div 移动到另一个内容 div

javascript - 如何使用 jQuery 获取后代 span 元素?

css - "cut"元素如何根据div的border-radius

javascript - Jquery平滑滚动(非锚定)

javascript - JS 方法 parseFloat 不返回正确的值

JavaScript 复制到剪贴板不起作用

jquery - 如何在 Windows 上调整所选 jquery 下拉列表的大小

javascript - 在 javascript 中使用 "that"关键字

HTML Favicon.ico 不会在 Google Chrome 上显示

html - 'align-items-end' 如何在图像上叠加多个文本元素同时保持 block 状态