网站之漂浮广告制作--前端

今天根据客户要求,需要在门户网站做一个会随机漂浮的小广告。码农的本能来了·······

一、代码:

(1)js

  1 <!--//公共脚本文件 main.js
  2 function addEvent(obj, evtType, func, cap) {
  3     cap = cap || false;
  4     if (obj.addEventListener) {
  5         obj.addEventListener(evtType, func, cap);
  6         return true;
  7     } else if (obj.attachEvent) {
  8         if (cap) {
  9             obj.setCapture();
 10             return true;
 11         } else {
 12             return obj.attachEvent("on" + evtType, func);
 13         }
 14     } else {
 15         return false;
 16     }
 17 }
 18 function removeEvent(obj, evtType, func, cap) {
 19     cap = cap || false;
 20     if (obj.removeEventListener) {
 21         obj.removeEventListener(evtType, func, cap);
 22         return true;
 23     } else if (obj.detachEvent) {
 24         if (cap) {
 25             obj.releaseCapture();
 26             return true;
 27         } else {
 28             return obj.detachEvent("on" + evtType, func);
 29         }
 30     } else {
 31         return false;
 32     }
 33 }
 34 function getPageScroll() {
 35     var xScroll, yScroll;
 36     if (self.pageXOffset) {
 37         xScroll = self.pageXOffset;
 38     } else if (document.documentElement && document.documentElement.scrollLeft) {
 39         xScroll = document.documentElement.scrollLeft;
 40     } else if (document.body) {
 41         xScroll = document.body.scrollLeft;
 42     }
 43     if (self.pageYOffset) {
 44         yScroll = self.pageYOffset;
 45     } else if (document.documentElement && document.documentElement.scrollTop) {
 46         yScroll = document.documentElement.scrollTop;
 47     } else if (document.body) {
 48         yScroll = document.body.scrollTop;
 49     }
 50     arrayPageScroll = new Array(xScroll, yScroll);
 51     return arrayPageScroll;
 52 }
 53 function GetPageSize() {
 54     var xScroll, yScroll;
 55     if (window.innerHeight && window.scrollMaxY) {
 56         xScroll = document.body.scrollWidth;
 57         yScroll = window.innerHeight + window.scrollMaxY;
 58     } else if (document.body.scrollHeight > document.body.offsetHeight) {
 59         xScroll = document.body.scrollWidth;
 60         yScroll = document.body.scrollHeight;
 61     } else {
 62         xScroll = document.body.offsetWidth;
 63         yScroll = document.body.offsetHeight;
 64     }
 65     var windowWidth, windowHeight;
 66     if (self.innerHeight) {
 67         windowWidth = self.innerWidth;
 68         windowHeight = self.innerHeight;
 69     } else if (document.documentElement && document.documentElement.clientHeight) {
 70         windowWidth = document.documentElement.clientWidth;
 71         windowHeight = document.documentElement.clientHeight;
 72     } else if (document.body) {
 73         windowWidth = document.body.clientWidth;
 74         windowHeight = document.body.clientHeight;
 75     }
 76     if (yScroll < windowHeight) {
 77         pageHeight = windowHeight;
 78     } else {
 79         pageHeight = yScroll;
 80     }
 81     if (xScroll < windowWidth) {
 82         pageWidth = windowWidth;
 83     } else {
 84         pageWidth = xScroll;
 85     }
 86     arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)
 87     return arrayPageSize;
 88 }
 89 //广告脚本文件 AdMove.js
 90 /*
 91 例子
 92 <div id="Div2">
 93 ***** content ******
 94 </div>
 95 var ad=new AdMove("Div2");
 96 ad.Run();
 97 */
 98 ////////////////////////////////////////////////////////
 99 var AdMoveConfig = new Object();
