一、
由于之前的博客的随机背景图(如果一篇文章中没有图片的话,就会把随机的背景图当作该文章的主图)采用了JPG的格式,而JPG是采用了有损压缩,导致了图片放大后失真了(当然这也是会跟图片的分辨率有关系)。
于是就更换为PNG了,主题颜色还是采用之前的8色调(主要也是怕忘记了,下次又要重新吸色了,还不如发文记录下)
#ffa800 #01cc01 #00ccff #ff5f53 #9a59b5 #99cdff #fe9acc #ff9a66
二、
由于博客的是有装了缓存插件,所以就大家看到的数据有些是不一致的,比如下面这样子:
正确的显示应该是【9个月前】于是就动手想办法了,解决方法也很简单,就是每次进入网页后,再次重新计算文章发布的时间跟当前的时间进行比对,然后格式化输出,替换掉错误的时间即可,时间格式化代码如下:
/** * 时间格式化 * @param {string} time - 传入的时间 * @return {string} 格式化的时间,如几年/月前... */ function timeFormat(time) { let curTime = new Date().getTime(); let prevTime = new Date(time).getTime(); let differentTime = Number.parseInt((curTime - prevTime) / 1000); let timeFormatObj = { '年前': 31104000, '个月前': 2592000, '周前': 604800, '天前': 86400, '小时前': 3600, '分钟前': 60, '秒': 1 } if (differentTime & lt; 1) { return '刚刚'; } for (const key in timeFormatObj) { //判断时间差值是属于那个阶段的 let judgeTime = differentTime / timeFormatObj[key]; if (judgeTime & gt; = 1) { return `${Math.round(judgeTime)}${key}`; } } }
写这段代码的时候也遇到个坑,因为本身这代码并不复杂,结果因为基础知识不扎实导致返回的结果不正确,比如使用for in循环对象的时候,如果对象的key是个数字的话,默认会进行升序排序,比如下面这段代码:
let codes = { "49": "Germany", "41": "Switzerland", "44": "Great Britain", "1": "USA" }; for(let code in codes) { alert(code); // 1, 41, 44, 49 }
这里本来是想放个官方关于for in遍历对象的链接,但是发现并没有讲这个内容,所以就不放了。
还有一个坑是php生成的时间戳是10位(这个应该不算坑把,之前写php的时候是知道,不过给忘记了。),而js生成的是13位,所以我们就需要把这俩货转成一致的位数即可计算了(即把两个时间差值计算好之后/ 1000,然后取下整,即可。)
发表于2021-01-10 at 20:21 沙发
老板是程序员出身吗?交流交流。