假设我有一个带有导航栏的基本网站,其中包含一些链接。当我在一个页面上(比如使用条款)时,我希望导航栏中的“使用条款”链接突出显示。当我切换到不同的页面时,我希望突出显示该页面的链接(即我切换到隐私页面,然后在导航栏中突出显示“隐私”)。
有谁知道用 HTML/CSS/JS 做到这一点的简单方法?
假设我有一个带有导航栏的基本网站,其中包含一些链接。当我在一个页面上(比如使用条款)时,我希望导航栏中的“使用条款”链接突出显示。当我切换到不同的页面时,我希望突出显示该页面的链接(即我切换到隐私页面,然后在导航栏中突出显示“隐私”)。
有谁知道用 HTML/CSS/JS 做到这一点的简单方法?
一种不使用 javascript 或 php 等的简单方法是在每个页面上的 body 标记中添加不同的类。
<body class="nav-1-on">
然后在你的css文件中:
body.nav-1-on a.nav-1, body.nav-2-on a.nav-2 { color:red )
因此,无论您拥有多少导航项目,您都需要 XXX 类,并且如图所示,您也可以在每个导航项目上放置一个类。
有道理?
更新(大脑衰退,选择器错误)。对于 CSS3 浏览器,您可以轻松地定位页面名称本身:
a[href*=pageNameImOn.htm] {color: red;}
此处将*=
匹配其中包含的所有 href 路径pageNameImOn.htm
,这将匹配:
<a href="/my/path/to/file/pageNameImOn.htm">
<a href="/pageNameImOn.htm">
<a href="/pageNameImOn.htm#interalJumpLink">
对于想要为不同颜色的链接,可以手动设置样式
<a style="color:red">My link is red</a>
可能更好的方法是定义一个颜色为红色的类
<style> .visited { color:red } </style>
然后是实际的链接
<a class="visited">My red link</a>
这个解决方案使用jQuery,jQuery 只是一个为 javascript 编译的代码库,提供易于使用的代码片段和功能。
这绝对是实现您所追求的最简单的方法,尽管它是“客户端”,因此该类将由用户机器添加,而不是由服务器添加然后发送给用户。但是对于较小的站点,它应该就足够了。
发生了什么:此代码找到您的导航,在这里它正在寻找li
of .nav
,因此将 (' .nav li
') 替换为您调用的菜单类,因此可能:('.mymenu li')
。然后它会查看菜单链接是否与当前页面匹配,如果匹配,则向 li 添加一个类。所以还需要创建一个类.active
,比如:.active{background-color:blue;}
希望这可以帮助!
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
jQuery('.nav li').each(function() {
var href = jQuery(this).find('a').attr('href');
if (href === window.location.pathname) {
jQuery(this).addClass('active');
}
});
});
</script>
就是图个好玩儿。没有任何后端代码或 Javascript 的唯一解决方案Single page
怎么样:CSS3
<ul>
<li><a id="home" href="#home">Home</a></li>
<li><a id="terms" href="#terms">Terms of use</a></li>
</ul>
CSS
li a { color: black; }
#home:target { color: red; }
#terms:target { color: red; }
CSS 中的:target
选择器将匹配与当前井号标签匹配的 ID 选择器。这里有更多信息:http ://reference.sitepoint.com/css/pseudoclass-target
对 Firefox、Safari、Opera 和 Chrome 的支持非常好。
对 IE9 和 IE10 的不完全支持:
IE 不会对 Back 和 Forward 按钮做出反应:该元素根本不会应用或删除伪类。http://www.quirksmode.org/css/contents.html
在你的 body 上设置一个不同的 id 来识别页面。
<body id="terms-of-use">
一个示例导航:
<nav>
<a class="home" href="#">Home</a>
<a class="terms-of-use" href="#">Terms</a>
</nav>
然后在你的CSS中:
nav a {
// default style
background: blue;
}
#terms-of-use a.terms-of-use {
// if the id of body is terms-of-use then the link with the class .terms-of-use...
background: red;
}