申请一个免费的毒鸡汤api,并且用原生JS实现竖行文本的打字机效果

这是我参与更文挑战的第12天,活动详情查看: 更文挑战

前言

今天是端午节放假的第一天,想着给我的博客首页添加一些有意思的东西,思来想去,准备在首页添加一句毒鸡汤,毒鸡汤一定要是随机的,每次刷新都会有不同的句子,然后通过打字机的效果表现出来。为了巩固JS基础,我决定先用原生JS做个Demo出来,撸起袖子说做就做,效果如下图。

GIF 2021-6-12 22-37-40.gif

毒鸡汤的接口

毒鸡汤的句子千千万万,我没有条件自己搞个数据库和接口出来,所以当然最好是有免费现成的最香啦!我找了好久,最后用的是天行数据API接口,不是打广告哈,毕竟我这小小的阅读量也没人找我打广告~

先简单整理一下天行数据部分开放API接口:

接口名称 接口地址 说明
微信链接转换 www.tianapi.com/apiview/89 将临时链接转为永久链接
查询微信全文 www.tianapi.com/apiview/88 获取微信全文头像等信息
综合新闻 www.tianapi.com/apiview/87 混合输出全频道新闻数据
二十四节气 www.tianapi.com/apiview/86 农历节气数据接口
汽车新闻 www.tianapi.com/apiview/85 汽车行业新闻资讯接口
血型配对 www.tianapi.com/apiview/84 血型性格与姻缘的关联
生肖配对 www.tianapi.com/apiview/83 中华传统十二生肖配对
图片编码 www.tianapi.com/apiview/82 将图片转为base64编码
微信智能接口 www.tianapi.com/apiview/81 接入微信公众和小程序平台
土味情话 www.tianapi.com/apiview/80 甜到腻嘴的土味情话接口
互联网资讯 www.tianapi.com/apiview/79 互联网资讯新闻接口
星座运势 www.tianapi.com/apiview/78 查询十二星座每日运势
微信最新文章 www.tianapi.com/apiview/77 获取公众号最新文章接口
恶意IP检测 www.tianapi.com/apiview/75 实时恶意IP检测接口
恶意链接检测 www.tianapi.com/apiview/74 实时恶意链接检测接口
获取网页信息 www.tianapi.com/apiview/73 获取网页头部信息接口
天气预报 www.tianapi.com/apiview/72 一周天气预报API接口
汉字转拼音 www.tianapi.com/apiview/70 汉字转拼音API接口
动漫资讯 www.tianapi.com/apiview/69 全网热点动漫资讯API
网络热点 www.tianapi.com/apiview/68 网络实时搜索热点
抽取网页图片 www.tianapi.com/apiview/67 支持按格式抽取网页中的图片
新闻全文 www.tianapi.com/apiview/66 该接口可获取新闻全文内容
频道列表 www.tianapi.com/apiview/65 天行数据新闻频道ID数据
财经新闻 www.tianapi.com/apiview/64 了解身边的经济大事
游戏资讯 www.tianapi.com/apiview/63 每日游戏精选新闻
英语一句话 www.tianapi.com/apiview/62 每日英语一句有哲理的话
优美诗句 www.tianapi.com/apiview/61 意境优美的诗词句
唐诗三百首 www.tianapi.com/apiview/60 一部流传很广的唐诗精华选集
唐诗大全 www.tianapi.com/apiview/59 唐朝诗句大全API接口
CBA新闻 www.tianapi.com/apiview/58 CBA新闻咨询API接口
简说历史 www.tianapi.com/apiview/57 一句话简说历史
小段子 www.tianapi.com/apiview/56 品味不一样的生活
实时股价 www.tianapi.com/apiview/55 高质量股票实时报价
顺口溜 www.tianapi.com/apiview/54 一种好玩有趣的口头韵文
精美句子 www.tianapi.com/apiview/53 优美句子一句话签名
语言翻译API www.tianapi.com/apiview/52 支持多国语言互译
通用接口 www.tianapi.com/apiview/51 支持所有新闻频道数据分类输出
网页转API www.tianapi.com/apiview/50 实现任意图文列表类资讯输出
英汉词典 www.tianapi.com/apiview/49 包含所有常用英文单词汉语解释
中文词典 www.tianapi.com/apiview/48 中文大辞典API接口
天行机器人 www.tianapi.com/apiview/47 一个有趣的AI机器人
中文分词API www.tianapi.com/apiview/46 效率极高的中文分词接口
中国老黄历 www.tianapi.com/apiview/45 中国老黄历API
手机归属地 www.tianapi.com/apiview/44 查询手机号码所属地区
ip地址查询 www.tianapi.com/apiview/43 最新的IP地址库查询接口
星座配对 www.tianapi.com/apiview/42 支持单人和双人配对搜索
二维码解码 www.tianapi.com/apiview/41 二维码解码API接口
二维码编码 www.tianapi.com/apiview/40 二维码编码API接口
神回复 www.tianapi.com/apiview/39 一句神回复惊醒梦中人
歇后语 www.tianapi.com/apiview/38 短小风趣又像谜语的句子
绕口令 www.tianapi.com/apiview/37 初入江湖都会化肥会挥发
网络取名 www.tianapi.com/apiview/36 随机取一个好听的网名
网址转换 www.tianapi.com/apiview/35 将复杂的长网址为短连接
股市术语 www.tianapi.com/apiview/34 股海无涯回头是岸
网络热词 www.tianapi.com/apiview/33 网络上的流行语来龙去脉
地名谜语 www.tianapi.com/apiview/32 根据提示猜城市名称
一战到底 www.tianapi.com/apiview/31 一站到底竞答应用必备
成语典故 www.tianapi.com/apiview/30 了解每个成语的典故来源
历史的今天 www.tianapi.com/apiview/29 历史的今天API
脑筋急转弯 www.tianapi.com/apiview/28 脑筋急转弯API接口
生日性格 www.tianapi.com/apiview/27 预示性格和生日某种关联
名言警句 www.tianapi.com/apiview/26 名人名言学以致用
雷人笑话 www.tianapi.com/apiview/25 笑一笑十年笑
周公解梦 www.tianapi.com/apiview/24 梦也许预示着某种含义
菜谱查询 www.tianapi.com/apiview/23 生活类厨房类应用必备API
人工智能 www.tianapi.com/apiview/22 AI人工智能行业新闻资讯API
区块链新闻 www.tianapi.com/apiview/21 区块链行业相关新闻资讯API
IT资讯 www.tianapi.com/apiview/20 IT行业相关新闻资讯API
VR科技 www.tianapi.com/apiview/19 VR虚拟现实新闻资讯API
美女图片 www.tianapi.com/apiview/18 美女图片API
奇闻异事 www.tianapi.com/apiview/17 世界奇闻资讯API
健康知识 www.tianapi.com/apiview/16 健康知识养生资讯文章资讯
旅游资讯 www.tianapi.com/apiview/15 旅游景点新闻资讯API
移动互联 www.tianapi.com/apiview/14 移动互联网行业资讯API
军事新闻 www.tianapi.com/apiview/13 军事资讯API
苹果新闻 www.tianapi.com/apiview/12 Apple产品动态API
创业新闻 www.tianapi.com/apiview/11 互联网行业新闻AP
科技新闻 www.tianapi.com/apiview/10 信息科技行业新闻
足球新闻 www.tianapi.com/apiview/9 国足新闻动态实时更新
NBA新闻 www.tianapi.com/apiview/8 NBA新闻动态API
体育新闻 www.tianapi.com/apiview/7 国内外体育API
娱乐新闻 www.tianapi.com/apiview/6 娱乐新闻API服务
国际新闻 www.tianapi.com/apiview/5 国际新闻API接口服务
国内新闻 www.tianapi.com/apiview/4 国内新闻API接口服务
社会新闻 www.tianapi.com/apiview/3 了解社会新闻大事
微信主页 www.tianapi.com/apiview/2 微信主页文章实时同步
微信精选 www.tianapi.com/apiview/1 微信公众号精选文章

