css 创建负高度div?并设置其动画[已关闭]

axr492tv  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(189)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
3天前关闭。
这篇文章是编辑和提交审查3天前。
Improve this question
构建一条特殊的曲线,我有一个正方形元素div,它需要固定到它的底线,而高度将从顶部改变(使用动画):

我试图设置负高度,并将div定位在紫色线的y轴上,但这不起作用。
如果我只是添加一个带有 * y偏移量 * 的普通div,我不能从顶部为它设置动画。
如何设置这个div,这样我就可以轻松地动画它的高度移动,如图所示?
btw-此div必须位于absolute位置。

.element{
        width: 40px;
        height: auto;
        position: absolute;
        transition: all 1.0s ease-in-out;
        overflow: hidden;
    }
    <div class="element"></div>
    element.style.height = 60 + 'px'
smtd7mpg

smtd7mpg1#

这里有一个position: absolute的例子,bottom: 0是保持它在底部的原因,然后你可以用@keyframes来改变高度。

.container {
  width: 400px;
  height: 350px;
  border-bottom: 2px solid black;
  
  position: relative;
}

.animated {
  width: 100px;
  height: 200px;
  border: 2px solid black;
  
 position: absolute;
 left: 50%;
 bottom: 0px;
 -webkit-transform: translateX(-50%);
 transform: translateX(-50%);
 animation: grow 4s infinite;

}

@keyframes grow {
   0%   { height: 200px; }
   50%  { height: 0px; }
   100% { height: 200px; }
}
<div class="container">
  <div class="animated"></div>
</div>

*****EDIT****编辑下面的注解,以便您可以使用javascript设置css变量,然后使用该变量设置元素的高度,并使用相同的变量设置动画。

一个一个二个一个一个一个三个一个一个一个一个一个四个一个
你可以设置持续时间或任何相同的方式。

55ooxyrt

55ooxyrt2#

这是一个基本示例,说明如何对绝对定位的动画进行布局,以便底部保持固定在适当位置。
正如评论中提到的,重要的部分是bottom: 0(或者任何适合您情况的固定值)

/* A wrapper component, the only important part here is the position relative */
.wrapper {
  position: relative;
  height: 100px;
  width: 100px;
  border-bottom: 1px solid #000;
}

.animated {
  position: absolute;
  left: 10px;
  bottom: 0; /* This fixes the bar to the bottom of the wrapper element */
  width: 20px;
  height: 0;
  background-color: #f00;
  /* Some animation for demo purposes */
  animation-duration: 3s;
  animation-name: animate-height;
  animation-iteration-count: infinite;
  animation-direction: alternate;
}

@keyframes animate-height {
  from {
    height: 0px;
  }
  
  to {
    height: 100px;
  }
}
<div class="wrapper">
  <div class="animated"></div>
</div>

相关问题