标签:cto 合并 player 用户 eth 使用步骤 灵活 esc root
index.js
index.js是入口文件,它将用户配置和默认配置合并然后将它放到window对象下,根据用户所选主题加载主题入口文件theme.js
theme.js
使用window对象下的用户配置对象,构建主题
theme.css
主题样式文件
所有主题都放在 theme 文件夹下,至少包含一个 js 文件和 一个 css 文件, 下面以已存在的主题 acg 为例
const userMassage = {
// 储存用户基本信息
// 通过DOM获取
};
const urls = {
// 储存该主题依赖的文件(js css)名称 按需加载
// 仓库地址 ...
// 为了访问更快这个主题的依赖都放在了 gitee
};
const icons = {
// 储存iconfont图标名称
// symbol引用
};
const headerElements = {
// 储存博客header DOM元素
// 因为我需要给他们批量添加事件 包含移动端和 pc 端的事件
};
class ACG{
constructor() {
this.defaultOptions = window.userOptions; // 拿到window下的用户配置
this.v = 'v1.0.0'; // version
}
// ------- 初始化 ----
init() {
// 调用loadFiles加载必须依赖如iconfont文件
// 根据客户端和当前页面名称调用对应方法构建页面
}
// ---------- tools --------
get pageName() {
// 储存函数 返回当前页面名称
// 包含主页 随笔页 标签页 ...
// 在 init 函数中判断,当进入这些页面时执行对应的方法
}
get userAgent() {
// 储存函数 返回当前用户的客户端
// 包含 PC 手机 ...
// 在 init 函数中判断并执行对应的方法
}
loadFiles() {
// 加载依赖文件
}
iconInSvg(icon) {
// 根据传入的 icons.xxx 返回对应的 <svg>
}
// Other instrumental functions.
// ------构建博客的函数-------
setHeader() {
// do something for setting header.
}
// Other functions that build blog.
}
// 实例化类并调用初始化方法
new ACG().init();
使用css自定义属性即可很方便做到,js 根据用户配置的颜色值插入样式
:root {
--themeColor: color ;
/* Other custom properties */
}
/* 其他 css 通过 var(--themeColor) 来使用它 */
symbol
引用支持多色图标,可通过 css 代码代码改变样式,较灵活,缺点是仅支持 ie9+
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-xxx"></use>
</svg>
iframe
acg
或 light
请将博客默认皮肤设为 Buildtowin
<script src="https://guangzan.gitee.io/awescnb-files/js/flexible.min.js"></script>
<script src="https://github923665892.github.io/awesCnb-G/index.js"></script>
<script>$.awesCnb({
// 主题
theme: {
name: 'acg', // 'acg' (默认) | 'light' | 待添加
color: '#FFB3CC' // #FFB3CC (默认) | random
},
// 代码高亮
highLight: {
type: 'atomOneDark' // 'atomOneDark' (默认) | 'atomOneLight' | 'github'
},
// 代码行号
lineNumbers: {
enable: true // true (默认) | false
},
// 文章目录
catalog: {
enable: true // true (默认) | false
},
// 音乐播放器
musicPlayer: {
enable: true, // true (默认) | false
type: 'APlayer' // 'APlayer' (默认) | 'iframe'
},
// 底部友情链接
links: [
{
name: 'theme awesCnb',
link: 'https://github.com/github923665892/awesCnb-G'
}
]
});
</script>
<section id='loading'>
<div class="sk-fold">
<div class="sk-fold-cube"></div>
<div class="sk-fold-cube"></div>
<div class="sk-fold-cube"></div>
<div class="sk-fold-cube"></div>
</div>
</section>
theme
文件夹下新建主题文件夹如 demo
demo.js
demo.css
, 注意js文件名称与文件夹名称一致本来想让入口文件index.js也加载对应主题的css文件,这样修改代码和使用主题就方便很多,渲染过程用loading覆盖,但是发现那样放在页首的html并不是最先显示的或者其他原因,每次进博客的时候会闪一下,如果有大佬能告诉我,万分感谢!
标签:cto 合并 player 用户 eth 使用步骤 灵活 esc root
原文地址:https://www.cnblogs.com/guangzan/p/11996970.html