美文网首页
随机产生“涟漪”(2018-08-11)

随机产生“涟漪”(2018-08-11)

作者: 小本YuDL | 来源:发表于2018-08-11 18:24 被阅读5次

生活中总有些有趣的事情发生,有些不尽人意,但是都要尝试过,才知结果如何。


早上写了随机产生泡泡,跟这很像的就是这个“涟漪”。随机泡泡是单层的圈圈,而涟漪是多层的圈圈,但用到的都是css3和js的基本使用。

实现关键:

  • css3 的渐变的使用,控制圆形的产生消失,及动画间隔时间
  • 创建节点,随机产生多层的圆圈
  • 每个“涟漪”的定位
  • 圆圈的边框设置随机色
  • 创建节点需要定位时,先定位,在追加到父元素中

那现在就看看怎么实现的吧:

(css3控制圆的产生消失,.node是添加的节点样式,重点是box的定位。其余与上篇一样)
  *{
            margin: 0;
            padding:0;
        }
        body{
            background-image: url("../Image/00.jpg");
            background-repeat: no-repeat;
            background-size: 1800px 850px;
        }
        #container{
            width: 100%;
            height: 100%;
            position: absolute;
            overflow: hidden;
        }
       .node{
            width:100px;
            height: 100px;
            border: 3.2px solid #448fea;
            border-radius: 50%;
            position: absolute;
            opacity: 0;
            animation: mywaves 5s infinite;

        }
       .box{
           position:absolute;
       }
        @keyframes mywaves {
            from{
                opacity: 0.8;
                height: 0;
                width: 0;
                top:50%;
                left: 50%;
            }
            to{
                width: 100%;
                height: 100%;
                opacity: 0;
                top:0;
                left: 0;
            }
        }
(先定位,再追加到父元素中)
<script>
 var  container = document.getElementById("container");
 var width=document.documentElement.clientWidth;  //得到屏幕的宽和高
 var height=document.documentElement.clientHeight;
 window.onload = function (ev) {
      getCircle();
 };
 function getCircle() {
     for(var j = 0;j<10;j++){   //循环生成多个涟漪
         var div=document.createElement('div'); //创建每个涟漪的父元素
         div.style.width =200+'px';  //给产生的每个涟漪定位
         div.style.height =200+'px';  
         div.style.top = Math.random()*width+50 + 'px';   //随机产生位置
         div.style.left = Math.random()*height+50 + 'px';
         div.className='box';
         for(var i = 0;i<4;i++){  //循环生成多层圆圈,形成涟漪
             var node = document.createElement("div"); 
            //创建每个涟漪的子元素,表示有几层涟漪
             node.className = 'node';
             node.style.borderColor =getColor();//设置每层圆圈的边框为随机色
             node.style.animationDelay = i+'s';  //通过控制动画的延迟时间,产生涟漪
             div.appendChild(node); //将子级节点追加到父级节点
         }
         container.appendChild(div); 
        //将创建的父元素节点追加到整个最大的父元素中,在定位之后
     }
 }
//产生随机色
 function getColor() {
     var r = Math.floor(Math.random()*256);
     var g = Math.floor(Math.random()*256);
     var b = Math.floor(Math.random()*256);
     return "rgb("+r+","+g+","+b+")";
 }

来看下效果图:(个人觉得没有想象中的好看,还有点丑,还需要改进吧)


就是这样啦,一层层的圈圈,就想涟漪一样荡开,再消失 随着内层的圈圈产生,外层的逐渐消失,一直循环

就是这样啦,算学以致用吧,虽然其中不乏学姐改bug的功劳,但是自己也算进步吧。加油!

相关文章

  • 随机产生“涟漪”(2018-08-11)

    生活中总有些有趣的事情发生,有些不尽人意,但是都要尝试过,才知结果如何。 早上写了随机产生泡泡,跟这很像的就是这个...

  • 随机产生泡泡(2018-08-11)

    生活有点枯燥,还是要找点有趣的事情来做。 之前,学姐分享分享过canvas的随机泡泡,那个泡泡是通过绘制圆形产生的...

  • c#实现随机产生不重复数字原理

    c#实现随机产生不重复数字原理:随机产生数字 及检查重复 随机产生使用关键字:Random

  • 2019-03-25

    random 随机函数的使用 需要掌握的能力 能够使用随机种子产生“确定”的随机数 能够产生随机整数 能够序列列表...

  • 随机产生浮点随机数

    这我们也会经常用到 首先要做的是精确位数 例如: int precision = 100; 在确定一个最大和一个...

  • srand48(time(0))随机产生一种颜色

    计算机产生的随机数并不是真正随机的,所以叫 伪随机数。当“种子”固定时,它产生的随机数序列是不变的,例如产生10个...

  • 10_4随机函数练习题

    给定一个等概率随机产生15的随机函数,除此之外,不能使用任何额外的随机机制,请实现等概率随机产生17的随机函数。(...

  • c++随机数

    c++产生若干随机数 产生某一区间的随机数

  • JS实现数字字母混合验证码(数字+大写字母+小写字母)

    ?作者主页? 我之前写了一篇《JS实现随机验证码》,可以产生随机数字、随机颜色、随机位置,但只能产生数字验证码,今...

  • 技术支持网址(URL)

    本软利用随机算法产生数值,进而产生各种随机输出若对使用产生任何疑问,请联系zhangch1020@126.com。

网友评论

      本文标题:随机产生“涟漪”(2018-08-11)

      本文链接:https://www.haomeiwen.com/subject/wwidbftx.html