亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CSS 動畫未按預期運行

CSS 動畫未按預期運行

慕田峪9158850 2023-10-04 15:30:14
問題我制作了一個簡單的 css 動畫,但它的行為并不符合我的預期。這個想法是讓動畫繪制一條直線(從上向下),然后消失(也是從上向下)。當動畫開始時,線的起點向下移動一點,然后再次向上移動以保持在設定位置(動畫結束時的底部也是如此)。問題如何讓線條的起點停留在一個位置而不是上下“彈跳”?預期行為https://i.stack.imgur.com/NoHZt.gif 實際行為https://i.stack.imgur.com/vqjoU.gif 代碼.lineWrapper {  width: 1px;  height: 300px;  margin: auto;  position: relative;}.lineWrapper .line {  width: 100%;  height: 100%;  background: #000;  animation: scrollLine 5s linear infinite;}@keyframes scrollLine {  0% {    transform: scaleY(0);  }  10% {    transform: scaleY(0);    transform-origin: top;  }  30% {    transform: scaleY(1);  }  70% {    transform: scaleY(1);  }  90% {    transform: scaleY(0);    transform-origin: bottom;  }  100% {    transform: scaleY(0);  }}<div class="lineWrapper">  <div class="line"></div></div>代碼筆https://codepen.io/strazan/pen/RwPYgjq
查看完整描述

2 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

默認值為transform-origin居中,因此如果您在初始和最后狀態中省略它,它將被設置為居中。您還需要立即更改transform-origin中間的內容:


.lineWrapper {

  width: 1px;

  height: 300px;

  margin: auto;

  position: relative;

}


.line {

  height: 100%;

  background: #000;

  animation: scrollLine 5s infinite;

}


@keyframes scrollLine {

  0%,10% {

    transform: scaleY(0);

    transform-origin: top;

  }

  49.9% {

    transform: scaleY(1);

    transform-origin: top;

  }

  50% {

    transform: scaleY(1);

    transform-origin: bottom;

  }

  90%,100% {

    transform: scaleY(0);

    transform-origin: bottom;

  }

}

<div class="lineWrapper">

  <div class="line"></div>

</div>


查看完整回答
反對 回復 2023-10-04
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

我用一些不同的代碼行制作了類似的 CSS 動畫。


body {

  margin: 0px;

  display: flex;

  justify-content: center;

  background: black;

  overflow: hidden;

}


.line-wrapper {

  height: 800px;

  width: 8px;

  background: tranparent;

  display: flex;

  justify-content: center;

  animation: down 2s linear infinite;

}


@keyframes down {

  0% {

    transform: translateY(0px);

  }


  15% {

    transform: translateY(0px);

  }


  30% {

    transform: translateY(0px);

  }


  60% {

    transform: translateY(90px);

  }


  90% {

    transform: translateY(115px);

  }


  100% {

    transform: translateY(115px);

  }

}


.line {

  height: 8px;

  width: 4px;

  background: Gray;

  animation: scrollLine 2s ease-in-out infinite;

}


@keyframes scrollLine {

  100% {

    height: 800px;

  }

}


.eraser {

  height: 0px;

  width: 4px;

  background: black;

  animation: rmv 2s linear infinite;

}


@keyframes rmv {

  55% {

    height: 0px;

  }


  100% {

    height: 800px;

  }

}

<div class="line-wrapper">

  <div class="line">

    <div class="eraser"></div>

  </div>

</div>


查看完整回答
反對 回復 2023-10-04
  • 2 回答
  • 0 關注
  • 136 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號