功能还是很多很好玩的,可以做出很多有意思的东西。不过我们要用到的接口并不在上面的开放接口里面,而是注册了免费会员之后,申请的免费接口。

在注册了免费会员之后,我们直接来到接口大全的页面,可以看到,有很多有意思的接口提供:

image.png

我们可以在这里搜索我们想要的接口,搜索“毒鸡汤”,结果如下:

image.png

点进去之后,有调用示例,返回参数等一应俱全,直接申请即可:

image.png

申请完毕之后,可以在数据管理》我申请的接口中查到该接口:

image.png

可以看到毒鸡汤的接口免费次数是100次,反正对我来说是足够用啦~如果实在不够还可以用天豆抵扣,具体天豆怎么获得之类的,我也不太清楚,这里不做讨论。

好了,既然我们已经成功得到了毒鸡汤的接口,下面就可以来实现一个竖版的打字机效果啦!

竖版打字机效果

竖版的打字机,必须要先把文字竖起来(好像是句废话),这里我采用了简单粗暴的方法,在这个打字机效果的盒子内,每一列字是一个p标签,p标签包含span标签,span标签里面是文字,给p标签一个字的宽度,宽度不够,文字会自动换行。基本布局代码如下所示:

    <style>
        p {
            float: left;
            width: 1em;
            height: 100%;
            font-size: 14px;
            margin: 5px;
            text-align: left;
        }
    </style>

    <div class="signature">
        <p>
            <span>努力把日子填满</span>
        </p>
        <p>
            <span>别来提醒我有多孤单</span>
        </p>
    </div>