100 AdMoveConfig.IsInitialized = false;
101 AdMoveConfig.AdCount = 0;
102 AdMoveConfig.ScrollX = 0;
103 AdMoveConfig.ScrollY = 0;
104 AdMoveConfig.MoveWidth = 0;
105 AdMoveConfig.MoveHeight = 0;
106 AdMoveConfig.Resize = function () {
107     var winsize = GetPageSize();
108     AdMoveConfig.MoveWidth = winsize[2];
109     AdMoveConfig.MoveHeight = winsize[3];
110     AdMoveConfig.Scroll();
111 }
112 AdMoveConfig.Scroll = function () {
113     var winscroll = getPageScroll();
114     AdMoveConfig.ScrollX = winscroll[0];
115     AdMoveConfig.ScrollY = winscroll[1];
116 }
117 addEvent(window, "resize", AdMoveConfig.Resize);
118 addEvent(window, "scroll", AdMoveConfig.Scroll);
119 function AdMove(id, addCloseButton) {
120     if (!AdMoveConfig.IsInitialized) {
121         AdMoveConfig.Resize();
122         AdMoveConfig.IsInitialized = true;
123     }
124     AdMoveConfig.AdCount++;
125     var obj = document.getElementById(id);
126     obj.style.position = "absolute";
127     var W = AdMoveConfig.MoveWidth - obj.offsetWidth;
128     var H = AdMoveConfig.MoveHeight - obj.offsetHeight;
129     var x = W * Math.random(), y = H * Math.random();
130     var rad = (Math.random() + 1) * Math.PI / 6;
131     var kx = Math.sin(rad), ky = Math.cos(rad);
132     var dirx = (Math.random() < 0.5 ? 1 : -1), diry = (Math.random() < 0.5 ? 1 : -1);
133     var step = 1;
134     var interval;
135     if (addCloseButton) {
136         var closebtn = document.createElement("div");
137         obj.appendChild(closebtn);
138 
139         closebtn.onclick = function () {
140             obj.style.display = "none";
141             clearInterval(interval);
142             closebtn.onclick = null;
143             obj.onmouseover = null;
144             obj.onmouseout = null;
145             obj.MoveHandler = null;
146             AdMoveConfig.AdCount--;
147             if (AdMoveConfig.AdCount <= 0) {
148                 removeEvent(window, "resize", AdMoveConfig.Resize);
149                 removeEvent(window, "scroll", AdMoveConfig.Scroll);
150                 AdMoveConfig.Resize = null;
151                 AdMoveConfig.Scroll = null;
152                 AdMoveConfig = null;
153             }
154         }
155     }
156     obj.MoveHandler = function () {
157         obj.style.left = (x + AdMoveConfig.ScrollX) + "px";
158         obj.style.top = (y + AdMoveConfig.ScrollY) + "px";
159         rad = (Math.random() + 1) * Math.PI / 6;
160         W = AdMoveConfig.MoveWidth - obj.offsetWidth;
161         H = AdMoveConfig.MoveHeight - obj.offsetHeight;
162         x = x + step * kx * dirx;
163         if (x < 0) { dirx = 1; x = 0; kx = Math.sin(rad); ky = Math.cos(rad); }
164         if (x > W) { dirx = -1; x = W; kx = Math.sin(rad); ky = Math.cos(rad); }
165         y = y + step * ky * diry;
166         if (y < 0) { diry = 1; y = 0; kx = Math.sin(rad); ky = Math.cos(rad); }
167         if (y > H) { diry = -1; y = H; kx = Math.sin(rad); ky = Math.cos(rad); }
168     }
169     this.SetLocation = function (vx, vy) { x = vx; y = vy; }
170     this.SetDirection = function (vx, vy) { dirx = vx; diry = vy; }
171     this.Run = function () {
172         var delay = 10;
173         interval = setInterval(obj.MoveHandler, delay);
174         obj.onmouseover = function () { clearInterval(interval); }
175         obj.onmouseout = function () { interval = setInterval(obj.MoveHandler, delay); }
176     }
177 }
178 //-->
View Code


(2)页面

 1 <!--广告漂浮-->
 2     <script src="../../Scripts/sysMgrJs/floatadv.js" type="text/javascript"></script>
 3     <script type="text/javascript">
 4         $(function () {
 5             var guangGao = function () {
 6                 this.initCloseClick = function () {
 7                     $("#closepiaofu").click(function () {
 8                         $("#wzsse").hide();
 9                     });
10                 };
11                 this.initMove = function () {
12                     var ad1 = new AdMove("wzsse", true);
13                     ad1.Run();
14                 };
15                 this.init = function () {
16                     this.initCloseClick();
17                     this.initMove();
18                 };
19                 this.init();
20             };
21             guangGao();
22         }) 
23     </script>
24    <div id="wzsse">
25         <div class="guanggao-head"> 热点咨询
26             <div id="closepiaofu">
27                 关闭</div>
28         </div>
29         <div id="guanggao-content-list">
30         
31         </div>
32         <div class="more-guanggao-div"><label id="more-guanggao"><a href="../Hotquestion/Index">更多>></a></label></div>        
33     </div>
View Code

(3)CSS

 1 /*******广告 漂浮**********/
 2 #wzsse
 3 {
 4    position: absolute;
 5    z-index:99999999;
 6    border:1px solid #1f6bdf;
 7 }
 8 .guanggao-head
 9 {
10     position:relative;
11     bottom:0px;
12     height:25px;
13     line-height:25px;
14     vertical-align:middle;
15     background:#1f6bdf;
16     font-size:15px;
17     font-family:@宋体;
18     font-weight:normal;
19     padding-left:5px;
20     color:#a8c9ea;
21 }
22 #closepiaofu
23 {
24     position:absolute;
25     40px;
26     top:0px;
27     right:1px;
28     text-align:center;
29     font-size:12px;
30     font-family:@宋体;
31     font-weight:normal;
32     color:#fff;
33     cursor:pointer;
34 }
35 #guanggao-content-list
36 {
37     position:relative;
38     220px;
39     height:220px;
40     background:#fff;
41 }
42 .more-guanggao-div
43 {
44     background:#fff;
45 }
46 #more-guanggao
47 {
48     margin-left:170px;
49     font-size:12px;    
50 }
51 #more-guanggao a
52 {
53     color:#8ba1aa;
54 }
View Code

二、效果

原文地址:https://www.cnblogs.com/dean-Wei/p/3927425.html