Html 当前菜单页的CSS状态?
首先,我有一个无序的列表保存着我的菜单Html 当前菜单页的CSS状态?,html,css,Html,Css,首先,我有一个无序的列表保存着我的菜单 <ul id='css3menu1' class='topmenu'> <li class='topmenu'> <a href='home.html'>Home</a> </li> <li class='topmenu'> <a href='forum.php'>Forum</a> </li
<ul id='css3menu1' class='topmenu'>
<li class='topmenu'>
<a href='home.html'>Home</a>
</li>
<li class='topmenu'>
<a href='forum.php'>Forum</a>
</li>
<li class='topmenu'>
<a href='policy.html'>Policy</a>
</li>
<li class='topmenu'>
<a href='logout.php'>Log out</a>
</li>
</ul>
我想做的是,每当用户在页面上时,悬停状态变为活动状态。换句话说,根据用户所在的页面,将菜单项的背景颜色更改为较暗的颜色
实现这一点最常见的方法是向当前页面的链接添加一个类,如active。具体如何做取决于模板引擎 然后在css中添加该规则:
var url = window.location.href;
$('.topmenu a').filter(function() {
return this.href == url;
}).addClass('active');
这应该行得通。
并添加一个css类用于活动
.topmenu.active {
background-color: black;
}
编辑/更新
添加了JSFIDLE:
this.href不采用相对路径。它返回了href设置的完整路径。因此,它会将location.href与该url元素的href进行比较
这是一个非常简短而简单的解决方案:如果您对jQuery解决方案感兴趣的话
<script>
$(function() {
$('#css3menu1 li a[href="'+location.href.split('/').pop()+'"]').addClass('active');
});
</script>
*注意:将脚本放在标记的前面,当然在文档的标题部分包括jQuery库。如何根据URL将活动类添加到导航菜单中 HTML JavaScript 上面的例子来自link。有关更多信息和示例,请访问它。使用javascript:
$(function () {
var url = window.location.href.substr(window.location.href.lastIndexOf("/") + 1);
$('[href$="' + url + '"]').parents("li").addClass("current_menu_item");
});
在css中定义当前菜单项:
#menu
{
background: #292929;
}
#menu ul .current_menu_item > a /* highlight current menu, target immediate child */
{
color: Yellow;
}
#menu ul li
{
// menu list style
}
#menu ul li a
{
// menu word style
}
您的html应该如下所示:
<div id="menu">
<ul>
<li>
<a href='home.html'>Home</a>
</li>
<li class='topmenu'>
<a href='forum.php'>Forum</a>
</li>
<li class='topmenu'>
<a href='policy.html'>Policy</a>
</li>
<li class='topmenu'>
<a href='logout.php'>Log out</a>
</li>
</ul>
</div>
最后定义javascript在页面中的位置:
<script type="text/javascript" src="Scripts/common.js"></script>
是的,但是如何选择该状态以便设置其样式?因为我认为活动是针对已访问的链接。此外,我如何知道用户在哪个页面上?:active是一个伪类。你可以自由创建一个.active类。类名实际上并不意味着什么,你赋予它们意义,所以你添加了一个规则.active{background:gray;}这样,任何带有该类的元素都会得到背景,很可能与你在:hover中使用的样式相同。如果我对每个元素都这样做,我如何知道当前选择的页面是哪一页?如何知道用户在哪一页?那么您是如何生成html的呢?它取决于堆栈和模板引擎,通常可以添加条件并执行类似active的操作。不添加类。使用函数getCurentFileName{var pagePathName=window.location.pathname;返回pagePathName.substringpagePathName.lastIndexOf/+1;}要获取当前文件名,this.href->不返回相对路径。所以您不能在jsfiddle.this+上测试它!重要人物成功了。感谢您抽出时间:
$(function () {
var url = window.location.href.substr(window.location.href.lastIndexOf("/") + 1);
$('[href$="' + url + '"]').parents("li").addClass("current_menu_item");
});
#menu
{
background: #292929;
}
#menu ul .current_menu_item > a /* highlight current menu, target immediate child */
{
color: Yellow;
}
#menu ul li
{
// menu list style
}
#menu ul li a
{
// menu word style
}
<div id="menu">
<ul>
<li>
<a href='home.html'>Home</a>
</li>
<li class='topmenu'>
<a href='forum.php'>Forum</a>
</li>
<li class='topmenu'>
<a href='policy.html'>Policy</a>
</li>
<li class='topmenu'>
<a href='logout.php'>Log out</a>
</li>
</ul>
</div>
<script type="text/javascript" src="Scripts/common.js"></script>