【问题标题】:javascript - highlight current menu item via <div> inside <a>javascript - 通过 <a> 内的 <div> 突出显示当前菜单项
【发布时间】:2014-10-08 17:01:57
【问题描述】:

我想在链接中使用 div 类通过 javascript 突出显示当前菜单项。在第一次尝试中,我只是将类“top-bar-underline”添加到 a-tag,但由于菜单项是“display: block;”这样下划线超出了菜单项的字体,我将下划线放在a-tag内的div容器中。 对于悬停效果,这非常有效。

问题:

如何将“top-bar-underline-current”类添加到当前活动菜单项的“top-bar-underline”类中?


我当前的代码如下:

html 菜单:

<ul class="right">                
                <li>
                    <a href="{{ site.url }}"><div class="top-bar-underline">LATEST</div></a>
                </li>
                <li>
                    <a href="{{ site.url }}/pages/about/"><div class="top-bar-underline">ABOUT</div></a>
                </li>

</ul>

js 突出显示菜单中的当前 a:

<script type="text/javascript">
var url = window.location.href;
$('.top-bar-section li:not(.has-form) a:not(.button)').filter(function() {
    return this.href == url;
}).addClass('top-bar-underline-current');
</script>

css:

.top-bar-underline {
position: relative;
color: #ff3296;
}
.top-bar-underline:after {
display: block;
position: absolute;
top: 70%;
left: 0;
width: 100%;
height: 2px;
background: rgba($body-font-color,0.9);
content: '';
opacity: 0;
-webkit-transition: opacity 0.2s, -webkit-transform 0.2s;
-moz-transition: opacity 0.2s, -moz-transform 0.2s;
transition: opacity 0.2s, transform 0.2s;
-webkit-transform: translateY(10px);
-moz-transform: translateY(10px);
transform: translateY(10px);
}
.top-bar-underline:hover {
color: #98004a;

}
.top-bar-underline:hover:after,
.top-bar-underline:focus:after {
 width: 100%;
 opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
transform: translateY(0px);
}
.top-bar-underline-current {
position: relative;
}
.top-bar-underline-current:after {
position: absolute;
top: 70%;
left: 0;
width: 100%;
height: 2px;
background: rgba($body-font-color,0.9);
content: '';
opacity: 1;
-webkit-transition: opacity 0.2s, -webkit-transform 0.2s;
-moz-transition: opacity 0.2s, -moz-transform 0.2s;
transition: opacity 0.2s, transform 0.2s;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
transform: translateY(0px);
}
.top-bar-underline-current:hover:after,
.top-bar-underline-current:focus:after {
width: 100%;
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
transform: translateY(0px);
}

感谢您的帮助!

【问题讨论】:

  • 也许您没有看到问题所在:blog.huidesign.com/…。突出显示活动页面的大量示例。在此示例中,您将 div 添加到选择器,您甚至可以包含类名,但是...span 标签是添加 div 的最佳实践,只是值得深思。
  • 要添加到 RandomUs1r 所写的内容,链接/锚元素是内联的,不应包含像 div 这样的块元素,因此请改用 span
  • 感谢您的提示。我想我需要重新考虑我的highlightnight方法,反正它有点无聊!

标签: javascript jquery css highlight


【解决方案1】:
var url = window.location.href;
$('.top-bar-section li:not(.has-form) a:not(.button)').filter(function() {
    return this.href == url;
}).find('.top-bar-underline').addClass('top-bar-underline-current');

我认为这就是你所需要的......

【讨论】:

    猜你喜欢
    • 2015-12-06
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多