【问题标题】:Pure CSS alter selection纯 CSS 改变选择
【发布时间】:2015-10-03 17:59:48
【问题描述】:

我有一个 3 部分页面。每个div(部分)都有自己独特的ID,它有两种导航形式:箭头和按钮(它们共享相同的id's 和jQuery)。当您在特定部分时,url 将更改为与div 关联的 id 的名称。很标准。

<div class="nav-buttons-wrap">
    <a href="#Welcome" class="nav-buttons"></a>
    <a href="#We-Are-The-Leader" class="nav-buttons"></a>
    <a href="#Services" class="nav-buttons"></a>
</div>

<a href="#We-Are-The-Leader" class="down">
    <i class="fa fa-angle-down"></i>
</a>

<!-- SECTION 1 --> <div id="#Welcome"></div>
<!-- SECTION 2 --> <div id="#We-Are-The-Leader"></div>
<!-- SECTION 3 --> <div id="#Services"></div>

<script>
jQuery(function($) {
    $(document).ready(function(){
        $('a[href^="#"]').on('click',function (e) {
            e.preventDefault();

            var target = this.hash,
            $target = $(target);

            var navBarHeight = 0; // change if nav bar height changes
            $('html, body').stop().animate({
                'scrollTop': ($target.offset().top - navBarHeight)
            }, 1000, 'easeInOutQuint', function () {
                window.location.hash = target;
            });
        });
    });
});
</script>

这工作得很好,但现在我希望 .nav-buttons 根据 url 中的 ID 更改颜色,换句话说,如果您位于与特定 ID 关联的部分。因此,如果您在第 2 部分,则第二个按钮的颜色与其他两个按钮的颜色不同。

我在 jQuery 方面还不够好,无法找到一种将类添加到“已选择”按钮的简洁方法,并且知道这是一种选择,因此我对这种解决方案持开放态度,但理想情况下我很想知道是否有一种纯粹的CSS 方法可以做到这一点。我找不到一个。

【问题讨论】:

  • 向刚刚单击的链接/按钮添加一个活动类...(即在e.preventDefault() 之后添加类似this.addClass('active'); 的内容,然后添加CSS 样式以使.active 元素看起来你想要的方式
  • @ochi 为点击的链接添加一个类可以满足我的需要,但更重要的是,它需要在用户位于与 id 相关联的页面部分上并且他们以其他方式到达那里时而不是点击按钮。单击按钮是事后的想法......

标签: jquery css class


【解决方案1】:

实现此目的的一种方法是在window 上监听hashchange 事件。结帐此working example on PlunkerThe code can also be found on Plunker.

关键部分是这样的:

$(window).on("hashchange", function() {
  $(".nav-buttons-wrap a").removeClass("selected");
  $(".nav-buttons-wrap a[href='" + window.location.hash + "']").addClass("selected");
});

【讨论】:

  • 这有效,但它只适用于哈希更改,这是一个问题,因为您可以滚动页面而无需更改 url 中的哈希。按钮在特定部分时需要更改颜色...
  • @user2684452 看看scrollspy.js (plugins.jquery.com/scrollSpy)
猜你喜欢
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
相关资源
最近更新 更多