javascript原生脚本代码(飘浮广告)
也算是给自己复习了一遍吧,下面飘浮广告的javascript原生代码和注释;加油程序猿们!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>飘浮广告</title>
<style type="text/css">
/**
* 设置样式
* 一 、 考虑内外填充;
* 二 、 飘浮广告必须是绝对定位;
* 三 、 根据功能需求 可添加关闭或超链接等功能;
*/
*{margin: 0;padding: 0;font-size: 10px;}
#float{
width: 135px;
height: 138px;
list-style: none;
position: absolute;
border: 1px dotted #BEBEBE;
}
#close{
width: 20px;
height: 20px;
display: inline-block;
float: right;
}
#float dd img{
width: 135px;
}
</style>
<!-- 以下为javascript原生代码 -->
<script type="text/javascript">
//通过点击叉号图片关闭飘浮广告弹窗
function closeFloat(){
document.getElementById('float').style.display='none';
}
//根据iD得到对象函数&方法
function $(id){
return document.getElementById(id);
}
// x轴 定义初始值为0px 可以让广告初始贴服浏览器窗口最左侧 此值需进行计算累加 单位px后续追加
var xPos = 0 ;
// y轴 定义初始值为0px 可以让广告初始贴服浏览器窗口最上侧 此值需进行计算累加 单位px后续追加
var yPos = 0 ;
// 定义变量xon 用于后续判断 飘浮广告是否达已在浏览器最左侧或者最右侧 如果是最左侧 赋值为0 最右侧 赋值为1
var xon = 0 ;
// 定义变量yon 用于后续判断 飘浮广告是否达已在浏览器最上方或者最下侧 如果是最上方 赋值为0 最下方 赋值为1
var yon = 0 ;
// 定义一个移动速度的变量
var step = 1 ;
/**
* 实现一次位移的方法(函数)
* 添加计时器循环此方法 即可完成飘浮窗口持续移动的功能
*/
function changePos(){
//获取浏览器页面宽度
var width = document.documentElement.clientWidth;
//获取浏览器页面长度
var height = document.documentElement.clientHeight;
//获取飘浮广告层的宽度
var Woffset = $('float').offsetWidth;
//获取飘浮广告层的长度
var Hoffset = $('float').offsetHeight;
// 变化x轴坐标 注意单位的拼接
$('float').style.left = (xPos+document.documentElement.scrollLeft||document.body.scrollLeft)+'px';
// 变化y轴坐标 注意单位的拼接
$('float').style.top = (yPos+document.documentElement.scrollTop||document.body.scrollTop)+'px';
// xon 等于 0 代表已经飘浮广告层没有到达浏览器窗口的最右侧
if(xon==0){
// 那么 飘浮广告层应 从左往右 移动
xPos = xPos + step ;
}else{
// 否则 取反
xPos = xPos - step ;
}
// 如果 xPos 小于0 代表 漂浮广告窗口已经到达浏览器的最左侧
if(xPos < 0){
// 将x轴坐标更新 变为0 确保飘浮广告层不溢出浏览器屏幕
xPos = 0 ;
// xon等于0 后续飘浮广告将会从右往左移动
xon = 0 ;
}
/**
* 如果飘浮广告层已到达最右侧
* xPos 飘浮广告的位置 已经大于等于 窗口大小减去飘浮广告层的位置
*/
if(xPos>=(width-Woffset)){
// xon 等于 1 后续将会由右向左移动柜
xon = 1 ;
// 确保飘浮广告层不溢出浏览器界面
xPos = (width-Woffset);
}
// yon 等于 0 代表漂浮广告没有到达浏览器最下方
if(yon==0){
//那么 飘浮广告 由上往下移动
yPos = yPos + step ;
}else{
//否则 取反
yPos = yPos - step ;
}
// yPos小于0 代表已经到达浏览器最上方
if(yPos < 0){
// yPos 等于0 确保飘浮广告层不溢出
yPos = 0 ;
// yon 等于0 后续由上至下移动
yon = 0 ;
}
// 如果飘浮广告已经到达浏览器最下方
if(yPos>=(height-Hoffset)){
// 那么后续应该往上移动
yon = 1 ;
// yPos 等于0 确保飘浮广告不溢出
yPos = (height-Hoffset) ;
}
/**
* 计时器 递归
* result 用于鼠标onmouseover事件
*/
result = window.setTimeout('changePos()',20) ;
}
// 当浏览器页面加载完成 调用changePos方法 用于后续飘浮广告层的执行
window.onload=changePos ;
// 鼠标onmouseover事件 用于暂停飘浮广告层移动
function stop(){
// 停止 飘浮广告的移动
clearTimeout(result) ;
}
// 鼠标onmouseout事件 用户鼠标离开 再次启动飘浮广告的执行
function goOn(){
//引用 changePos 方法
changePos() ;
}
</script>
</head>
<body>
<dl id="float" onmouseover="stop()" onmouseout="goOn()">
<img id="close" src="img/timg.jpg" onclick="closeFloat()" >
<dt>英国新冠变异,传播性高出70%!伦敦紧急封锁!</dt>
<dd><img src="img/u=888214850,2094894360&fm=173&app=49&f=JPEG.jpg" ></dd>
</dl>
</body>
</html>