Html 根据页面地址更改菜单项的外观
我希望根据当前页面更改导航菜单项的外观背景颜色 以下是导航菜单的HTML代码:Html 根据页面地址更改菜单项的外观,html,css,Html,Css,我希望根据当前页面更改导航菜单项的外观背景颜色 以下是导航菜单的HTML代码: <ul id="menu"> <li><a href="#">Home</a></li> <li><a href="#">Services</a> <ul> <li><a href="#">Recruitment</a>
<ul id="menu">
<li><a href="#">Home</a></li>
<li><a href="#">Services</a>
<ul>
<li><a href="#">Recruitment</a></li>
<li><a href="#">Training & Development</a></li>
<li><a href="#">Outsourcing</a></li>
</ul>
</li>
<li><a href="#">About Us</a></li>
<li><a href="#">Contact</a></li>
</ul>
#menu, #menu ul {
margin: 0;
padding: 0;
list-style: none;
}
#menu {
width: 960px;
margin: 60px auto;
border: 1px solid #222;
background-color: #111;
background-image: linear-gradient(#444, #111);
border-radius: 6px;
box-shadow: 0 1px 1px #777;
}
#menu:before,
#menu:after {
content: "";
display: table;
}
#menu:after {
clear: both;
}
#menu {
zoom:1;
}
#menu li {
float: left;
/* border-right: 1px solid #222;
*/
box-shadow: 1px 0 0 #444;
position: relative;
}
#menu a {
float: left;
padding: 12px 30px;
color: #FFF;
text-transform: uppercase;
text-decoration: none;
text-shadow: 0 1px 0 #000;
font-family: Arial, Helvetica;
font-size: 12px;
font-weight: bold;
}
#menu li:hover > a {
color: #fafafa;
}
*html #menu li a:hover { /* IE6 only */
color: #fafafa;
}
#menu ul {
margin: 20px 0 0 0;
_margin: 0; /*IE6 only*/
opacity: 0;
visibility: hidden;
position: absolute;
top: 38px;
left: 0;
z-index: 1;
background: #444;
background: linear-gradient(#444, #111);
box-shadow: 0 -1px 0 rgba(255,255,255,.3);
border-radius: 3px;
transition: all .2s ease-in-out;
}
#menu li:hover > ul {
opacity: 1;
visibility: visible;
margin: 0;
}
#menu ul ul {
top: 0;
left: 150px;
margin: 0 0 0 20px;
_margin: 0; /*IE6 only*/
box-shadow: -1px 0 0 rgba(255,255,255,.3);
}
#menu ul li {
float: none;
display: block;
border: 0;
_line-height: 0; /*IE6 only*/
box-shadow: 0 1px 0 #111, 0 2px 0 #666;
}
#menu ul li:last-child {
box-shadow: none;
}
#menu ul a {
padding: 10px;
width: 130px;
_height: 10px; /*IE6 only*/
display: block;
white-space: nowrap;
float: none;
text-transform: none;
}
#menu ul a:hover {
background-color: #f80033;
background-image: linear-gradient(#f80033, #955d61);
}
#menu li:hover {
border-radius:5px;
background-color: #f80033;
background-image: linear-gradient(#f80033, #955d61);
}
#menu ul li:first-child > a {
border-radius: 3px 3px 0 0;
}
#menu ul li:first-child > a:after {
content: '';
position: absolute;
left: 40px;
top: -6px;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #444;
}
#menu ul ul li:first-child a:after {
left: -6px;
top: 50%;
margin-top: -6px;
border-left: 0;
border-bottom: 6px solid transparent;
border-top: 6px solid transparent;
border-right: 6px solid #3b3b3b;
}
#menu ul li:first-child a:hover:after {
border-bottom-color: #f80033;
}
#menu ul ul li:first-child a:hover:after {
border-right-color: #ba4d5c;
border-bottom-color: transparent;
}
#menu ul li:last-child > a {
border-radius: 0 0 3px 3px;
}
使用:活动选择器选择当前活动的菜单项
您可以将选择器添加到菜单li:hover,使其成为菜单li:hover,menu li.active,然后只需将类active添加到加载页面时要突出显示的对象
演示:
为了自动进行选择,您需要一些脚本来将活动类添加到正确的li。。。通常,为了简单起见,我选择:
var pageUrl = window.location.href;
$("#menu a[href='" + pageUrl + "']").parent().addClass("active");
据我了解,有两种方法可以做到这一点: 编写服务器端代码以添加类似active的类,当选项卡路径与页面路径相同时,还可以比较控制器操作。 通过使用window.location并将其与tab-link进行比较,也可以使用javascript实现这一点。
您需要在项目的点击偶数上分配一个CSS类,在这种情况下,您需要使用javascript(请参见下面的jQuery),或者您需要在页面加载时标识当前页面,并将一个类分配给当时未显示的相关列表项,请参见中的答案 jQuery
$('#menu > li').on('click', function(){
$('#menu > li').removeClass('active');
$(this).addClass('active');
});
附加CSS
#menu li.active {
border-radius:5px;
background-color: #f80033;
background-image: linear-gradient(#f80033, #955d61);
}
为要显示为活动的链接添加类 并为该类添加css 例如:
a.active{background-color:#f80033;color:#fff;}
只有CSS无法执行此操作,您需要添加jquery:
它工作得很好。什么问题?是否要突出显示链接到当前页面的菜单项?如果是这样,没有服务器端或客户端脚本,这是不可能的;CSS还没有关于页面位置的概念。@如果我移动到其他页面,我需要活动菜单,而您只想用CSS实现这一点?正如David所说,这不可能只使用CSS。您需要为此包含jquery。@我想知道如何在新页面加载由应用的样式时帮助我。如果active不是单个页面站点,它将丢失。请记住,该属性可能只包含相对URL,从而导致此方法失败,最好选择相关元素,然后使用element.href属性筛选完整URL,以与window.location.href进行比较。请注意,我们的两种方法都会失败,因为在发布的代码中,每个链接的href都是简单的。。。W3学校在所有网站上都有错误信息!不要使用它们!我删除了链接,改成了CSS技巧页面。不知道你还想从我这里得到什么:P还有,W3Schools并不是最好的学习工具,但作为一个快速参考,我已经找到了我一直在寻找的答案,从那里我数不清。不全是坏事。
$('#menu li').click(function(){
$('#menu li').removeClass('active');
$(this).addClass('active');
});