原生JS实现漂浮广告的一种方法(Demo)
来源:互联网 发布:淘宝整点秒杀怎么设置 编辑:程序博客网 时间:2024/05/01 00:27
实现效果 : 打开网页后,广告窗从指定位置开始在页面漂浮,当鼠标移入时窗口暂停运动,鼠标移出后,窗口在暂停处按原运动轨迹运动,窗口可关闭.
思路 : 实现运动效果需要依托定位属性,使用定时器重复执行代码改变定位,获得漂浮效果;设定不同的x(宽度)和y(高度)方向上每次改变的像素值,实现不同的漂浮轨迹;判断运动窗口达到可视区域边界时,改变x或y的正负值,实现反弹.
———————————更新———————————-
冷风吹醒(手动实验) :
element.style.left(/height/top/width)的使用 :
在元素的css样式被初始赋值,未经后续赋值,此时element.style.left值为空(无论left初始值为多少),经过后续赋值后才会有值.
完整代码如下:
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ //全局reset padding: 0; margin: 0; } #advts{ position: absolute; /*left: 0; 这儿有个problem top: 0;*/ width: 300px; height: 250px; background: url(pics/bg.jpg) no-repeat; /*设置广告框的背景图片*/ } </style><script type="text/javascript"> window.onload=function(){ //加载整个页面 var advts = document.getElementById("advts"); //抓取元素 var std = document.getElementsByTagName("std"); var max_height = document.documentElement.clientHeight; //获得浏览器可视区域尺寸 var max_width = document.documentElement.clientWidth; var h = max_height-advts.offsetHeight; //获得广告窗最大left和top var w = max_width-advts.offsetWidth; var upright = 1; //初始化漂浮速度 var cross =2; var timer; function run(){ var old_left = advts.style.left; //将新值赋值给旧值,改变定位获得动态效果 var new_left = parseInt(old_left)+cross; if (new_left>w) { //判断是否超过可视区域,true则在赋值前改为最大值,防止撑出滚动条 new_left=w; alert(new_left); } if (new_left<0) { new_left=0; } advts.style.left = new_left+'px'; if (new_left==w||new_left==0) { cross=cross*(-1); //改变运动方向 } var old_top = advts.style.top; var new_top = parseInt(old_top)+upright; if (new_top>h) { new_top=h; } if (new_top<0) { new_top=0; } advts.style.top = new_top+'px'; if (new_top==h||new_top==0) { upright=upright*(-1); } } timer = setInterval(run,20); //设置定时器重复执行函数,得到漂浮效果 advts.onmouseover=function(){ //鼠标移入事件,取消定时器,停止广告框 clearInterval(timer); } advts.onmouseout=function(){ //鼠标移出事件,重新设置定时器,接着运动 timer = setInterval(run,20); } std.onclick=function(){ //鼠标点击事件,将广告框display属性修改达,到隐藏效果 advts.style.display='none'; }// advts.onclick=function(){ 这个效果未能实现,将在博客末尾中说明// location.assign('http://bing.com');// } window.onresize=function(){ //窗口尺寸改变事件,重新计算尺寸,和初始化运动速度和方向 advts.style.left=0; advts.style.top=0; max_height = document.documentElement.clientHeight; max_width = document.documentElement.clientWidth; h = max_height-advts.offsetHeight; w = max_width-advts.offsetWidth; upright = 1; cross =2; } }</script> </head> <body> <div id="advts" style="left: 0;top: 0;" display='block'> <!--设置行内(内联)样式--> <img src="pics/shutdown.png" class="std"/> <!--在广告窗中加入关闭图标--> </div> </body></html>
曾令我不知所措的有 :
Q1 : 如何使用代码获得浏览器可视窗口?
A1 : 获得可视高度 document.documentElement.clientHeight;
获得可视宽度 document.documentElement.clientWidth;
Q2 : Q1…
依旧困扰的还有:
Q3 : 在JS中如何获取和修改除行内样式以外的CSS元素内容?(已解决)
说明: (1)element.getAttribute(“”);方法可以获取如id,class等特定和自定义属性,但是style中的如width如何获取?用setAttribute(“”,”“);方法修改内容?
(2)当前样式可用getComputedStyle(‘element’).width或element.CurrentStyle.width获取,那么如何修改呢?
Q4 : 若给广告窗口加< a >标签,或者绑定事件使其跳转(关闭图标在窗口内),那么如何实现点击关闭图标时隐藏窗口而不跳转到链
接呢?
以上内容学习参考了后盾网孙琪峥老师的公共教学资源,侵权删.
欢迎指导交流.
- 原生JS实现漂浮广告的一种方法(Demo)
- JS--实现漂浮广告
- JS 实现网页漂浮广告
- js实现广告漂浮效果
- js实现网页漂浮广告
- 兼容的漂浮广告(js)
- 一段漂浮广告的js
- JS实现网页漂浮广告效果简单
- HTML网页漂浮广告原理js实现
- 漂浮广告的JS代码(经典)
- 一种JS实现的广告打开特效
- JS漂浮广告代码
- js漂浮广告代码
- js广告漂浮类
- 漂浮广告js代码
- js漂浮广告
- JS漂浮广告代码
- JS漂浮广告代码
- java设计模式—分类
- JavaSE程序分析004 JVM常量池的小事情
- 并查集的使用及其实现
- 微信支付集成简介
- linux怎样使用top命令查看系统状态
- 原生JS实现漂浮广告的一种方法(Demo)
- Ajax-load
- HTML5基础加强css样式篇(css过度效果:界面的浮层遮罩和消失)(十九)
- python __slots__ 使你的代码更加节省内存
- buildroot认知
- VS2012+PCL1.7.2+OpenNI
- jsp报错:Multiple annotations found at this line
- heap_init
- poj 1006 Biorhythms