Rumah  >  Soal Jawab  >  teks badan

Animasi input dalam CSS melebihi had yang ditentukan

Animasi menaip akan berhenti pada bilangan aksara yang ditetapkan setiap kali. Jika saya memanjangkan kenyataan, ia rosak. Jika saya memendekkan kenyataan, ia berterusan sehingga bilangan aksara yang ditetapkan dicapai. Saya tahu saya perlu menukar bilangan langkah (50), tetapi itu sebenarnya bukan nombor yang dihentikan, ia berhenti pada 28.

@import url('https://fonts.googleapis.com/css2?family=Courier+Prime&family=Source+Code+Pro:wght@200&display=swap');
html {
  min-height: 100%;
  overflow: hidden;
}

body {
  height: calc(100vh - 8em);
  padding: 0;
  margin: 0;
  color: #FFF;
  font-family: 'Courier Prime', monospace;
  background-color: rgb(0, 0, 0);
}

.video-bg {
  position: absolute;
  top: 0;
  left: 0;
  min-width: 100%;
  min-height: 100%;
  opacity: .5;
}

.line {
  position: relative;
  top: 75%;
  width: 24em;
  margin: auto;
  border-right: 2px solid #FFF;
  font-size: 18px;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  transform: translateY(-50);
}

.anim-typewriter {
  animation: typewriter 5s steps(50) 1s 1 normal both, blinkTextCursor 750ms steps(40) infinite normal;
}

@keyframes typewriter {
  from {
    width: 0;
  }
  to {
    width: 16em;
  }
}

@keyframes blinkTextCursor {
  from {
    border-right-color: transparent;
  }
  to {
    border-right-color: rgb(155, 211, 71);
  }
}
<p class="line anim-typewriter">Under construction...</p>

P粉285587590P粉285587590213 hari yang lalu379

membalas semua(1)saya akan balas

  • P粉725827686

    P粉7258276862024-03-20 00:48:36

    Anda boleh melaraskan tempat bingkai utama berakhir dengan mengurangkan parameter lebar di sini:

    @keyframes typewriter {
      from {
        width: 0;
      }
      to {
        width: 16em;
      }
    }

    Tukar lebar kepada 13em dan kursor akan berkelip pada hujung rentetan:

    @import url('https://fonts.googleapis.com/css2?family=Courier+Prime&family=Source+Code+Pro:wght@200&display=swap');
    html {
      min-height: 100%;
      overflow: hidden;
    }
    
    body {
      height: calc(100vh - 8em);
      padding: 0;
      margin: 0;
      color: #FFF;
      font-family: 'Courier Prime', monospace;
      background-color: rgb(0, 0, 0);
    }
    
    .video-bg {
      position: absolute;
      top: 0;
      left: 0;
      min-width: 100%;
      min-height: 100%;
      opacity: .5;
    }
    
    .line {
      position: relative;
      top: 75%;
      width: 24em;
      margin: auto;
      border-right: 2px solid #FFF;
      font-size: 18px;
      text-align: center;
      white-space: nowrap;
      overflow: hidden;
      transform: translateY(-50);
    }
    
    .anim-typewriter {
      animation: typewriter 5s steps(50) 1s 1 normal both, blinkTextCursor 750ms steps(40) infinite normal;
    }
    
    @keyframes typewriter {
      from {
        width: 0;
      }
      to {
        width: 13em;
      }
    }
    
    @keyframes blinkTextCursor {
      from {
        border-right-color: transparent;
      }
      to {
        border-right-color: rgb(155, 211, 71);
      }
    }
    <p class="line anim-typewriter">Under construction...</p>

    Ini adalah cara paling mudah, tetapi pada masa hadapan jika anda mempunyai rentetan bersaiz dinamik, anda perlu mengemas kini lebar berdasarkan panjang rentetan (bilangan aksara).

    balas
    0
  • Batalbalas