首页 > 其他分享 >博客园主题修改分享 - 脚本篇

博客园主题修改分享 - 脚本篇

时间:2022-12-07 20:11:07浏览次数:64  
标签:脚本 0px const copyright copyrightWeizwz 博客园 line 分享 copyText

如题,本期主要是通过脚本来实现博客园的各自自定义效果

说明

脚本运行需要开通博客园的JS权限,不懂的可以去看上篇文章 博客园主题修改分享 里的 增加鼠标动效
脚本内容有一定限制,譬如禁止 window.open 之类的,也是为了防范不安全的诱导,希望各位博主们只是为了博客界面的美化或者实现一些小插件;
脚本运行也要防范外来攻击,请保证你的脚本尽可能的安全。

实践

参考上篇文章,脚本的入口统一可以放在页脚HTML代码里,通过增加 script 标签,在标签内写入JS脚本。
image

1. 点击博客封面进入当前博客界面

起因是,首页的博文入口只有两个,博客标题阅读全文,感觉很不方便。反而博文右侧的封面比较引人注目,但是又不能点击,很烦,直接给它安排。
主要思路:获取封面图片,增加点击事件,点击图片的时候触发 阅读全文 的点击事件,本来想用 window.open 的,结果发现好像不让。
代码如下:

<!-- 点击封面进入文章 -->
<script>
const goPost = function() {
    const $covers = document.querySelectorAll('.desc_img');
    if ($covers.length <= 0) retrun;
    $covers.forEach(function (item) {
        const $childNodes = item.parentNode.childNodes;
        const $coverA = $childNodes.item(3);
        item.onclick = function() {
            $coverA.click();
        }
    });
}
window.addEventListener('load', goPost, false);
</script>

封面样式稍微加了美化效果,在 页面定制CSS代码 里增加如下代码:

/* 封面图片 */
.desc_img {
    margin: 5px;
    cursor: pointer;
    border-radius: 8px;
    border: solid 1px #ffffff;
    box-shadow: 0px 0px 4px 0px rgb(7, 17, 27, 0.1);
}
.desc_img:hover {
    box-shadow: 0px 0px 4px 0px rgb(7, 17, 27, 0.3);
}

2. 美化博文的版权信息/转载链接

由于使用的 markdown 编辑器,不能增加标签,所以让自定义样式生效比较难。
image
刚开始是准备使用代码编辑器,勉强可以凑合,如下图
image
后来越看越难受,链接也不能点,果断不能忍,弄它。
思路:不修改上图博文内容,获取代码编辑器转换后的界面元素,拿到之后获取其中的内容,重新编译。
代码如下:

<!-- 版权解析 -->
<script>
const copyCompile = function() {
    const name = '唯之为之';
    const host = 'https://weizwz.com/';
    const copyNode = document.querySelector('.language-copyright');
    if (!copyNode) return;
    const lines = copyNode.innerText.split('\n');
    let copyText = '';
    for (let item of lines) {
        if(item.trim() !== '') {
            const line = item.split(": ");
            if (line.length > 1) {
                copyText += '<div><span class="post-copyright-meta">'+ line[0] +': </span><span class="post-copyright-info">';
                if (line[1] === name) {
                    copyText += '<a href="'+ host +'" target="_blank">'+ name +'</a>';
                } else if (line[1].indexOf('http') === 0) {
                    copyText += '<a href="'+ line[1] +'" target="_blank">'+ line[1] +'</a>';
                } else {
                    copyText += line[1];
                }
                copyText += '</span></div>'
            } else {
                copyText += '<div>'+ line[0] +'</div>';
            }
        }
    }
    let copyNodeNew = document.createElement('div');
    copyNodeNew.id = 'copyrightWeizwz';
    copyNodeNew.innerHTML = copyText;
    const parentDiv = copyNode.parentNode.parentNode;
    parentDiv.removeChild(copyNode.parentNode);
    parentDiv.appendChild(copyNodeNew);
}
window.addEventListener('load', copyCompile, false);
</script>

界面样式是参考我 个人博客 版权的样式,需要在 页面定制CSS代码 里增加如下代码:

