利用dom 动画水纹制作

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #waterBox{
            width: 800px;
            height: 400px;
            background-color: #e0dbdb;
            margin: auto;
            position: relative;
            /*overflow: hidden;*/
        }
        .waterlist{
            position: absolute;
            left: 0;
            top: 20px;
            width: 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不断的增加,也就是变圆,为了增强水波的效果,我加上了透明度这一个属性也是不断的变化的;

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

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

 
时间: 2024-08-26 16:35:27

利用dom 动画水纹制作的相关文章

HTML页面的动画的制作及性能

WEB页面的动画的制作及性能 简介 目前WEB页面做动画的方式大的分两种1.JS间隔时间不断修改元素属性值,这也是CSS3出来前常用的做法,貌似也是唯一的做法.2.CSS3出来之后支持动画了. 大体的思路分这两种.要是各样功能组合细分就可以分出许多类来.本文主要介绍WEB页面做动画的一些方式以及性能分析. 我们的例子界面如下.1.用好多个小方块的移动来测试不同方式动画的性能.2.右边几个功能按钮.其中有个阻塞按钮,利用一个空循环阻塞主线程来测试不同效果.3.画面主要是许多个小方块无规则的平移,没

【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框&&获取组件实例常用的两种方式

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2346.html 本篇Himi来利用ListView和TextInput这两种组件实现对话.聊天框. 首先需要准备的有几点:(组件的学习就不赘述了,简单且官方有文档) 1. 学习下 ListView: 官方示例:http://reactnative.cn/docs/0.27/tutorial.html#content

利用css+原生js制作简易钟表

利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期以及时间,至于钟表上的刻度.数字等元素,因为量比较多,采用jvascript生成 <!doctype html> <html> <head> <meta charset="UTF-8"> <link rel='stylesheet' h

U3D帧动画的制作

1.打开动画编辑器(动画制作器!)windows标签下的Animation 2.点击新建一个动画,保存后进入动画编辑状态.注意新建后创建一个动画和控制器(animator Contrller),同时为当前物体添加一个animator组件. 3.选择添加property,可以选择让动画改变哪些参数. 本例中制作一个窗口打开和关闭的简单动画.通过缩放窗口大小来控制打开关闭的动画.所以添加一个Scale的参数. 4.先制作一个关闭的动画:第一帧的时候控制scale都为1,也就是正常大小.60帧的时候控

【微信公众平台开发】利用百度接口,制作一键导航功能

微信开发中,很多商家用户都要求点具体地址,能在百度或者soso地图上面显示自己的地址. 而这样的功能,利用百度api接口地图标点功能就可以很简单实现. 1.功能说明如下: 地图标点功能 调用该接口可调起PC或web地图,且在指定坐标点上显示点的名称和内容信息. 实例 http://api.map.baidu.com/marker?location=40.047669,116.313082&title=我的位置&content=百度奎科大厦 &output=html&src=

利用div和css制作三角形效果

利用div和css制作三角形效果:本章节介绍一下如何利用div和css实现三角形效果,虽然看起来表神奇,但是原理是非常的简单.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂蚁

利用中转输出表制作HijackDll

[原创]利用中转输出表制作HijackDll(附工具源码)作 者: baixinye时 间: 2012-08-05,16:48:45链 接: http://bbs.pediy.com/showthread.php?t=154269 众所周知,PE文件中的导出表指向一个IMAGE_EXPORT_DIRECTORY结构,该结构定义如下: typedef struct _IMAGE_EXPORT_DIRECTORY {    DWORD   Characteristics;    DWORD   Ti

关于如何利用Pocket CHM Pro制作帮助文档

关于如何利用Pocket CHM Pro制作帮助文档 编写人:CC阿爸 2015-4-6 今天在这里,我想与大家一起分享如何利用Pocket CHM Pro制作软件系统的帮助文档,在此做个小结,以供参考.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧.   1. 首先给大家看看我制作好后的帮助文档.   如何还算漂亮吧.很多代码在里面,很方便查阅. 2. 下面我们就看看如何利用这个工具制作自己满意的帮助文档 1)         首先大家可以在我们的技术群中,找到该软件. 2)       

第九章 利用DOM脚本检索,替换,设置,追加样式信息

我们浏览器里看到的网页是由以下三层信息构成的一个共同体: -结构层,由HTML或XHTML之类的标记语言负责去搭建文档的结构. -表示层,由CSS负责设置文档的呈现效果. -行为层,由JavaScript和DOM去实现文档的行为. style属性 文档的每个元素点还都有一个属性style. 样式信息都存放在这个对象的属性里:element.style.property 我们完全可以利用style属性把这个文本段的样式信息检索出来. 样式信息的检索 <body> <p id="e