背景

更新博客园个人博客时,突发奇想想要将子标题的入场特效做成类似Linux命令行输命令时的样式

效果网页:LanceEst - 博客园 (cnblogs.com)

思路和代码

1 <h2 id="para">Hi, I'm Lance, and welcome to my workstation :)</h2>
#para {
width: 100%;
text-align: center;
/* 由于js是最后读取并执行的,所以为了视觉体验,先将句子藏起来 */
visibility: hidden;
}
let para = document.getElementById("para"),
str = para.textContent;
let i = 0, timer = 0; function typing() {
if (i <= str.length) {
para.innerHTML = str.slice(0,i++) + "__";
// i++ ==> i = i;i = i + 1 加法运算是在后进行的
// 所以为了能够流畅运行,需要让 i <= str.length
// 当然,也可以 i < str.length,然后把 i++ 改成 ++i,运行效果也是一样的
timer = setTimeout(typing,150);
} else {
clearTimeout(timer);
// _闪烁效果
setInterval(function() {
if (para.innerHTML.search("__") != -1) {
// 包含"__"
para.innerHTML = str + "&nbsp;&nbsp;&nbsp;";
// 注意:可以根据实际情况更改_的个数和空格的个数,在使用浏览器默认字体时,空格所占空间和_的比例为 1.5 : 1
// 因此,我这里用了2个_和3个空格
} else{
// 不包含"__"
para.innerHTML = str + "__";
}
},500);
}
} window.onload = function() {
para.style.visibility = "visible";
typing();
}

注意:这里只显示了一些必要的代码,实际操作可以按照需求更改

最新文章

  1. 在iOS中实现一个简单的画板App
  2. python中协程
  3. web前端
  4. 数据结构与算法分析-AVL树
  5. c++ string 结束符‘\000’
  6. 时间戳转换成Date
  7. 每日一九度之题目1016:火星A+B
  8. Python常用模块的安装方法
  9. poj 3026 Borg Maze (BFS + Prim)
  10. Add controls dynamically in flowlayoutpanel
  11. Linux编程---I/O部分
  12. (译)Windsor入门教程---第五部分 添加日志功能
  13. 怼天怼地怼空气的Linus喜欢怎样的工作方式?
  14. Linux IO性能分析blktrace/blk跟踪器
  15. 多对多关联模型,MANY_TOMANY
  16. spring用注解配置,不用XML
  17. 转: jquery中ajax回调函数使用this
  18. centos7 Python3终端中敲击方向键显示「^[[C^[[D」
  19. App 开发步骤
  20. 改变vux样式

热门文章

  1. PostgreSQL函数如何返回数据集
  2. oculus 安装其他盘方法
  3. centos7 部署 loonflow
  4. WGCMS 奇迹网站系统 介绍[V2023.2.2]
  5. mybatis:自定义映射关系resultMap
  6. 实验五Elasticsearch+Kibana展示爬虫数据
  7. 以图搜图(demo创建流程)
  8. mysql存储过程游标中途自动退出
  9. php的几种接值方式
  10. (app笔记)Appium如何开启、配置、启用