如何制作具有三个动画部分的视频动画容器?

Posted

技术标签:

【中文标题】如何制作具有三个动画部分的视频动画容器?【英文标题】:How can I make the video animation container with three animated section? 【发布时间】:2022-01-11 20:17:12 【问题描述】:

我在 Dribble 网站上看到了这个动画!

https://dribbble.com/shots/14250770-Cargo-Logistics-Website-Navigation

所以只是为了训练我厌倦了制作这个带有视频背景的动画!但效果不好。

这是我的 html 和 css 代码:

* 
  margin: 0;
  padding: 0;
  box-sizing: border-box;


section 
  position: relative;
  background-color: rgb(49, 69, 77);
  width: 100%;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 0;


.video-container 
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0%;
  left: 0%;
  background-color: transparent;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;


.video 
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;


.video video 
  width: 100%;
  height: 100%;
  object-fit: cover;


.block 
  position: relative;
  flex: 1;
  height: 100%;
  background-color: rgb(49, 69, 77);
  border-right: 1px solid #fff;
  z-index: 3;
  animation: animate 1.5s ease-in-out forwards;


.block:nth-child(3) 
  animation-delay: .5s;


.block:nth-child(4) 
  animation-delay: 1.5s;


.block:last-child 
  border-right: 0;


@keyframes animate 
  0% 
    height: 100%;
  
  100% 
    height: 0%;
  
<section>
  <div class="video-container">
    <div class="video">
      <video autoplay muted loop>
                    <source src="video.mp4" type="video/mp4" controls="false" />
                </video>
    </div>
    <div class="block"></div>
    <div class="block"></div>
    <div class="block"></div>
  </div>
</section>

这个想法是如何使视频包含在三个 div 中并制作这样的动画。仅用于视频背景。

【问题讨论】:

【参考方案1】:

我只使用 html 和 CSS 制作了这个动画,代码如下:

    <section class="animated-section">
        <div class="side">
            <video autoplay muted loop class="animated-video">
                <source src="../video.mp4" type="video/mp4" controls="false" />
            </video>
        </div>

        <div class="block left"></div>
        <div class="block middle"></div>
        <div class="block right"></div>

    </section>
* 
    margin: 0;
    padding: 0;
    box-sizing: border-box;


section 
    position: relative;
    width: 100%;
    height: 100vh;
    pointer-events: none;
    background-color: rgb(181, 181, 255);
    z-index: 1;
    overflow: hidden;


section .side 
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 2;
    overflow: hidden;


section .side video 
    position: relative;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 3;
    animation: rot 1.7s ease-in-out forwards;


section .block 
    position: absolute;
    top: 0;
    left: 0%;
    z-index: 4;
    width: 33.333333333%;
    height: 100%;
    background-color: rgb(181, 181, 255);
    animation: animate 1s ease-in-out forwards;


section .block.middle 
    left: 33.333333333%;
    animation-delay: .25s;


section .block.right 
    left: 66.666666666%;
    animation-delay: .5s;


@keyframes animate 
    0% 
        height: 100%;
    
    50% 
        transform: scale(1);
    
    100% 
        height: 0%;
        transform: scale(1);
    


@keyframes rot 
    0% 
        transform: scale(1.5) rotateZ(-10deg);
    
    100% 
        transform: scale(1) rotateZ(0deg);
    

【讨论】:

以上是关于如何制作具有三个动画部分的视频动画容器?的主要内容,如果未能解决你的问题,请参考以下文章

快速低成本动画视频课

Unity 2D Animation——3.待机动画录制

Java:从帧制作动画/视频

AE制作动画秒数与帧数如何转换

在 Flutter 中,您如何制作动画以将容器从 0 高度扩展到其内容的高度?

Flash动画宣传片制作技巧,有哪些?流量雨宣传视频制作