day30-Auto Text Effect(自动文本吐字效果)

该文章展示了如何使用HTML、CSS和JavaScript创建一个自动文本吐字效果。通过修改速度控制器的值,用户可以改变文本显示的速度。代码示例中,文本内容是我们爱编程!,文本元素的ID为text,速度由speed输入框控制,初始速度为300除以输入值。JavaScript函数writeText()使用setTimeout递归更新文本内容,当文本显示完整后重置索引。
摘要由CSDN通过智能技术生成

50 天学习 50 个项目 - HTMLCSS and JavaScript

day30-Auto Text Effect(自动文本吐字效果)

效果

在这里插入图片描述

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Auto Text Effect</title>
    <link rel="stylesheet" href="style.css" />
</head>

<body>
    <h1 id="text">开始...</h1>

    <!-- 速度控制器 -->
    <div>
        <label for="speed">速度:</label>
        <input type="number" name="speed" id="speed" value="1" min="1" max="10" step="1">
    </div>

    <script src="script.js"></script>
</body>

</html>

style.css

@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');

* {
    box-sizing: border-box;
}

body {
    /* background-color: darksalmon; */
    font-family: 'Roboto', sans-serif;
    /* 竖直居中显示 */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100vh;
    overflow: hidden;
    margin: 0;
}

/* 速度控制器 */
div {
    position: absolute;
    bottom: 20px;
    background: rgba(0, 0, 0, 0.1);
    padding: 10px 20px;
    font-size: 18px;
}

/* 速度输入框 */
input {
    width: 50px;
    padding: 5px;
    font-size: 18px;
    /* background-color: darksalmon; */
    border: none;
    text-align: center;
    outline: none;
}

script.js

// 重点 flex  setTimeout 递归 return
// 1.获取元素节点
const textEl = document.getElementById('text')//显示文本
const speedEl = document.getElementById('speed')//速度
const text = '我们爱编程!'
let idx = 1
let speed = 300 / speedEl.value

writeText()

function writeText() {
    textEl.innerText = text.slice(0, idx)
    // console.log(text.slice(0, idx));
    idx++

    if (idx > text.length) {
        idx = 1
        // 只显示一次效果
        // console.log(1)
        // return
    }
    // 定时器,speed秒后又执行writeText()
    let timer = setTimeout(writeText, speed);
}

// 2.事件 速度改变时触发
speedEl.addEventListener('input', (e) => speed = 300 / e.target.value)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值