CSS3中实现首页穿墙广告效果

㈠分享一组很有趣的代码:

具体如下:

<!doctype html>

<html>

<head>

<meta charset="UTF-8">

<title>穿墙广告</title>

<style>

       *{
          margin:0;
          padding:0;
          list-style:none;
        }

      ul{
          overflow:hidden;
          width:630px;
          margin:100px auto;
        }

       ul li{
              float:left;
              position:relative;
              width:200px;
              height:200px;
              background:#ccc;
              margin:5px;
              overflow:hidden;
            }

      ul li span{
                  position:absolute;
                  width:100%;
                  height:100%;
                  background:rgba(255,0,0,0.3);
                  left:-200px;
                  top:0;
                }

</style>

<script>

         function getStyle(obj,sName){

         return (obj.currentStyle||getComputedStyle(obj,false))[sName];

         }

         function move(obj,json,options){

         options = options||{};

         options.duration = options.duration||700;

         options.easing = options.easing||‘ease-out‘;

         var start = {};

         var dis = {};

         for(var name in json){

                   start[name] = parseFloat(getStyle(obj,name));

                   dis[name] = json[name]-start[name];

         }

         var count = Math.floor(options.duration/30);

         var n = 0;

         clearInterval(obj.timer);

         obj.timer = setInterval(function(){

                   n++;

                   for(var name in json){

                            switch(options.easing){

                                     case ‘linear‘:

                                               var cur = start[name]+dis[name]*n/count;

                                               break;

                                     case ‘ease-in‘:

                                               var a = n/count;

                                               var cur = start[name]+dis[name]*Math.pow(a,3);

                                               break;

                                     case ‘ease-out‘:

                                               var a = 1-n/count;

                                               var cur = start[name]+dis[name]*(1-Math.pow(a,3));

                                               break;

                            }

                            if(name==‘opacity‘){

                                     obj.style.opacity = cur;

                                     obj.style.filter = ‘alpha(opacity:‘+cur*100+‘)‘;

                            }else{

                                     obj.style[name] = cur+‘px‘;

                            }

                   }

                   if(n==count){

                            clearInterval(obj.timer);

                            options.complete&&options.complete();

                   }

         },30);

}

         function a2d(n){

         return n*180/Math.PI;

}

function hoverDir(ev,obj){

         var a = ev.clientX-obj.offsetLeft-obj.offsetWidth/2;

         var b = obj.offsetTop+obj.offsetHeight/2-ev.clientY;

         return Math.round((a2d(Math.atan2(b,a))+180)/90)%4;

}

function through(obj){

         var oS = obj.children[0];

         obj.onmouseenter = function(ev){

                   var oEvent = ev||event;

                   var dir = hoverDir(oEvent,obj);

                   switch(dir){

                            case 0:

                                     //左

                                     oS.style.left = ‘-200px‘;

                                     oS.style.top = 0;

                                     break;

                            case 1:

                                     //下

                                     oS.style.left = 0;

                                     oS.style.top = ‘200px‘;

                                     break;

                            case 2:

                                     //右

                                     oS.style.left = ‘200px‘;

                                     oS.style.top = 0;

                                     break;

                            case 3:

                                     //上

                                     oS.style.left = 0;

                                     oS.style.top = ‘-200px‘;

                                     break;

                   }

                   move(oS,{left:0,top:0});

         };

         obj.onmouseleave = function(ev){

                   var oEvent = ev||event;

                  var dir = hoverDir(oEvent,obj);

                   switch(dir){

                            case 0:

                                     move(oS,{left:-200,top:0});

                                     break;

                            case 1:

                                     move(oS,{left:0,top:200});

                                     break;

                            case 2:

                                     move(oS,{left:200,top:0});

                                     break;

                            case 3:

                                     move(oS,{left:0,top:-200});

                                     break;

                   }

         };

}

window.onload = function(){

         var aLi = document.getElementsByTagName(‘li‘);

         for(var i=0;i<aLi.length;i++){

                   through(aLi[i]);

         }

};

</script>

</head>

<body>

         <ul>

                   <li><span></span></li>

                   <li><span></span></li>

                   <li><span></span></li>

                   <li><span></span></li>

                   <li><span></span></li>

                   <li><span></span></li>

         </ul>

