MaterializeCss - Wave/Ripple 效果手动触发

MaterializeCss - Wave/Ripple effect manually trigger

我正在使用 MaterializeCSS 构建我的网站 (http://materializecss.com/)

我想知道如何手动触发某个控件的 Wave/Ripple 效果,例如:

"Trigger the wave/ripple effect of certain button."

MaterializeCSS 团队认为他们使用 "Waves.js" javascript 库 (http://fian.my.id/Waves/) 的端口,但是当我尝试使用这些命令时,浏览器控制台中出现错误.

有人可以指点我吗?

示例代码:

<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!--Import materialize.css-->
        <link type="text/css" rel="stylesheet" href="css/materialize.css"  media="screen,projection"/>

        <!--Let browser know website is optimized for mobile-->
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>

        <!--Import jQuery before materialize.js-->
        <script type="text/javascript" src="jquery/jquery.min.js"></script>
        <script type="text/javascript" src="js/materialize.min.js"></script>

        <title>My website title</title>
    </head>

    <body>
        <script type="text/javascript">
            $(document).ready(function() {              
                Waves.ripple('#but_1');
            });
        </script>

        <a id="but_1" class="waves-effect waves-light btn">button</a>

    </body>
</html>

根据 MaterializeCSS 团队...

"Waves is an external library that we've included in Materialize to allow us to create the ink effect outlined in Material Design"

... 根据 Waves 文档 ....

Waves.ripple(elements, options) Create a ripple effect in HTML element programmaticaly.

(http://fian.my.id/Waves/#api)

所以在浏览器控制台中我得到这个错误:

Uncaught TypeError: Waves.ripple is not a function

我一直将波浪效果作为 class 添加到按钮。它在单击按钮时触发。

<a class="waves-effect waves-light btn">button</a>

这是来自 materialize css 网站上的第一个按钮示例。 Buttons on MaterializeCSS

如果提示 Waves.ripple 函数不存在,请尝试从 CDN 引入 Waves.js 脚本。

我找到了一个解决方案 !!!

步骤:

  1. 下载最新版本 Waves.js , link https://github.com/fians/Waves/releases

  2. 从 materializeCSS 文件中打开名为 "materialize.js" 的文件

  3. 打开后,尝试找到以...

    开头的部分
    ;/*!
      * Waves v0.6.4
      * http://fian.my.id/Waves
      *
      * Copyright 2014 Alfiana E. Sibuea and other contributors
      * Released under the MIT license
      * https://github.com/fians/Waves/blob/master/LICENSE
      */
    
      ;(function(window) {
      'use strict';
    
      var Waves = Waves || {};
      var $$ = document.querySelectorAll.bind(document);
    
      // Find exact position of element
      function isWindow(obj) {
          return obj !== null && obj === obj.window;
     }
    

那部分属于嵌入在 materializeCSS 中的 Waves 库....用 Waves.js 的新代码替换所有那部分代码....怎么样? .... 复制Waves.js最新版本的代码,并替换materialize.js

内Waves SECTION内的(PASTE)
  1. 现在......在你的HTML文件中你应该有这样的东西(检查评论)

    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
        <!--ADD the CSS from materializeCSS -->
        <link type="text/css" rel="stylesheet" href="css/materialize.css"  media="screen,projection"/>
    
        <!--Let browser know website is optimized for mobile-->
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    
        <!--Import jQuery before materialize.js-->
        <script type="text/javascript" src="jquery/jquery.min.js"></script>
    
        <!-- Add the file "materialize.js" ... the one you just modified -->
        <script type="text/javascript" src="js/materialize.js"></script>
    
        <!-- Add the CSS from Waves.js -->
        <link type="text/css" rel="stylesheet" href="waves/waves.css"  media="screen,projection"/>
    
        <!-- DO NOT ADD the Waves.js
        <script type="text/javascript" src="wave/waves.js"></script>
        -->
    
        <title>Your site</title>
    </head>
     <body>
        <script type="text/javascript">
            function clickbut() {
                //Now you can use the Waves.ripple function!!!
                Waves.ripple('#but_1');
            };
    
            $(document).ready(function() {              
                //Initialize the Waves module
                Waves.init()
            });
        </script>
    
    
        <h2 class="left-align"><i class="left-align medium material-icons">touch_app</i>My website Header</h2>
    
    
        <button  onclick="clickbut()">click me</button>
    
        <a class="waves-effect waves-light btn ">button</a>
    
        <a id="but_1" class="waves-effect waves-light btn"><i class="material-icons left">cloud</i>button</a>
    
        <a class="waves-effect waves-light btn"><i class="material-icons right">cloud</i>button</a>
    
    </body>
    </html>
    

如果您单击 "click me" 按钮...将在 #but_1 按钮中播放涟漪效果

None 以上答案对我有用。玩弄这个并设法使用以下

触发它
                Waves.attach('#refresh', ['waves-light']);
                Waves.ripple('#refresh');