我正在开发一个在Chrome浏览器中按预期工作但在Internet Explorer中打开它的网站,看到导航菜单不合适。
调查问题,看到并非所有列表项都包含在主ul和2列表项中,没有正确的类。
有问题的人:
正确的一个:
我的项目是使用ASP.NET MVC 4和Umbraco CMS制作的。菜单View看起来像这样:
<ul class="nav">
<li class="@(CurrentPage.Url == "/" ? "current_page_item" : null)"><a class="Lvl1 home" href="/">Home</a></li>
@foreach (var item in menuItems)
{
<li class="@(CurrentPage.Id == item.Id ? "current_page_item" : null) Col1">
<a class="lvl1 parent" href="@item.Url">@item.Name</a>
@{ var subMenuItems = item.Children.Where("Visible"); }
@if (subMenuItems.Count() > 0)
{
<ul>
<li>
@foreach (var sub in subMenuItems)
{
if (sub.HasValue("menuItemImage"))
{
<div class="NavItemHolder">
<div class="NavItemImage">
<a href="@sub.Url"><img src="@Umbraco.Field(sub, "menuItemImage", recursive: true)"></a>
</div>
<div class="NavItemDesc">
<a href="@sub.Url">
<span>@sub.Name</span><br>
<span>@sub.menuItemInfo</span>
</a>
</div>
</div>
}
else
{<li><a class="parent" href="@sub.Url">@sub.Name</a></li>}
}
</li>
</ul>
}
</li>
}
</ul>
这在Chrome中运行良好,似乎无法找到IE的问题。
答案 0 :(得分:2)
每个子菜单都应该有一个新的列表项,而不是将所有子菜单包装在一个列表项中(或嵌套列表项,而不将它们分隔成带有ul
包装器的正确嵌套列表)。
<ul class="nav">
<li class="@(CurrentPage.Url == "/" ? "current_page_item" : null)"><a class="Lvl1 home" href="/">Home</a></li>
@foreach (var item in menuItems)
{
<li class="@(CurrentPage.Id == item.Id ? "current_page_item" : null) Col1">
<a class="lvl1 parent" href="@item.Url">@item.Name</a>
@{ var subMenuItems = item.Children.Where("Visible"); }
@if (subMenuItems.Count() > 0)
{
<ul>
@foreach (var sub in subMenuItems)
{
<li>
if (sub.HasValue("menuItemImage"))
{
<div class="NavItemHolder">
<div class="NavItemImage">
<a href="@sub.Url"><img src="@Umbraco.Field(sub, "menuItemImage", recursive: true)"></a>
</div>
<div class="NavItemDesc">
<a href="@sub.Url">
<span>@sub.Name</span><br>
<span>@sub.menuItemInfo</span>
</a>
</div>
</div>
}
else
{<a class="parent" href="@sub.Url">@sub.Name</a>}
</li>
}
</ul>
}
</li>
}
</ul>