</body>

</html>

㈡部分效果图如下:

第一幅:

第二幅:

第三幅:

第四幅:

第五幅:

还有更多的效果,那就去敲敲代码,仔细去看相关的效果了。

来源:https://www.php.cn/css-tutorial-381739.html

原文地址:https://www.cnblogs.com/shihaiying/p/11406449.html

时间: 2024-08-06 14:13:23

CSS3中实现首页穿墙广告效果的相关文章

仿拉勾网首页穿墙广告效果

<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{margin:0; padding:0; list-style:none;} ul{ overflow:hidden; width:630px; margin:100px auto;} ul li{ float:left; positio

css3中的过渡效果和动画效果

一.CSS3 过渡 (一).CSS3过渡简介 CSS3过渡是元素从一种样式逐渐改变为另一种的效果. 实现过渡效果的两个要件: 规定把效果添加到哪个 CSS 属性上 规定效果的时长 定义动画的规则 过渡transition  (作用) 将元素的某个属性从“一个值”在指定的时间内过渡到“另一个值” (二).transition属性    语法 :   {transition: 属性名 持续时间 过渡方法} transition-property     属性的名字(如果是一个属性就带有这个属性的名字

胡博君谈CSS3中的边框的各种效果

以下是css3定义圆角: #main{ margin:20px; border:1px solid #E1E1E1; -moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px; padding:20px; } 以下是html中对样式的引用: <div id="main"> </div> 以下是css3定义边框阴影: 实例 向 div 元素添加方框阴影: div { box-shadow:

安卓首页图片轮播效果(淘宝、京东首页广告效果)

直奔主题: 1.主要原理就是利用定时任务器定时切换ViewPager的页面. 2.里面用了一个读取网络图片的插件.做client使用本地图片轮播的也非常少. 先上个效果图: 项目代码结构截图: 自己定义View 的布局文件layout_slideshow.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.and

CSS圆角效果 -webkit-border-radius(CSS3中border-radius隐藏的威力)

CSS圆角效果 -webkit-border-radius(CSS3中border-radius隐藏的威力) 来源:互联网 作者:佚名 时间:03-28 14:17:14 [大 中 小] border-radius:用这个属性能实现圆角边框的效果.现在只有Mozilla/Firefox 和 Safari 3支持该属性. -webkit-border-radius:苹果:谷歌,等一些浏览器认,因为他们都用的是webkit内核: -moz-border-radius:moz这个属性 主要是专门支持M

CSS3中的动画效果-------Day72

还记得么,在前面也曾实现过"仅仅用css让div动起来",还记得当时是怎么实现的么,是的,transition,针对的也比較局限,仅仅有旋转角度啊,长宽啊之类的,所以说,与其说是动起来,倒真不如说成是过渡.当然它另一个局限性,仅仅有当鼠标放上后才干够触发,仅仅是一个样式变成另一个样式,变化也比較单调,而真正的实现动画效果,css3中另一个很有效的方法:@keyframes. 首先.要知道它的规范和使用方法 还记得transition的使用方法么:在初始的样式中增加div{transit

CSS3中动画效果Transitions与Animations的区别

在CSS3中,如果我们使用动画功能,可以使页面上的文字或图像具有动画效果,可以使我们的页面更加生动具有吸引力. 在CSS3中我们可使用的动画功能有两种,Transitions与Animations.下面我们来看看它们两者的区别. 首先来看Transitions功能,它的属性有: transition-property :指定需要平滑过渡的属性 transition-duration :设定平滑过渡使用的时间 transition-timing-function :设定平滑过渡使用的方法 tran

首页大屏广告效果 jquery轮播图淡入淡出

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jQuery个性化图片轮播效果</title> <script src="js/jquery.js" type="text/javascript"></script> <link rel=

CSS3中的动画效果记录

今天要记录的是CSS3中的三种属性transform.transition以及animation,这三个属性大大提升了css处理动画的能力. 一.Transform 变形 CSS中transform 属性允许你修改CSS可视化模型的坐标控件.使用transform,元素可以安装设定的值变形.旋转.缩放.倾斜. 语法: transform : none | <transform-function> [ <transform-function> ]* 也就是: transform: r