展开一列/ div,同时在其周围移动其他列

Posted

技术标签:

【中文标题】展开一列/ div,同时在其周围移动其他列【英文标题】:expand one column/div, while moving other columns around it 【发布时间】:2015-11-23 14:23:59 【问题描述】:

我正在创建一个示例仪表板 UI,它有 3 个列/div,每列中有 3 个卡片或磁贴。单击时,我正在使用 jQuery 动画扩展每张卡片,当所选卡片展开时,同一列中的卡片/图块会向下移动。然而,其他列中的元素不会移动,并且卡片最终会相互重叠。展开其中一张时,如何从不同列中移动其他卡? (目前,只有左上角的卡片附有动画)

codepen - http://codepen.io/arjun2523/pen/bdXrPB

HTML

<html>
  <head>
    <title>3 column tiles</title>
    <script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
  </head>
  <body>
  <div class = "container">
    <div class = "column-left"; overflow:auto>
      <div class = "card-blue expand" id = "blue-column-1"></div>
      <br>
      <div class = "card-green"></div>
      <br>
      <div class = "card-pink"></div>
    </div>

    <div class = "column-center">
      <div class = "card-blue"></div>
      <br>
      <div class = "card-green" id="green-column-2"></div>
      <br>
      <div class = "card-pink"></div>
    </div>

    <div class = "column-right">
      <div class = "card-blue"></div>
      <br>
      <div class = "card-green"></div>
      <br>
      <div class = "card-pink"></div>
    </div>
    </div>

CSS

.expand 
  height: 500px;
  width : 500px;
  position: relative;


.container 
  position:relative;


.column-right 
  float: right;
  width: 33%;


.column-center 
  display: inline-block;
  width: 33%;


.column-left 
  float: left;
  width: 33%;


.card-blue 
  cursor:pointer;
  height: 300px;
  width: 300px;
  position: relative;
  background-color: lightblue;
  padding: 10px;
  margin-bottom:10px;


#blue-column-1 
  position:relative;



.card-green 
  cursor:pointer;
  height: 300px;
  width: 300px;
  position: relative;
  background-color: lightgreen;
  padding: 10px


.card-pink 
  cursor:pointer;
  height: 300px;
  width: 300px;
  position: relative;
  background-color: lightpink;
  padding: 10px

JAVASCRIPT

$("#blue-column-1").click(function()
  var blue = $("#blue-column-1");
  blue.animate(height:'500px', width:'500px', "slow");
);

【问题讨论】:

您希望点击后其他列的宽度是多少? 可能使用水平布局并为您单击的 div 设置显示块 我有一些简单的问题。 1.是否希望点击后列的宽度相等(目前为33%)? 2.是否还要展开同列的其他卡片? @BryanHill - 其他列应保持相同的宽度。只是它们的位置会在点击一张卡片时受到影响,以便让开扩展卡片。 @Patrice - 列的宽度相同。并且只有一张被点击的卡片应该展开。同一列中的其他卡片保持相同大小 【参考方案1】:

要解决您的问题,您应该首先更改列 div 的宽度,而不是卡片 div。然后,一旦您将所有宽度设置为百分比而不是 px(这将确保它永远不会溢出)。然后当你使用 JS 时改变每一列的宽度。例如:33% 33% 33% -> 49% 25% 25%。如果卡片 div 设置为百分比,那么一切都应该正常工作。

【讨论】:

如果你给我你想要的百分比,我会给你一个示例代码。 也许您可以编辑您的答案以包含一些示例代码,而不仅仅是解释步骤?

以上是关于展开一列/ div,同时在其周围移动其他列的主要内容,如果未能解决你的问题,请参考以下文章

为啥给 div 一个背景颜色在其边框上绘制?

在R中同时移动矩阵的特定列和行的有效方法

如何分组列并计算其他列的总数,同时排除NaN?

在一列上汇总数据框,同时保留其他列

更改数据框索引值,同时保持其他列数据相同

将多列附加到df,同时保留其他列值[重复]