【问题标题】:Is there a way to let divs float left and right from an expanding div?有没有办法让 div 从扩展的 div 左右浮动?
【发布时间】:2019-08-23 13:50:18
【问题描述】:

我正在构建一个网站,该网站显示许多 div 在彼此相邻和下方浮动。单击 div 时,该 div 会展开并显示其内容。

我想要做的是让所有其他 div 围绕展开的 div 浮动,但现在它们只会浮动在右侧(因为一行中的一个对象被展开并将其余对象向右和向下推)。

有没有办法通过 css 或 javascript 解决这个问题?

我实现了 float:left 和 display:inline-block,但是这些函数显然无法理解移动到扩展 div 的左侧。不同的位置也不起作用,我能做些什么来解决/完成这个?

$('.toggle-cells-one').click(function() {
  var toggleHeight = $(this).height() == 80 ? "181px" : "80px";
  $(this).animate({
    height: toggleHeight
  });
});

$('.toggle-cells-two').click(function() {
  var toggleHeight = $(this).height() == 80 ? "282px" : "80px";
  $(this).animate({
    height: toggleHeight
  });
});

$(".alg").on("click", function() {
  $(".alg-sub").toggle();
});
$(".cam").on("click", function() {
  $(".cam-sub").toggle();
});
$(".con").on("click", function() {
  $(".con-sub").toggle();
});
$(".dji").on("click", function() {
  $(".dji-sub").toggle();
});
$(".eth").on("click", function() {
  $(".eth-sub").toggle();
});
.country-wrap {
  position: relative;
  display: inline-block;
  float: left;
  width: 90px;
  height: 80px;
  margin: -1px -1px 0 0;
  padding: 10px;
  cursor: pointer;
  border: 1px solid black;
  text-align: center;
  vertical-align: top;
  font-size: 18px;
}


/*.country-wrap:hover {
  width: 201px;
}*/

.country-content {
  display: none;
  margin-top: 15px;
}
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>

<div class="countries">
  <div class="country-wrap toggle-cells-one alg">
    <img src="image0100.svg"><br> ALG
    <div class="country-content alg-sub">
      <img src="image0101.svg"><br> KAB
    </div>
  </div>
  <div class="country-wrap toggle-cells-one cam">
    <img src="image0200.svg"><br> ALG
    <div class="country-content cam-sub">
      <img src="image0201.svg"><br> KAB
    </div>
  </div>
  <div class="country-wrap toggle-cells-one con">
    <img src="image0300.svg"><br> ALG
    <div class="country-content con-sub">
      <img src="image0301.svg"><br> KAB
    </div>
  </div>
  <div class="country-wrap toggle-cells-one dji">
    <img src="image0400.svg"><br> ALG
    <div class="country-content dji-sub">
      <img src="image0401.svg"><br> KAB
    </div>
  </div>
  <div class="country-wrap toggle-cells-one eth">
    <img src="image0500.svg"><br> ALG
    <div class="country-content eth-sub">
      <img src="image0501.svg"><br> KAB
    </div>
  </div>
</div>

【问题讨论】:

  • 你试过用弹性盒子吗?它具有比浮动技术更好的控制器。
  • 这可能是一个解决方案,我现在将深入研究它,看看是否可以。谢谢!
  • 你会想要考虑使用“display: flex;”和“弹性包装:包装;”在父母身上
  • 检查masonry
  • @AndrewB 不幸的是,这会将扩展 div 下方的完整行向下移动

标签: javascript jquery html css


【解决方案1】:

看看masonry

$('.toggle-cells-one').click(function() {
  var toggleHeight = $(this).height() == 80 ? "181px" : "80px";
  $(this).animate({
    height: toggleHeight
  }, 400, 'swing', function() {
    // when the animation ends, trigger layout re-calculation
    $('.countries').masonry('layout');
  });
});

$('.toggle-cells-two').click(function() {
  var toggleHeight = $(this).height() == 80 ? "282px" : "80px";
  $(this).animate({
    height: toggleHeight
  });
});

$(".alg").on("click", function() {
  $(".alg-sub").toggle();
});
$(".cam").on("click", function() {
  $(".cam-sub").toggle();
});
$(".con").on("click", function() {
  $(".con-sub").toggle();
});
$(".dji").on("click", function() {
  $(".dji-sub").toggle();
});
$(".eth").on("click", function() {
  $(".eth-sub").toggle();
});

// create the masonry layout
$('.countries').masonry({
  itemSelector: 'div.country-wrap'
});
.country-wrap {
  position: relative;
  display: inline-block;
  float: left;
  width: 90px;
  height: 80px;
  margin: -1px -1px 0 0;
  padding: 10px;
  cursor: pointer;
  border: 1px solid black;
  text-align: center;
  vertical-align: top;
  font-size: 18px;
}


/*.country-wrap:hover {
  width: 201px;
}*/

.country-content {
  display: none;
  margin-top: 15px;
}
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>

<div class="countries">
  <div class="country-wrap toggle-cells-one alg">
    <img src="image0100.svg"><br> ALG
    <div class="country-content alg-sub">
      <img src="image0101.svg"><br> KAB
    </div>
  </div>
  <div class="country-wrap toggle-cells-one cam">
    <img src="image0200.svg"><br> ALG
    <div class="country-content cam-sub">
      <img src="image0201.svg"><br> KAB
    </div>
  </div>
  <div class="country-wrap toggle-cells-one con">
    <img src="image0300.svg"><br> ALG
    <div class="country-content con-sub">
      <img src="image0301.svg"><br> KAB
    </div>
  </div>
  <div class="country-wrap toggle-cells-one dji">
    <img src="image0400.svg"><br> ALG
    <div class="country-content dji-sub">
      <img src="image0401.svg"><br> KAB
    </div>
  </div>
  <div class="country-wrap toggle-cells-one eth">
    <img src="image0500.svg"><br> ALG
    <div class="country-content eth-sub">
      <img src="image0501.svg"><br> KAB
    </div>
  </div>
</div>

【讨论】:

  • 哇,这似乎是解决方案!你是我今天的英雄! :D
猜你喜欢
  • 2011-07-13
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多