JS实现网页飘窗

news/2024/7/19 13:32:18 标签: js

JS实现网页飘窗

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.onmouseover=function(){clearInterval(interval)};                     //onmouseover属性:鼠标移动到元素上时触发
ggRoll.roll.onmouseout=function(){interval=setInterval("ggRoll.Go()",ggRoll.speed)};//onmouseout属性:鼠标离开元素时触发

 


http://www.niftyadmin.cn/n/1530219.html

相关文章

仿百度搜索框

仿百度搜索框自动补充搜索内容实现过程&#xff1a; 1.设置图片和搜索框两个div <div id"img"><img src"img/baidu.png"> </div> <div id"box"><input type"text" id"textSearch"><inpu…

吞吐量达到瓶颈后下降_无需人工干预,如何找到Kafka集群的吞吐量极限?

作者&#xff5c;Peng Kang 译者&#xff5c;阿拉丁 编辑&#xff5c;Debra AI 前线导读&#xff1a;Kafka 是非常流行的分布式流式处理和大数据消息队列解决方案&#xff0c;在技术行业已经得到了广泛采用&#xff0c;在 Dropbox 也不例外。Kafka 在 Dropbox 的很多分布式系统…

JS实现购物车

JS实现购物车 1.实现思路&#xff1a; &#xff08;1&#xff09;在body中定义一个id"list",将所有商品存放在一个列表中&#xff0c;当进入购物车时如果有两个商品被勾选了&#xff0c;需要计算出总共的价钱和商品的件数以及最贵的商品价格&#xff1b; &#xf…

学什么就业前景好的专业_8大类专业中就业前景好的10个专业,赶紧收藏起来

大学里哪些专业就业前景好、比较“热门”是广大考生和家长朋友们十分关心的问题&#xff0c;但是这么多专业和院校怎么选择呢&#xff1f;其实就业前景好的专业和国家发展现状离不开的&#xff0c;计算机、机械、电气、土木、医学等专业就业都是非常不错的&#xff0c;以下是为…

JS实现页面刷新的方法

1.JS实现普通页面刷新 测试页面&#xff1a; <!DOCTYPE html> <html> <head><title>页面刷新</title> </head> <body><h1 id"text">页面刷新</h1><button onclick"fresh()">刷新</butto…

非橙勿扰_非”橙“勿扰,可甜可盐的橙色系家居来了

橙色&#xff0c;是电磁波的可视光部分中的长波&#xff0c;界于红色和黄色之间的混合色。它是暖色系中最温暖的颜色&#xff0c;总是能给人种种温暖的情绪&#xff0c;枫叶的绚烂、橙子的甘香、麦田的丰盈、夕阳余晖的温暖......而属于橙色系的颜色也有很多&#xff0c;包括橘…

最大子段和问题蛮力法、分治法、动态规划法(C/C++)

最大子段和问题&#xff08;C/C&#xff09; 一、蛮力法 #include<iostream> using namespace std; int MaxSum(int a[], int n) {int i,j;int maxSum 0;for(i 0; i < n; i){int sum 0;for(j i; j < n; j){sum a[j];if(sum > maxSum){maxSum sum;}}}ret…

假币问题(C/C++)

假币问题 1.已知假币比真币轻 #include<iostream> using namespace std; const int N8; int a[N]{2,2,1,2,2,2,2,2}; int Coin(int low,int high,int n) {int i,num1,num2,num3;int add10,add20;if(n1)return low1;if(n%30)num1num2n/3;elsenum1num2n/31;num3n-num1-n…