1.在html中设置一个飘窗的div,div中可以添加图片,添加文字通过css展现在飘窗中;

<!--飘窗-->
<div id="roll">
<img src="img/roll.jpg">
</div>

2.在css中对飘窗设置长宽,用postion进行定位;postion:fixed可以实现绝对定位,使图片始终处于可视窗口内

#roll {
height: 200px;
width: 200px;
position: fixed; /*fixed实现绝对定位*/
cursor:pointer;
}
#roll img{
height: 200px;
width: 200px; }

3.在JS中实现让飘窗实现漂浮的过程:

(1)获取飘窗id;

(2)设置飘窗速度,变化幅度,初始位置;

(3)使用documentElement获取可视化窗口的长宽,用可视化窗口的长宽分别减去飘窗的长宽即可得到飘窗可以移动的范围;

(4)令变化幅度的初始值为1;用statusX ?-1 :1(statusY ?-1 :1)来判断飘窗是否到达可视化窗口的左右(上下)边界,用this指针来完成图片每一次移动所改变的位置;

(5)最后用onmouseover和onmouseout来实现鼠标移动到飘窗上停止移动和移开鼠标飘窗继续运动;

4.JS具体实现代码

var ggRoll={                                     //创建对象直接量
roll:document.getElementById("roll"), //获取id属性为roll的对象
speed:20, //飘动速度,即为定时器函数多长时间执行一次
statusX:1, //规定每执行一次函数,left属性值变化的幅度
statusY:1, //规定每执行一次函数,top属性值变化的幅度
x:100, //规定初始状态下left属性的值
y:300, //规定初始状态下top属性的值
//差值用来测算left属性值的极限
winW:document.documentElement.clientWidth-document.getElementById("roll").offsetWidth,
//差值用来测算top属性值的极限
winH:document.documentElement.clientHeight-document.getElementById("roll").offsetHeight,
//声明函数
Go: function () {
//设置div的left属性值
this.roll.style.left = this.x + 'px';
//设置div的top属性值
this.roll.style.top = this.y + 'px';
//如果statusX=1则每次减少1px,否则减少1px
this.x = this.x + (this.statusX ? -1 : 1)
//如果left属性值小于0,也就是div要超出左边界了,就将statusX设置为0
if (this.x < 0) { this.statusX = 0 }
//如果top属性值大于winW,也就是div要超出右边界了,就将statusX设置为1
if (this.x > this.winW) { this.statusX = 1 } this.y = this.y + (this.statusY ? -1 : 1)
if (this.y < 0) { this.statusY = 0 }
if (this.y > this.winH) { this.statusY = 1 } }
}; var interval=setInterval("ggRoll.Go()",ggRoll.speed);
ggRoll.roll.οnmοuseοver=function(){clearInterval(interval)}; //onmouseover属性:鼠标移动到元素上时触发
ggRoll.roll.οnmοuseοut=function(){interval=setInterval("ggRoll.Go()",ggRoll.speed)};//onmouseout属性:鼠标离开元素时触发

JS实现网页飘窗的更多相关文章

  1. JS判断网页是否在微信中打开/

    JS判断网页是否在微信中打开,代码如下: <script type="text/javascript"> function is_weixn(){ var ua = n ...

  2. [原创]纯JS实现网页中多选复选框checkbox和单选radio的美化效果

    图片素材: 最终效果图: <html><title> 纯JS实现网页中多选复选框checkbox和单选radio的美化效果</title><head>& ...

  3. Ifvisible.js – 判断网页中的用户是闲置还是活动状态

    ifvisible.js 是一个跨浏览器.轻量级的方式,用户检查用户在浏览页面或正在与它进行交互.它可以处理活动状态,如在页面上空闲或活跃.您还可以使用 ifvisible.js 智能设置您的间隔,如 ...

  4. 【软件编程】乐易贵宾VIP教程 - JS改写+网页操作系列教程

    JS改写系列教程: 1.MD5加密改写教程(爱拍网登录)2.解密如何快速找到真确的js加密算法3.多重MD5加密改写教程(5173登录)4.DZ论坛登录加密改写5.唯品会手机登录加密改写6.新浪微博密 ...

  5. JS倒计时网页自动跳转代码

    <title>JS倒计时网页自动跳转代码</title> <script language="JavaScript" type="text/ ...

  6. js实现网页防止被iframe框架嵌套及几种location.href的区别

    首先我们了解一下几种location.href的区别简单的说:几种location.href的区别js实现网页被iframe框架功能,感兴趣的朋友可以了解下 首先我们了解一下:window.locat ...

  7. JS获取网页属性包括宽、高等

    JS获取网页属性包括宽.高等. function getInfo()  { // www.jbxue.com var s = "";  s += " 网页可见区域宽:&q ...

  8. JS获取网页宽高方法集合

    JS获取网页宽高等方法的集合:document.body.clientWidth - 网页可见区域宽document.body.clientHeight - 网页可见区域高 document.body ...

  9. js技术要点---JS 获取网页源代码

    JS 获取网页源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html& ...

随机推荐

  1. leetcode-mid-backtracking -78 Subsets

    mycode   86.06% class Solution(object): def subsets(self, nums): """ :type nums: List ...

  2. Eigen中的矩阵及向量运算

    Eigen中的矩阵及向量运算 ,[+,+=,-,-=] ,[\*,\*=] ,[.transpose()] ,[.dot(),.cross(),.adjoint()] ,针对矩阵元素进行的操作[.su ...

  3. loj#6034 「雅礼集训 2017 Day2」线段游戏

    分析 区间李超树板子题 代码 #include<bits/stdc++.h> using namespace std; #define db double const int inf = ...

  4. postgres 数据导入导出

    # 导出表结构 pg_dump  -U postgres -s helloworld > hello.sql  # 导出表数据 pg_dump  -U postgres helloworld & ...

  5. 吃着火锅唱着歌学会Docker

    第一篇:Docker概述 第二篇:Docker之版本与安装 第三篇:Docker之镜像 第四篇:Docker之容器 第五篇:Dcoker之容器与镜像 第六篇:Docker之网络管理 第七篇:Docke ...

  6. add_prefix()函数

    对于series,是给索引列加前缀. 对于Dataframe,是给列名加前缀. 参考:https://www.cjavapy.com/article/276/

  7. 2 日志系统:一条sql更新语句是如何执行的?

    2 日志系统:一条sql更新语句是如何执行的? 前面了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块,一条查询语句的执行过程一般是经过连接器.分析器.优化器.执行器等功能模块,最后达到e ...

  8. java 发送 http post 和 get 请求(利用unirest)

    调用服务器端的接口在前端调用,但是我们也会经常遇到在服务器后端调用接口的情况,网上的例子大部分都是用 jdk 原生的 URL realUrl = new URL(url); URLConnection ...

  9. linux 进程间共享内存示例

    写入端: #include <iostream> #include <unistd.h> #include <stdlib.h> #include <stdi ...

  10. 2.转发。基于itchat的微信消息同步机器人

    原文:https://www.jianshu.com/p/7aeadca0c9bd# 看到了该网址有基于itchat的微信消息同步机器人,转过来继续研究.以下是转过来的: 最近 全栈数据工程师养成攻略 ...