对话框外挂标签
转载自:对话框外挂标签
对话框 msgbox
1 | {% msgbox title %} |
- title: 聊天窗标题
- name:对话框姓名,访客方块默认为”noname”,博主方块默认为读取hexo站点配置文件中的author作为博主名称。
- avatar:对话框头像,访客方块默认读取butterfly主题配置文件中的error_img.flink作为图片链接。博主方块默认读取butterfly主题配置文件中的avatar.img作为图片链接
案例并非真实
神奇的妙妙屋🧸
xl
markdown还有比typora更好用的吗?
神奇
vscode党加一

Fomalhaut🥝|fomal.cc
markdown我用typora
青葱|ciraosindex.top
我顶Atom
冰卡诺|zfe.one
我用石墨
冰卡诺|zfe.one

神奇
我就知道会有这个
陈殇|blog.chen-shang.top
冰老师用铅笔?
青葱|ciraosindex.top
大佬,就是不一样
xl
大佬,就是不一样
1 | {% msgbox "神奇的妙妙屋🧸" %} |
魔改步骤
新建
[Blogroot]\themes\butterfly\scripts\tag\msgbox.js1
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/**
{% msgbox title %}
{% msgguest name,avatar %}
对话内容
{% endmsgguest %}
{% msgadmin name,avatar %}
对话内容
{% endmsgadmin %}
{% endmsgbox %}
*/
const urlFor = require('hexo-util').url_for.bind(hexo)
function msgbox (args, content) {
return `<div class="msgbox"><div class="mag-box-title">${args}</div><div class="msgbox-chat-content">${hexo.render.renderSync({ text: content, engine: 'markdown' }).split('\n').join('')}</div>
<div class="mag-box-input-main"><i class="fa-solid fa-microphone"></i><input class="mag-box-input" type="text" name="fname" /><i class="fa-solid fa-face-smile"></i><i class="fa-solid fa-circle-plus"></i></div></div>`
}
function msgguest (args, content) {
args = args.join(' ').split(',')
let guestname = args[0]?args[0].trim():'noname' //默认无名
let guestavatar = args[1]?args[1].trim():hexo.theme.config.error_img.flink //默认友链错误头像
return `<div class="msgguest msg-main"><div class="msg-avatar-box"><img class="msg-avatar no-lightbox" title="${guestname}" src="${guestavatar}"/></div><div class="msg-content"><div class="msg-name">${guestname}</div><div class="msg-content-text">${hexo.render.renderSync({ text: content, engine: 'markdown' }).split('\n').join('')}</div></div></div>`
}
function msgadmin (args, content) {
args = args.join(' ').split(',')
let adminname = args[0]?args[0].trim():hexo.config.author //默认作者
let adminavatar = args[1]?args[1].trim():hexo.theme.config.avatar.img //默认作者头像
return `<div class="msgadmin msg-main"><div class="msg-avatar-box"><img class="msg-avatar no-lightbox" title="${adminname}" src="${adminavatar}"/></div><div class="msg-content"><div class="msg-name">${adminname}</div><div class="msg-content-text">${hexo.render.renderSync({ text: content, engine: 'markdown' }).split('\n').join('')}</div></div></div>`
}
hexo.extend.tag.register('msgbox', msgbox, { ends: true })
hexo.extend.tag.register('msgguest', msgguest, { ends: true })
hexo.extend.tag.register('msgadmin', msgadmin, { ends: true })新建文件
[Blogroot]\themes\butterfly\source\css\_tags\msgbox.styl1
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148//default color:
:root
--msgbox-border-color: #888888
--msgbox-border-background: #ffffff
--msgbox-chat-background: rgba(255,255,255,0.7)
--msgbox-name-color: #888888
--guest-font-color: #000000
--guest-background-color: #cbcbcb
--admin-font-color: #ffffff
--admin-background-color: #12b7f5
[data-theme="dark"]
--msgbox-border-color: #ffffff
--msgbox-border-background: #000000
--msgbox-chat-background: rgba(22,22,22,0.5)
--msgbox-name-color: #888888
--guest-font-color: #e3e8e9
--guest-background-color: #303646
--admin-font-color: #ffffff
--admin-background-color: darken(#12b7f5,0.8)
.msgbox
display: flex
flex-direction: column
border-radius: 10px;
overflow: hidden;
position: relative
flex-wrap: nowrap
width: 100%
height: auto
.mag-box-title
color: var(--msgbox-border-color)
width: 100%;
height: 50px;
background: var(--msgbox-border-background)
display: flex;
align-items: center;
justify-content: center;
.mag-box-input-main
width: 100%;
height: 50px;
color: var(--msgbox-border-color)
background: var(--msgbox-border-background);
display: flex;
align-items: center;
flex-direction: row;
input.mag-box-input
border-radius: 15px;
height: 30px;
width: calc(100% - 90px);
padding: 0px 20px;
&:focus-visible
outline: none
i.fa-solid
width: 30px;
display: flex;
align-items: center;
justify-content: center;
.msgbox-chat-content
padding: 20px 20px
box-shadow: 0px 0px 0.5px var(--msgbox-border-color) inset
max-height: 50vh
overflow-y: scroll
background: var(--msgbox-chat-background)
&::-webkit-scrollbar
width: 0
.msg-main
width: 100%
height: auto
display: flex
flex-direction: row
flex-wrap: nowrap
margin: 0 0 25px 0
.msg-avatar-box
width: 30px
min-width: 30px
img.msg-avatar
border-radius: 50%
width: 30px
height: 30px
position: relative
.img-alt
display: none
.msg-content
width: 90%
display: flex
flex-direction: column
flex-wrap: nowrap
.msg-name
font-size: 12px
color: var(--msgbox-name-color)
line-height: 1em
height: 1.5em
.msg-content-text
border-radius: 8px
width: auto
max-width: calc(100% - 30px)
padding: 5px 5px 0px 20px
clip-path: polygon(0 15px,10px 16px,10px 5px,15px 0,100% 0,100% 100%,15px 100%,10px calc(100% - 5px),10px 25px)
&>p
margin: 0 0 0
img
border-radius: 6px
&.msgguest
.msg-avatar-box
img.msg-avatar
top: 0
right: 0
.msg-content
align-items: flex-start
.msg-name
margin-left: 15px
.msg-content-text
background: var(--guest-background-color)
color: var(--guest-font-color)
&.msgadmin
flex-direction: row-reverse
.msg-avatar-box
img.msg-avatar
top: 0
left: 0
.msg-content
align-items: flex-end
.msg-name
margin-right: 15px
.msg-content-text
background: var(--admin-background-color)
color: var(--admin-font-color)
padding: 5px 20px 0px 5px
clip-path: polygon(100% 15px,calc(100% - 10px) 16px,calc(100% - 10px) 5px,calc(100% - 15px) 0,0 0,0 100%,calc(100% - 15px) 100%,calc(100% - 10px) calc(100% - 5px),calc(100% - 10px) 25px)
max-width: calc(100% - 30px)
@media screen and (max-width:496px)
.msgbox
.msgbox-chat-content
.msg-main
&.msgadmin
flex-direction: row
.msg-avatar-box
img.msg-avatar
top: 0
right: 0
.msg-content
align-items: flex-start
.msg-name
margin-left: 15px
.msg-content-text
padding: 5px 5px 0px 20px
clip-path: polygon(0 15px,10px 16px,10px 5px,15px 0,100% 0,100% 100%,15px 100%,10px calc(100% - 5px),10px 25px)
max-width: calc(100% - 30px)
评论






