zoukankan      html  css  js  c++  java
  • jquery动画遮罩

    以前一直以为遮罩都是鼠标移上去,改变透明度实现的,后来看到过这样的一个遮罩动画,然后今天自己写了一个,因为弹出的遮罩是圆形的,所以从美观上来说,这个遮罩效果更适合于方形图片。

    <div class="container">
                <ul class="bannerHolder">
                    <li>
                        <div class="banner">
                            <a href="#"><img src="1.jpg" width="150" height="150"></a>
                            <p>这是第一张图片</p>
                            <div class="cornerTL"></div>
                            <div class="cornerTR"></div>
                            <div class="cornerBL"></div>
                            <div class="cornerBR"></div>
                        </div>
                    </li>
                    <li>
                        <div class="banner">
                            <a href="#"><img src="2.jpg" width="150" height="150"></a>
                            <p>这是第二张图片</p>
                            <div class="cornerTL"></div>
                            <div class="cornerTR"></div>
                            <div class="cornerBL"></div>
                            <div class="cornerBR"></div>
                    </div>
                    </li>
                    <li>
                        <div class="banner">
                            <a href="#"><img src="3.jpg" width="150" height="150"></a>
                            <p>这是第三张图片</p>
                            <div class="cornerTL"></div>
                            <div class="cornerTR"></div>
                            <div class="cornerBL"></div>
                            <div class="cornerBR"></div>
                    </div>
                    </li>
                    <li>
                        <div class="banner">
                            <a href="#"><img src="4.jpg" width="150" height="150"></a>
                            <p>这是第四张图片</p>
                            <div class="cornerTL"></div>
                            <div class="cornerTR"></div>
                            <div class="cornerBL"></div>
                            <div class="cornerBR"></div>
                    </div>
                    </li>
                    <li>
                        <div class="banner">
                            <a href="#"><img src="5.jpg" width="150" height="150"></a>
                            <p>这是第五张图片</p>
                            <div class="cornerTL"></div>
                            <div class="cornerTR"></div>
                            <div class="cornerBL"></div>
                            <div class="cornerBR"></div>
                    </div>
                    </li>
                    <li>
                        <div class="banner">
                            <a href="#"><img src="6.jpg" width="150" height="150"></a>
                            <p>这是第六张图片</p>
                            <div class="cornerTL"></div>
                            <div class="cornerTR"></div>
                            <div class="cornerBL"></div>
                            <div class="cornerBR"></div>
                    </div>
                    </li>
                </ul>
        </div>

    首先,是一个class名为container的div作为容器来放置这些图片,然后用ul li标签来排列图片,这里需要着重说明的是,将图片,文字,还有四周遮罩都放在一个class名为banner的div里。

     1 @charset "utf-8";
     2 html, body, p {
     3      border: 0 ;
     4      margin: 0;
     5      padding:0;
     6      outline-style: none;
     7      font-size: 12px;
     8 }
     9 .container{
    10     margin: 50px;
    11     
    12 }
    13 .bannerHolder{
    14     width: 1020px;
    15      padding: 20px 10px 20px 10px;
    16      background-color: #f7f7f7;
    17     overflow: hidden;
    18 
    19     border-radius: 12px;
    20 }
    21 .bannerHolder li {
    22      list-style: none;
    23      display: inline;
    24 }
    25 .banner{
    26     width: 150px;
    27     height: 150px;
    28     cursor: pointer;
    29     position: relative;
    30     float: left;
    31     overflow: hidden;
    32 
    33     margin: 0 10px;
    34 }
    35 .banner img {
    36      display: block;
    37      border: none;
    38 }
    39 .banner div{
    40     width: 60px;
    41     height:60px;
    42     background-color: #222;
    43     opacity: 0.3;
    44     z-index: 100;
    45     position: absolute;
    46     border-radius: 100px;
    47 }
    48 .banner .cornerTL { left:-63px; top:-63px; }
    49 .banner .cornerTR { right:-63px; top:-63px; }
    50 .banner .cornerBL { left:-63px; bottom:-63px; }
    51 .banner .cornerBR { right:-63px; bottom:-63px; }
    52 .banner p{
    53     width: 100%;
    54     left:0;
    55     position: absolute;
    56     color: #fff;
    57     z-index: 200;
    58     text-align: center;
    59     display: none;
    60     top:65px;
    61     cursor: pointer;
    62 }

    这是css的部分,.banner中设置左浮动使图片等行排列,并且.banner的宽和高与图片的宽和高一致,这样弹出的遮罩的圆才会在中心处。将遮罩cornerTL  cornerTR  cornerBL  cornerBR放在四个角上,然后通过div的overflow: hidden将遮罩隐藏起来

    <script type="text/javascript">
            $('.banner').hover(function(){
            var el = $(this);
            el.find('div').stop().animate({220,height:220},'slow',function(){
            el.find('p').fadeIn('fast');
            });
        },function(){
            var el = $(this);
            el.find('p').hide();
            el.find('div').stop().animate({60,height:60},'fast');
        }).click(function(){
            window.open($(this).find('a').attr('href'));        
        });
        </script>

    这是jquery的部分,注意首先要引入jquery的库

    然后通过hover来实现鼠标移进移出的功能。用animate动画将遮罩的宽和高放大,四角重叠,实现好看的遮罩,并且文字的出现和消失,以及点击会打开一个新的页面。

    这是最后实现的效果图,遮罩会从四周弹出,自己下载代码看一下吧。

  • 相关阅读:
    单例模式及C++实现代码
    Nginx学习笔记4 源码分析
    探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别2
    SVM学习资料
    11 款最好 CSS 框架
    发布Activex全过程
    Integer.parseInt(String s, int radix)方法介绍(修正版)
    Windows 各种计时函数总结(QueryPerformanceCounter可以达到微秒)
    不断摸索发现用 andy 模拟器很不错,感觉跟真机差不多
    Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)
  • 原文地址:https://www.cnblogs.com/hsprout/p/4986006.html
Copyright © 2011-2022 走看看