查看目录
网站的文章目录可以让用户更好的理解内容的重点和结构,对于用户体验很有好处,目前wwordpress实现文章目录的方法有很多,可以用插件生成目录,也可以用代码创建文章目录,今天分享的就是纯代码为wordpress添加文章浮动目录的方法。
一、为wordpress悬浮目录添加JS文件
在主题文件夹中创建一个新的JavaScript文件,例如“floating-menu.js”。
jQuery(document).ready(function($) {
// 创建目录
var toc = '';
var level = 0;
var maxLevel = 3;
$('#content').find('h1, h2, h3, h4, h5, h6').each(function() {
// 获取标题级别
level = parseInt(this.tagName.substring(1));
// 如果标题级别小于最大级别,则添加到目录中
if (level <= maxLevel) {
// 添加锚点
$(this).attr('id', 'heading-' + level + '-' + $(this).index());
// 添加目录项
toc += '<li class="toc-level-' + level + '"><a href="#heading-'%20+%20level%20+%20'-'%20+%20$(this).index()%20+%20'">' + $(this).text() + '</a></li>';
}
});
// 如果目录不为空,则创建悬浮目录
if (toc !== '') {
var tocHtml = '<ul class="toc">' + toc + '</ul>';
$('body').append('<div id="floating-menu">' + tocHtml + '</div>');
// 设置目录项的样式
$('#floating-menu .toc li').each(function() {
$(this).css('margin-left', (parseInt($(this).attr('class').substring(10)) - 1) * 20 + 'px');
});
// 监听窗口滚动事件
$(window).scroll(function() {
// 如果滚动距离大于目录位置,则显示悬浮目录
if ($(window).scrollTop() > $('#floating-menu').offset().top) {
$('#floating-menu').addClass('floating');
} else {
$('#floating-menu').removeClass('floating');
}
// 更新当前目录项的样式
$('#floating-menu .toc li').removeClass('current');
$('#content').find('h1, h2, h3, h4, h5, h6').each(function() {
// 获取标题级别
level = parseInt(this.tagName.substring(1));
// 如果标题级别小于最大级别,则更新当前目录项的样式
if (level <= maxLevel && $(window).scrollTop() >= $(this).offset().top - 20) {
$('#floating-menu .toc li').removeClass('current');
$('#floating-menu .toc li:nth-child(' + ($(this).index() + 1) + ')').addClass('current');
}
});
});
}
});
二、functions.php中调用JS文件
在wordpress主题的“functions.php”文件中添加以下代码,将JavaScript文件添加到主题中:
function b2_enqueue_scripts() {
wp_enqueue_script('floating-menu', get_template_directory_uri() . '/floating-menu.js', array('jquery'), '1.0', true);
}
add_action('wp_enqueue_scripts', 'b2_enqueue_scripts');
三、为文章浮动目录添加CSS样式:
在主题的“style.css”文件中添加以下代码,定义wordpress悬浮目录的样式:
#floating-menu {
position: fixed;
top: 50%;
left: 20px;
transform: translateY(-50%);
z-index: 9999;
}
#floating-menu.floating {
top: 20px;
}
#floating-menu .toc {
list-style: none;
margin: 0;
padding: 0;
}
#floating-menu .toc li {
margin-bottom: 5px;
transition: all 0.2s ease;
}
#floating-menu .toc li.current {
font-weight: bold;
}
保存文件并刷新网站,您应该可以看到一个文章悬浮目录出现在页面的左侧。当您滚动页面时,目录将保持固定位置并更新当前目录项的样式。
原文https://sjcnh.cn/1355.html
偶然看到这个方法,是原作者创建用于B2主题的,其他主题应该应该也可以用,只是要自己稍微修改一个路径,暂时没有时间实验,先收藏了,以后测试一下。
楚狂人