复制代码

效果如图:

image.png

css效果完成之后,我们来看打字机的效果如何实现:

想要实现打字机的效果,我们要考虑以下几个方面:

  • 文本要根据标点符号进行切割,转为数组,可以该采用正则表达式。
  • 文字逐个展示出来,所以使用字符串的substring方法最合适不过了。
  • 光标的闪烁效果直接用jq的fadeOut和fadeIn淡入淡出来实现即可。

于是我立马写了如下代码:

    let text // 打印的文本
    let arr // 文本根据标点符号切割后的数组
    let i = 0 // 初始数组循环下标从0开始
    function daziji(i) {
        let ps = $(".signature").children("p") // 获取盒子内共有几行文本
        if (i == ps.length) return false // 如果0行文本,直接结束函数
        let index = 0 // 当前行文字字数
        let dazi = setInterval(function() {
            ps[i].childNodes[1].innerText = "I" 
            $(ps[i].childNodes[1]).fadeOut(300).fadeIn(300)
            ps[i].childNodes[0].innerText = arr[i].substring(0, index++)
            if (index > arr[i].length) {
                $(ps[i].childNodes[1]).remove()
                clearInterval(dazi)
                daziji(++i)
            }
        }, 400)
    }
复制代码

调用毒鸡汤接口来获取句子,然后在页面展示出来,代码如下:

    // 通过天行接口调用毒鸡汤
    function getSoup() {
        $.ajax({
            type: "get",
            url:
            // 毒鸡汤
            "https://api.tianapi.com/txapi/dujitang/index?key=你的key值",
            success: function(success) {
                if (success.code == 200) {
                    text = success.newslist[0].content
                    var reg = /[,;|,;|;;|;;|:;|:;|。;|.;|?;|?;| ;]/g // 正则部分只判断了这些标点符号的情况
                    arr = text.split(reg)
                    for (var j = 0; j < arr.length; j++) {
                        let pp = "<p><span></span><span></span></p>"
                        $(".signature").append(pp)
                    }
                    daziji(i)
                }
            },
            error: function(error) {
                console.error("获取数据错误" + error)
                text = `黑夜给了我黑色的眼睛 ,我却用它寻找光明`
                var reg = /[,;|,;|;;|;;|:;|:;|。;|.;|?;|?;| ;]/g
                arr = text.split(reg)
                for (var j = 0; j < arr.length; j++) {
                    let pp = "<p><span></span><span></span></p>"
                    $(".signature").append(pp)
                }
                daziji(i)
            }
        })
    }
复制代码

看一下效果吧:

GIF 2021-6-12 23-45-44.gif

完美运行!毕竟是自己亲手写的代码,尤其是端午节的假期,依旧孜孜不倦敲代码,所以看起来特别有成就感!

后记

毕竟是假期的第一天,玩了一天,晚上回来实现了这个效果立马整理了文章发出来,多多少少会考虑不周,代码有些粗糙和可优化的地方,当然啦,最重要的还是好玩。如果本文有帮助到你,希望点赞关注大冰块一下,如果有更好的意见也欢迎评论探讨~

PS: 今天是我参加掘金更文挑战的第12天,端午节依旧努力淦文章,已经坚持12天啦!有志者,事竟成。大家一起加油~

更文挑战的文章目录如下:

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享