效果图

思路:我们只需要让他绝对定位,然后让他距离左边50%,然后再往左移动自身的50%即可实现。

主菜单居中

在[Blogroot]\source\css\custom.css里引入以下代码

1
2
3
4
5
6
#nav .menus_items {
position: absolute;
width: fit-content;
left: 50%;
transform: translateX(-50%);
}

注意,这里我们使用fit-content使menus_items的宽度为内容宽度,这样可以避免一些奇奇怪怪的BUG,如下图。

子菜单横向居中

假如需要,设置以下内容,参考Akilar大佬教程

1, 在[Blogroot]\source\css\custom.css里引入以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
/* 横向排布子菜单 */
#nav .menus_items .menus_item .menus_item_child li {
display: inline-block;
}
/* 圆角隐藏 */
ul.menus_item_child {
overflow: hidden;
border-radius: 5px;
}
/* 调整空隙,确保不会天下武功唯快不破 */
#nav .menus_items .menus_item .menus_item_child {
margin-top: 0px !important;
}

2, 打开[Blogroot]\themes\butterfly\layout\includes\header\menu_item.pug,修改内容。参数记得自己计算。

1
2
- ul.menus_item_child
+ ul.menus_item_child(style=`left:`+ (-40 * Object.keys(value).length + 65) + `px;`)
参考教程