new
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
// 代码块功能依赖
|
||||
|
||||
$(function () {
|
||||
$('pre').wrap('<div class="code-area" style="position: relative"></div>');
|
||||
});
|
||||
@@ -0,0 +1,57 @@
|
||||
// 代码块一键复制
|
||||
|
||||
$(function () {
|
||||
var $copyIcon = $('<i class="fas fa-copy code_copy" title="复制代码" aria-hidden="true"></i>')
|
||||
var $notice = $('<div class="codecopy_notice"></div>')
|
||||
$('.code-area').prepend($copyIcon)
|
||||
$('.code-area').prepend($notice)
|
||||
// “复制成功”字出现
|
||||
function copy(text, ctx) {
|
||||
if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
|
||||
try {
|
||||
document.execCommand('copy') // Security exception may be thrown by some browsers.
|
||||
$(ctx).prev('.codecopy_notice')
|
||||
.text("复制成功")
|
||||
.animate({
|
||||
opacity: 1,
|
||||
top: 30
|
||||
}, 450, function () {
|
||||
setTimeout(function () {
|
||||
$(ctx).prev('.codecopy_notice').animate({
|
||||
opacity: 0,
|
||||
top: 0
|
||||
}, 650)
|
||||
}, 400)
|
||||
})
|
||||
} catch (ex) {
|
||||
$(ctx).prev('.codecopy_notice')
|
||||
.text("复制失败")
|
||||
.animate({
|
||||
opacity: 1,
|
||||
top: 30
|
||||
}, 650, function () {
|
||||
setTimeout(function () {
|
||||
$(ctx).prev('.codecopy_notice').animate({
|
||||
opacity: 0,
|
||||
top: 0
|
||||
}, 650)
|
||||
}, 400)
|
||||
})
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
$(ctx).prev('.codecopy_notice').text("浏览器不支持复制")
|
||||
}
|
||||
}
|
||||
// 复制
|
||||
$('.code-area .fa-copy').on('click', function () {
|
||||
var selection = window.getSelection()
|
||||
var range = document.createRange()
|
||||
range.selectNodeContents($(this).siblings('pre').find('code')[0])
|
||||
selection.removeAllRanges()
|
||||
selection.addRange(range)
|
||||
var text = selection.toString()
|
||||
copy(text, this)
|
||||
selection.removeAllRanges()
|
||||
})
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
// 代码块语言识别
|
||||
|
||||
$(function () {
|
||||
var $highlight_lang = $('<div class="code_lang" title="代码语言"></div>');
|
||||
|
||||
$('pre').before($highlight_lang);
|
||||
$('pre').each(function () {
|
||||
var code_language = $(this).attr('class');
|
||||
|
||||
if (!code_language) {
|
||||
return true;
|
||||
};
|
||||
var lang_name = code_language.replace("line-numbers", "").trim().replace("language-", "").trim();
|
||||
|
||||
// 首字母大写
|
||||
// lang_name = lang_name.slice(0, 1).toUpperCase() + lang_name.slice(1);
|
||||
|
||||
$(this).siblings(".code_lang").text(lang_name);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,16 @@
|
||||
// 代码块收缩
|
||||
|
||||
$(function () {
|
||||
var $code_expand = $('<i class="fas fa-angle-up code-expand" aria-hidden="true"></i>');
|
||||
|
||||
$('.code-area').prepend($code_expand);
|
||||
$('.code-expand').on('click', function () {
|
||||
if ($(this).parent().hasClass('code-closed')) {
|
||||
$(this).siblings('pre').find('code').show();
|
||||
$(this).parent().removeClass('code-closed');
|
||||
} else {
|
||||
$(this).siblings('pre').find('code').hide();
|
||||
$(this).parent().addClass('code-closed');
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user