为博客添加立牌小组件
博客里没有看板娘的博主不是合格的二次元!
前言: 看到很多人的博客都有个live2d的看板娘, 我当然也要整个活。
Fluid
主题的官方文档里也有提到Live2D Widget
[1]的插件, 虽然但是, 对于我来说, live2d模型占的地方太大了, 且过于花哨。个人还是更喜欢偏简洁一点的界面的! 所以暂时把微博客添加看板娘的计划搁置了……
but, 最近碰巧看到了github上的一个项目sakana-widget
[2]深得我心! 致敬传奇特工锦木千束!
安装与配置
官方文档中写的相当详细了:
- 首先使用
CDN
直接引入或者通过NPM
包的形式安装, 我选择了CDN
引入的方式。 - 由于为了博客在手机浏览器上不被立牌组件影响, 为组件的加载添加了一个是否为移动端的判断, 若为移动端则取消加载组件。
- 文档中有提到挂载前可以创建角色并进行配置, 那么我们可以在挂载前先随机选择一个角色(
takina
或chisato
)并创建,配置然后挂载到id
为sakana-widget
的元素上。最后对元素样式进行修改, 将其放到网页右下角。
具体编码如下sakana.html
:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48<script>
// 检查是否为移动设备
function isMobileDevice() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
// 初始化 Sakana Widget
function initSakanaWidget() {
if (isMobileDevice()) {
// 如果是手机端,退出函数不加载 Widget
return;
}
// 获取角色
const takina = SakanaWidget.getCharacter('takina');
takina.initialState = {
...takina.initialState,
i: 0.001,
};
const chisato = SakanaWidget.getCharacter('chisato');
chisato.initialState = {
...chisato.initialState,
i: 0.001
};
// 随机选择角色
const selectedCharacter = Math.floor(Math.random() * 2) === 0 ? takina : chisato;
SakanaWidget.registerCharacter('custom', selectedCharacter);
// 使用构造函数初始化 SakanaWidget
new SakanaWidget({
character: 'custom',
controls: false
}).mount('#sakana-widget');
}
</script>
<!-- 仅在非手机端加载样式和脚本 -->
<script>
</script>
参考资料
为博客添加立牌小组件
http://example.com/2024/11/18/为博客添加立牌小组件/