当前位置: 首页 > 知识库问答 >
问题:

在不同内容上平滑更改div高度

韦业
2023-03-14

我有一个表单(包含在div中),我根据页面和某些条件显示和隐藏该表单的元素。

在表单的底部有一个“上一步”和“下一步”按钮。目前,如果在表单中添加元素,它们的位置会突然改变,因此我希望包含表单的div会逐渐改变。

我该怎么做?我不想将转换添加到表单元素中(因为这样会有太多的转换),只想为包含的DIV添加转换。

共有2个答案

萧霍英
2023-03-14

当从表单中添加/删除元素时,不能将纯css转换应用于父级上的大小更改。

这里有一个解决方案,使用经过转换的边距底部来减少元素在父元素中占用的空间,并使用scale(1,0)使元素在视觉上减小大小。

setInterval(function() {
  
  let form = document.getElementsByTagName('form')[0];
  let formItem = form.children[Math.floor(Math.random() * 3)];
  formItem.classList.toggle('hidden');
  
}, 1000);
.page {
  position: fixed;
  box-sizing: border-box;
  width: 100%; height: 100%;
  left: 0; top: 0;
  padding: 30px;
}
form {
  position: relative;
  background-color: #a0a0a0;
}
.form-item {
  height: 50px;
  margin-bottom: 0;
  overflow: hidden;
  position: relative;
  outline: 1px solid black;
  background-color: #a0a0a0;
  transform-origin: 0% 0%;
  
  transform: scale(1, 1);
  transition: margin-bottom 1s ease-in-out, transform 1s ease-in-out;
}
.form-item.hidden {
  margin-bottom: -50px;
  transform: scale(1, 0);
}
.form-item > .label {
  margin: 0;
  color: #ffffff;
}
<div class="page">
  <form>

    <div class="form-item">
      <p class="label">Item 1</p>
      <input type="text" name="item1"/>
    </div>
    
    <div class="form-item">
      <p class="label">Item 2</p>
      <input type="text" name="item2"/>
    </div>
    
    <div class="form-item">
      <p class="label">Item 3</p>
      <input type="text" name="item3"/>
    </div>
    
    <div class="form-item">
      <p class="label">Item 4</p>
      <input type="text" name="item4"/>
    </div>
    
    <div>
      <input type="button" name="prev" value="Prev"/>
      <input type="button" name="next" value="Next"/>
    </div>
    
  </form>
</div>
梁宏才
2023-03-14

可以在div上使用转换。如果你说没问题,为什么不做呢?

.myDiv{
    -webkit-transition: height 1s ease;
    -transition: height 1s ease;
}

但是,为了使高度/宽度转换正常工作,您需要事先在div上指定宽度/高度。如果未设置或设置为“自动”,则转换仍将是突然的。

以下是一个例子:https://codepen.io/anon/pen/rrYxQm

 类似资料:
  • 问题内容: 我有一些JavaScript的简单HTML代码,看起来像: 我只是希望能够通过选择“ A”或“ B”单选按钮之一来更改div的内容(它是内部html),但是div#content没有javascript属性“ value”,所以我问它如何做完了。 问题答案: 假设您没有使用jQuery或其他使您更轻松地进行此类操作的库,则只需使用元素的innerHTML属性即可。

  • 问题内容: 我有一个div,其中包含数据库的一些文本: 以及链接列表: 该过程应如下所示: 点击链接 Ajax使用链接的URL通过GET将数据传递到php文件/同一页面 PHP返回字符串 div更改为此字符串 问题答案: 并在您的列表中添加事件

  • 问题内容: 我有一个部门想要显示图像,然后单击以在灯箱中打开它们。我将它们向左浮动并在线显示它们。设置overflow- x进行滚动,但是一旦行空间不足,它仍然会将图像放在下面。我想让它们内联,并在需要时显示水平滚动。 注意: 我无法更改内部图像的结构。它必须是锚点内的img。我的灯箱就这样要求它。 HTML: CSS: 我知道这是非常基本的,但是我做不到。不知道怎么了 问题答案: HTML中可能

  • 我使用Eclipse创建了一个网站,Servlet在其中将数据发送到jsp。但是我不知道为什么我在Servlet中更改数据。它仍然将旧数据发送到jsp。即使我尝试了这些选项.. 菜单-项目-清理(如果不使用自动构建,请单击此选项) 菜单-项目-项目自动构建(选中此选项) 下面是一个例子: Product.java ProductModel.java ProductController.java i

  • 是否有可能更改单个Swiper-Slide onclick中的内容? 我在每个滑动滑块中都有顺序编号的div,当单击单个div时,这些div应该覆盖一个图像。我知道JS得到了响应,因为当点击它时,它会改变swiper容器之外的其他div。 我试过: 但滑动器内部没有任何变化。以下是我的Swiper初始化,以备不时之需: 提前道谢。

  • 问题内容: 在下面的代码中,我希望带有“ y”的div将div的高度与3个“ x”相匹配。 需要注意的是内部div是浮动的。 问题答案: 如果您不反对使用jQuery,可以使用EqualHeight,它应该做您想要的