• 利用dom 动画水纹制作


    我们在制作之前先来配置一下我们基础的东西

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            #waterBox{
                 800px;
                height: 400px;
                background-color: #e0dbdb;
                margin: auto;
                position: relative;
                /*overflow: hidden;*/
            }
            .waterlist{
                position: absolute;
                left: 0;
                top: 20px;
                 10px;
                height: 10px;
                background-color: #f40;
                border-radius: 50%;
                opacity: 1;
            }
        </style>
    </head>
    <body>
        <h2>div的水波效果</h2>
    
        <div id="waterBox">
            <!-- <div class="waterlist"></div> -->
        </div>    
    </body>
    <script>
    window.onload = function(){
        var num = 0;
        //第一步 添加点击事件
        var waterBox = document.getElementById('waterBox');
        waterBox.addEventListener('click',function(e){
            
    
    }
    
    </script>
    </html>

    现在我们的基本的声明就已经做完了;我们在上面写好了装载的盒子div,并将其加上了一个点击的事件;接下来我们需要给事件添加内容

    <script>
    window.onload = function(){
        var num = 0;
    
    
        //第一步 添加点击事件
        var waterBox = document.getElementById('waterBox');
        waterBox.addEventListener('click',function(e){
            num++;
            /*alert(1);*/
            var me = e || event ;
            var waterX = me.clientX - waterBox.offsetLeft -0, 
                waterY = me.clientY - waterBox.offsetTop -0;
    }
    
    </script>
    第一步 添加点击事件

    我们在逐步的将点击事件里获取到div中的鼠标位置,作为我们水纹的出来时的位置

    <script>
    window.onload = function(){
        var num = 0;
    
    
        //第一步 添加点击事件
        var waterBox = document.getElementById('waterBox');
        waterBox.addEventListener('click',function(e){
            num++;
            /*alert(1);*/
            var me = e || event ;
            var waterX = me.clientX - waterBox.offsetLeft -0, 
                waterY = me.clientY - waterBox.offsetTop -0;
            var newDom;
            var addnum = 0,opacitynum = 1;
            var set;//第二部生成节点
            newDom = document.createElement('div');
            newDom.setAttribute('class','waterlist');
    
            newDom.style.left = waterX + "px";
            newDom.style.top = waterY + "px";
    
            waterBox.appendChild(newDom);
    
            
    </script>

    第二部 节点的生成

    document.createElement('div');生成一个新的节点,并将他的class设置为我们已经设置好的文本样式
    newDom.style.left = waterX + "px";再将我们的关于位置的坐标给复制上去
    最后在将其appendChild在父级元素的下面

    <script>
    window.onload = function(){
        var num = 0;
    
    
        //第一步 添加点击事件
        var waterBox = document.getElementById('waterBox');
        waterBox.addEventListener('click',function(e){
            num++;
            /*alert(1);*/
            var me = e || event ;
            var waterX = me.clientX - waterBox.offsetLeft -0, 
                waterY = me.clientY - waterBox.offsetTop -0;
            var newDom;
            var addnum = 0,opacitynum = 1;
            var set;//第二部生成节点
            newDom = document.createElement('div');
            newDom.setAttribute('class','waterlist');
    
            newDom.style.left = waterX + "px";
            newDom.style.top = waterY + "px";
    
            waterBox.appendChild(newDom);
    
            // 第三部 变化半径增长
            set = setInterval(function(){
                console.log("第"+num+"次点击的参数"+addnum);
                addnum += 5;
                opacitynum -= 0.1;//透明属性
                newDom.style.padding = addnum+'px';
                newDom.style.opacity = opacitynum;
                //第四部 删除节点
                if( opacitynum < 0 ){
                    clearInterval(set);
                    waterBox.removeChild(newDom);
                }
    
            },100);
    
    }
    
    </script>

    因为我们的第三步和第四步是在一起的,所以我就将他放在一起讲了,

    我们通过setinterval将他不断的循环 使其的padding不断的增加,也就是变圆,为了增强水波的效果,我加上了透明度这一个属性也是不断的变化的;

    当然我不可能一直的将他变大下去,这样浏览器也受不住,所以我将他变为全透明的时候,就将这个节点删除掉,也就是第四步,

    这样的话 水波节点创造就做好了。

     
  • 相关阅读:
    如何使样式CSS不被覆盖 !important
    PHP5中数组函数总结篇
    优化php效率,提高php性能的一些方法
    windows2003 系统下不能识别移动硬盘解决方法
    Sql Server 2000索引问题?
    在网页中调用本地的应用程序
    Sql Server资料收集(摘自http://www.itpub.net)
    利用CSS控制打印
    C#.NET 中的类型转换
    卓越领导力素质训练心得
  • 原文地址:https://www.cnblogs.com/Pongtao/p/7102802.html
Copyright © 2020-2023  润新知