【问题标题】:MDL add ripple effect when clicking 'mdl-navigation__link'单击“mdl-navigation__link”时,MDL 添加波纹效果
【发布时间】:2016-06-26 02:02:21
【问题描述】:

我有这样的导航:

<nav class="mdl-navigation mdl-js-ripple-effect">
  <a id="submenu" class="mdl-navigation__link" href="#">Link</a>
  <a class="mdl-navigation__link" href="">Link</a>
  <a class="mdl-navigation__link" href="">Link</a>
  <a class="mdl-navigation__link" href="">Link</a>
</nav>

当&lt;a&gt; 元素单击时,我想在其上添加带有强调色的波纹效果。 然后我希望这个元素保持选中状态。我该怎么做?

【问题讨论】:

    标签: css material-design material-design-lite


    【解决方案1】:

    编辑:请注意,根据 OP 的要求,此答案已被编辑以反映 他的 需求。如果您是因为标题而来的,请查看下面的其他答案。这个答案是在涟漪效应完成后保持链接被选中。 (比照他的要求)


    您可以通过在标签上设置class="mdl-navigation__link mdl-js-button mdl-js-ripple-effect mdl-button--icon" 轻松添加涟漪效果。然而,由于&lt;a&gt; 标记并不意味着这样做,我们添加了一些 css 以使其工作:

    a.mdl-js-ripple-effect {
      display: inline-block;//Important, without that the button won't appear correctly
      position: relative; //without it, ripple will be shifted
    
      width: 50px; //Same as height, for a perfect circle
      height: 50px; // Works with % values too
      line-height: 50px; //same as button height, to center the text vertically
      text-align: center; //Center horizontally 
    }
    

    然后,您不希望涟漪效应在最后一次单击的元素上消失。你可以用一些 JQuery 做到这一点:

    $('a.mdl-js-ripple-effect').click(function() {
    $('a.mdl-js-ripple-effect').removeClass('selected');
    $(this).addClass('selected');
    });
    

    当您单击任何按钮时,此代码将删除每个按钮的“已选择”类(或任何您想要的),然后再将其再次添加到您仅单击的那个。 然后我们为选定的类设置样式以保持涟漪效果。

    .selected .mdl-ripple {//.selected is the class we used in javascript
      width: 0; //necessary, or it will be shifted
      opacity: 0.3; //To keep the ripple effect visible
    }
    

    你可以在这个 Fiddle 中尝试一下:Demo

    【讨论】:

    • 如何只选择一项?
    • @sreginogemoh 我用 JQuery 更新了我的小提琴和答案。您实际上没有指定是否需要仅使用 css 的答案,并且大多数 MDL 都与 JS 一起使用,所以我认为没问题。看看吧!
    【解决方案2】:

    只使用类 class="mdl-navigation__link mdl-js-button mdl-js-ripple-effect"

    并添加 css:

    a.mdl-js-ripple-effect { position: relative; }
    

    可以解决问题,不需要所有其他类和 javascript。

    【讨论】:

    • 嗨!差不多一年后,我才注意到你对他的问题的回答——事实上,你回答了“MDL 在单击'mdl-navigation__link'时添加涟漪效应”这个问题,这就是每个人都会用这个标题寻找的答案。但是 OP 改进了他的请求,要求点击链接后连锁反应应该保持“活跃”,这就是我编辑答案的原因,也是为什么你的答案不能完全反映他的需求并且没有被“接受”的原因。但是,对于问题标题,您的答案是正确的,因此您将对此表示赞成:)。
    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 2017-07-20
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多