导航菜单 - 渲染分割管道字符

时间:2009-02-20 01:45:44

标签: asp.net html algorithm user-interface

我有一个web控件,顶部显示了一些链接,例如:

Link 1 | Link 2 | Link 3

目前他们都是asp:Hyperlink。 Is there a clever solution for rendering out the dividing pipe characters?

目前,它们位于包含占位符内。我们不能对始终出现的给定链接做出任何保证。我不想要一个非常大的if语句,而且我不愿意在代码隐藏中完全呈现所有链接...

[更新]

感谢您指出CSS是要走的路。这肯定会让事情变得更容易。当然,我们确实需要一个跨浏览器的解决方案。

HTML列表(< ul> & < li> )结构可以作为第一个孩子 / last-child 属性负责列表的结尾。 注意:这些是自动的 - 您不必在标记中分配它们。

因为我们只需要管道符号,所以我使用了border属性。如果您愿意,可以使用 margin-left + 背景图像CSS属性来替换图像间隔符。

我们的解决方案:

HTML:

<ul class="navMenu">
    <li><a href="...">Link 1</a></li>
    <li><a href="...">Link 2</a></li>
    <li><a href="...">Link 2</a></li>
</ul>

CSS:

ul.navMenu li
{
    display: inline;
    margin-left: 0;
}

ul.navMenu a
{
    border-left: solid 1px #333333;
    padding-left: 0.4em;
    padding-right: 0.4em;
}

ul.navMenu li.first-child a
{
    border-left: none 0;
    padding-left: 0;
}

2 个答案:

答案 0 :(得分:3)

不幸的是,a + a CSS解决方案并不适用于所有浏览器。

我通常会将我的列表标记为:

<ul>
    <li class="first-child"><a href="#">Link 1</a></li>
    <li><a href="#">Link 2</a></li>
    <li class="last-child"><a href="#">Link 3</a></li>
</ul>

这不仅提供了更好的JavaScript挂钩,而且您可以自定义左/右侧元素以关闭边框或根据需要调整填充。

答案 1 :(得分:0)

CSS和/或JQuery方法效果很好。有时候你真的可能只想要<a></a> | <a></a> | <a></a>

查看几个服务器端控件可能值得花些时间。根据你获得链接的位置(你说有些可能会丢失?)你可以使用一个控件,它有一个你可以放置的位置。如果链接丢失取决于谁登录和某种用户角色,也许您可​​以使用站点地图+控件,它也有。