【发布时间】:2010-09-21 04:28:10
【问题描述】:
我正在为一些朋友设计一个自定义的 wordpress 模板,并且想要一个水平对齐的顶部菜单。一切都会好的,除了 wp_page_menu 将列表元素全部输出在一行中,这(在很多!头抓挠之后)似乎破坏了格式并删除了元素之间的所有空间。例如,以下输出 1、2 和 3 间隔开,然后 456 全部放在一起。 (在 Safari、Firefox 和 Chrome 中测试,都在 mac 上。)
<style>
.menu {
text-align: justify;
width: 700px;
margin: 10px;
}
.menu * {
display: inline;
}
.menu span {
display: inline-block;
position: relative;
width: 100%;
height: 0;
}
</style>
<div class="menu">
<ul>
<li><a href="http://localhost/">1</a></li>
<li><a href="http://localhost/">2</a></li>
<li><a href="http://localhost/">3</a></li>
<li><a href="http://localhost/">4</a></li><li><a href="http://localhost/">5</a></li><li><a href="http://localhost/">6</a></li>
</ul>
<span></span>
</div>
我已经有一个自定义函数编辑 wp_page_menu 的输出以在 ul 之后添加跨度,所以我想最简单的做法是扩展该函数以放入换行符,但如果有人有其他想法,或者可以告诉我为什么会发生这种情况(尤其是那个!)那太好了。
编辑:
现在通过添加一个在 html 中插入空格的函数来修复它(如果有人现在感兴趣或者将来有人遇到这个问题,请使用下面的代码)。似乎这就是所有必要的!如果有人能告诉我为什么需要这样做,我仍然很想知道。
// Add a space after the </li> in wp_page_menu to allow justification of the menu
function add_break($break) {
return preg_replace('/<\/li>/', '</li> ', $break, -1);
}
add_filter('wp_page_menu','add_break');
【问题讨论】: