1、html:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <link rel="stylesheet" href="./css/reset.css"/>
    <link rel="stylesheet" href="./css/animation.css"/>
    <script type="text/javascript" src="./js/jquery-1.10.2.min.js"></script>
    <title>animation-css3动画</title>
</head>
<body>
<ul class="clear" id="animationlist">
    <li><span class="circle"></span><a href="#">首页</a></li>
    <li><span class="circle"></span><a href="#">待办文件</a></li>
    <li><span class="circle"></span><a href="#">已办文件</a></li>
    <li><span class="circle"></span><a href="#">访问记录</a></li>
</ul>
</body>
<script type="text/javascript" src="js/animation_oop.js"></script>
<script type="text/javascript">
    var ani = new Circleopa('animationlist','circle-opacity','#333','#2196f3');
    ani.init();
</script>
</html>

2、css:

ul{width: 300px;border: red;}
ul li{width: 300px;height: 70px;line-height: 70px;background: #fff;text-align: center;cursor: pointer;overflow: hidden;}
ul li a{font-weight: 900;}
ul li:hover a{
    color: #2196f3!important;
    /*animation: circle-opacity 0.5s linear 0s 1;*/
    /*-webkit-animation-fill-mode:forwards;让动画停在最后是这个属性,*/
    /*animation-fill-mode:forwards;*/
}
ul li a{position: relative;left: -50px;color: #333;top: -30px;}
.circle{background: transparent;border-radius: 50%;width: 70px;height: 70px;display: inline-block;margin: 0 auto;}

@keyframes circle-opacity{
    0% {
        background: rgba(192,225,250,0);
    }
    50% {
        transform:scale(4);
        background: rgba(192,225,250,1);
    }
    100% {
        transform:scale(16);
        background: rgba(192,225,250,0);
    }
}
@-webkit-keyframes circle-opacity{/*兼容chrome的动画帧设定,要用-webkit-animation属性调用*/
    0% {
        background: rgba(192,225,250,0);
    }
    50% {
        transform:scale(4);
        background: rgba(192,225,250,1);
    }
    100% {
        transform:scale(16);
        background: rgba(192,225,250,0);
    }
}

3、jsoop版——闭包,面向对象

/*
* 参数说明:
* context:上下文环境,字串形式是id,对象形式就是已经获取到的dom元素
* animationcss:css里面封装的动画样式类
* defaultcolor:默认列表项里面的字体颜色
* activecolor:滑过或点击后的字体样式值
*
* */

;(function(){
    function Circleopa(context,animationcss,defaultcolor,activecolor){
        this.context = typeof context == 'string'?document.getElementById(context) : context;
        this.animationcss = animationcss;
        this.defaultcolor = defaultcolor;
        this.activecolor = activecolor;
    }
    Circleopa.prototype = {
        init:function(){
            var that = this;//这个this必须写在这里,相对于init函数的子onclick回调函数才能引用的到
            var items = this.context.getElementsByTagName('li');
            for(var i = 0; i < items.length; i++){
                items[i].onclick = function(){//下面的事件中的this指向的是触发事件的源对象li元素
//                    alert(that);进来了
                    this.getElementsByTagName('span')[0].style.animation = that.animationcss+' 0.5s linear 0s 1';
                    this.getElementsByTagName('span')[0].style.webkitAnimation = that.animationcss+' 0.5s linear 0s 1';
                    this.getElementsByTagName('span')[0].style.animationFillMode = 'forwards';
                    $(this).siblings().children('a').css('color',that.defaultcolor);
                    $(this).children('a').css('color',that.activecolor);
                    that.clearAnimation(this);
                    //alert(this.getElementsByTagName('span')[0].getAttribute('class'));//弹出circle证明获取到了子元素span
                }
            }
        },
        clearAnimation:function(self){
            var sid = window.setInterval(function(){
                self.getElementsByTagName('span')[0].style.animation = '';
                self.getElementsByTagName('span')[0].style.webkitAnimation = '';
                self.getElementsByTagName('span')[0].style.animationFillMode = '';
                sid = window.clearInterval(sid);
            },500);
        }
    }
    window.Circleopa = Circleopa;
})(window);

css3实战版的点击列表项产生水波纹动画——之jsoop面向对象封装版的更多相关文章

  1. css3实战版的点击列表项产生水波纹动画

    1.html+js: <!DOCTYPE html><html><head lang="en">    <meta charset=&qu ...

  2. 自定义ListView适配器Adapter引用布局文件的情况下实现点击列表项时背景颜色为灰色

    listview控件设置适配器的时候,如果使用自定义的adapter,比如MyArrayAdapter extends ArrayAdapter<String> 如果listitem布局文 ...

  3. Flutter 实战(一):列表项内容可自定义的列表组件

    前言 本篇文的目的是熟练掌握 Flutter 组件的封装,并且使用回调函数实现主要功能. 本组件的设计灵感来源于 Element 组件库的 table 组件. 正题 定义回调函数 在此之前,必须要了解 ...

  4. ListView控件的列表项的文字不满一行的时候,如何实现点击该列表项的空白区域仍可触发列表项的点击事件

    今天在做Demo的过程中,使用到了ListView.然而在实现过程中,发现一个出现了一个问题:只能点击列表项的文字区域可以触发点击事件,而点击列表项的空白区域无法触发点击事件. 如下图: listit ...

  5. Android学习笔记(23):列表项的容器—AdapterView的子类们

    AdapterView的子类的子类ListView.GridView.Spinner.Gallery.AdapterViewFlipper和StackView都是作为容器使用,Adapter负责提供各 ...

  6. Android之水波纹点击效果(RippleView)

    Android5.0后各种炫的效果纷纷出来,写这篇博客主要是讲的是按钮点击效果带有的水波纹(波浪式). 当然我写的这个是自定义来实现的,在低版本(5.0一下)也可以实现点击效果.看看效果图: 上图可看 ...

  7. android: Android水波纹点击效果

    Android API 21及以上新增了ripple标签用来实现水波纹的效果.我们可以通过设置ripple背景来实现一些View点击效果. 该水波纹效果有两种:一种是有界的(点击后类似于一个矩形向四周 ...

  8. Android点击列表后弹出输入框,所点击项自动滚动到输入框上方

    使用微信的朋友圈会发现,点击某一条评论后输入框会弹出来,然后所点击的那一项会自动地滚动到输入框上方的位置,这样如果开始所点击的评论在屏幕很下方的话,就不会被输入框遮住,虽然微信这一点在我的MX2频繁点 ...

  9. CSS3实战手册(第3版)(影印版)

    <CSS3实战手册(第3版)(影印版)> 基本信息 原书名:CSS3: The Missing Manual, 3E 作者: David Sawyer McFarland 出版社:东南大学 ...

随机推荐

  1. 关于js的一些基本知识(类,闭包,变量)

    这里写的都是些杂知识,包括私有,类,闭包这些js不可避免的东西,感觉自己有可能会误人子弟.所以有觉得写错了的读者,希望可以及时评论告诉我.我可以及时更正.多谢大家了 1.关于类的创建 类的创建大致可以 ...

  2. docker rancher 体验 (未完待续.....)

    docker rancher 体验 官方 githubhttps://github.com/rancher/rancher 环境说明: 10.6.0.14010.6.0.18710.6.0.188 修 ...

  3. thinkphp5.0 架构

    1.0 MVC的意义:MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V).控制器(C),它们各自处理自己的任务. 2.0入口 ...

  4. Super Jumping! Jumping! Jumping! 基础DP

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  5. sql语句之字符串匹配like

    sql没有正则表达式,只能使用like 语法 match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ] 参数 match_ex ...

  6. A标签中通过href和onclick传递的this对象

    在blog的后台管理中允许为一个分类添加一个地址,但是不好添加onclick事件.想传递当前对象给一个函数,于是就将这个URL写成"Javascript:shoControlSidebar( ...

  7. 使用bootstrap响应式布局——手机屏幕中横向滚动显示标签页选项

    导航栏到小屏幕的时候,我们的处理办法是隐藏为一个按钮.可是选项卡的标签页部分,我们的处理办法是加一个水平滚动条.但是加水平滚动条需要解决一个问题,就是宽度的问题,如果不设置宽度,他就会根据屏幕大小自适 ...

  8. (简单) CF 44D Hyperdrive,数学。

    In a far away galaxy there are n inhabited planets, numbered with numbers from 1 to n. They are loca ...

  9. Ubuntu“无法解析或打开软件包的列表或是状态文件”的解决办法。_StarSasumi_新浪博客

    Ubuntu"无法解析或打开软件包的列表或是状态文件"的解决办法. (2011-04-30 14:56:14) 转载▼ 标签: ubuntu apt 分类: Ubuntu/Linu ...

  10. [ERROR] InnoDB: Cannot allocate memory for the buffer pool

    :: mysqld_safe Starting mysqld daemon with databases from /data/mysqldb -- :: [Note] /usr/local/mysq ...