/*版权页*/
.language-copyright {
    display: none !important;
}
#copyrightWeizwz {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Lato, Roboto, 'PingFang SC', 'Microsoft YaHei', sans-serif;
    position: relative;
    margin: 30px 0 10px !important;
    padding: 10px 16px !important;
    border: 1px solid #f6fcff;
    border-radius: 4px;
    background: #f6fcff;
    color: #4c4948;
}
#copyrightWeizwz:hover {
    box-shadow: 0 0 8px 0 rgb(232, 237, 250, .6), 0 2px 4px 0 rgb(232, 237, 250, .6)
}
#copyrightWeizwz::before {
    position: absolute;
    top: 10px;
    right: 10px;
    background: #49b1f5;
    content: '';
    display: inline-block;
    width: 20px;
    height: 20px;
    border-radius: 50%;
}
#copyrightWeizwz::after {
    position: absolute;
    top: 8px;
    right: 17px;
    color: #fff;
    content: 'C';
    font-size: 13px;
    font-weight: bold;
}
#copyrightWeizwz .post-copyright-meta {
    color: #49b1f5;
    font-weight: bold;
}
#copyrightWeizwz .post-copyright-info {
    padding-left: 6px;
}
#copyrightWeizwz .post-copyright-info > a {
    color: #99a9bf;
    text-decoration: underline;
}
#copyrightWeizwz .post-copyright-info > a:hover {
    color: #45bcf9;
    text-decoration: none;
}

标签:脚本,0px,const,copyright,copyrightWeizwz,博客园,line,分享,copyText
From: https://www.cnblogs.com/weizwz/p/16964403.html

相关文章

  • 七天自学通过软考系统架构师经历分享
    前言软考复习的方式可以分为两种:报班和自学。当然也有加QQ要求共同分摊网课费用的,当然被我义正言辞地无情拒绝。原因很简单:没钱。于是前前后后自学了七天,最终考过了系统架......
  • linux 命令行脚本修改文件
    添加单行使用重定向操作符 >> 或 >  echo"helloworld">test.txt#重写echo"helloworld">>test.txt#追加或者使用teeecho"helloworld"|......
  • Linux常用镜像源替换脚本
     https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/执行如下命令自动替换sudosed-i"s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g"......
  • web技术分享| 图片上传与图片裁剪结合 vue3
    需求:上传的图片限制长宽相同;只能上传图片;图片大小限制500k当前项目仅需要上传的图片信息项目组件使用裁剪:vue-cropperimport"vue-cropper/dist/index.c......
  • 评估篇 | 单元测试评估也能复用到集成测试?脚本帮你高效评估!
    前言  上次我们分享了单元测试用例的复用,单元测试的用例可以复用到集成测试,那单元测试的评估是否也可以复用到集成测试?答案是可以的。 TPT中提供了多种多样的评估......
  • 脚本文件阅读学习及流数据处理复盘
    1.#!/bin/bash作为第一行代码,将指定shell脚本解释器的路径,并会给注释加粗的显示。乱写或不写虽然报错但也可以执行,解释器会选择默认路径进行解释执行。2.机芯给的原始......
  • 分享一个你很可能不知道的Java异常实现的缺陷
    前言Java中一个大家熟知的知识点就是异常捕获,try...catch...finally组合,但是很多人不知道这里面有一个关于Java的缺陷,或者说是异常实现的一点不足之处。我这边就通过一......
  • SPRD平台功耗调试分享
    一、关于底电流偏大的问题,这里总结一下一般的调试步骤1.如果底电流大于10ma以上的,首先需要抓串口log确定系统是否有睡眠,是否有外设一直在运行;从log中可以看有没有发生suspen......
  • Docker 启动前后端脚本
    后端docker提前运行consul,mongo,redis进入到Jar所在的文件夹(文件夹下只有一个Jar!)新建start.shCMDjar_name=$(ls-1-F*.jar)&&\java-Xms450m-Xmx450m......
  • typora上传博客到博客园及所遇问题解决方法
    一.配置dotnet1.下载dotnet首先要到官网下载dotnet,这里根据本人多次下载尝试以及上网查询,推荐下载5.0版本的下载地址根据自己电脑配置下载,注意下载左边的,不需要下载右......