css:

.close {
width: 30px;
height: 20px;
background: white;
position: absolute;
right: 0;
top: 0;
z-index: 999;
font-size: 12px;
text-align: center;
line-height: 20px;
cursor: pointer;
font-family: '微软雅黑';
}

  

js:【修改了一些bug】

window.onload = function () {

        /*
参数
1. 创建飘窗,填写飘窗的id;
2. 选择该飘窗是否显示,true显示,false不显示,默认为false,不显示;
3. 该飘窗的配置信息, xPos,yPos 飘窗的起始位置,默认为左上角,
imgWidth,imgHeight 飘窗的大小,默认为w: 310,h: 200,
href 要跳转的链接,默认不跳转,
imgSrc 图片的链接,默认为空。
*/
var fl1 = new FloatWindow('win', true, {
xPos: 100,
yPos: 100,
href: 'http://websong.wang',
imgSrc: 'https://bpic.588ku.com/art_origin_min_pic/18/07/08/02ced7cd66e3a1341391af9ceb90ec62.jpg'
}); } var FloatWindow = function (ele, flag, config) { flag = flag ? true : false; this.opt = this.extend({
xPos: 0,
yPos: 0,
imgWidth: 100,
imgHeight: 100,
href: 'javascript:void(0)',
imgSrc: '',
step: 1,
height: 0,
Hoffset: 0,
Woffset: 0,
xon: 0,
yon: 0
}, config); var html = '<span id="' + ele + '" class="floatWin" style="position:absolute; z-index: 1000;" >' +
'<a href="' + this.opt.href + '" target="_blank">' +
'<img src="' + this.opt.imgSrc + '" border="0">' +
'</a>' +
'<div class="close">关闭</div>' +
'</span>';
var div = document.createElement('div');
div.innerHTML = html; if (flag) {
document.body.appendChild(div);
} else {
return;
} if (document.querySelector('#'+ele).length <= 0) {
return;
} this.ele = document.querySelector('#'+ele);
this.interval;
this.delay = 10; this.ele.querySelector('img').style['width'] = this.opt.imgWidth + 'px';
this.ele.querySelector('img').style['height']= this.opt.imgHeight + 'px'; var _self = this; this.ele.onmouseout = function () {
_self.start();
} this.ele.onmouseover = function () {
_self.stop();
} this.ele.onclick = function (e) {
if (e.target.className === 'close')
_self.stop();
document.body.removeChild(div);
} changePos = function (ele, moveCfg) {
width = document.documentElement.clientWidth || document.body.clientWidth;
height = document.documentElement.clientHeight || document.body.clientHeight;
Hoffset = ele.offsetHeight;
Woffset = ele.offsetWidth;
if (moveCfg.yon) {
moveCfg.yPos = moveCfg.yPos + moveCfg.step;
} else {
moveCfg.yPos = moveCfg.yPos - moveCfg.step;
}
if (moveCfg.yPos < 0) {
moveCfg.yon = 1;
moveCfg.yPos = 0;
}
if (moveCfg.yPos >= (height - Hoffset)) {
moveCfg.yon = 0;
moveCfg.yPos = (height - Hoffset);
}
if (moveCfg.xon) {
moveCfg.xPos = moveCfg.xPos + moveCfg.step;
} else {
moveCfg.xPos = moveCfg.xPos - moveCfg.step;
}
if (moveCfg.xPos < 0) {
moveCfg.xon = 1;
moveCfg.xPos = 0;
}
if (moveCfg.xPos >= (width - Woffset)) {
moveCfg.xon = 0;
moveCfg.xPos = (width - Woffset);
}
ele.style.left = moveCfg.xPos + document.body.scrollLeft + "px";
ele.style.top = moveCfg.yPos + document.documentElement.scrollTop + "px";
} this.start();
} FloatWindow.prototype.start = function () {
var that = this;
this.ele.visibility = 'visible';
this.interval = setInterval(function () {
changePos(that.ele, that.opt);
}, this.delay);
} FloatWindow.prototype.stop = function () {
clearInterval(this.interval)
} FloatWindow.prototype.extend = function (o, e) {
for (var key in e) {
if (e[key]) {
o[key] = e[key];
}
}
return o;
}

  

飘窗原生js效果的更多相关文章

  1. js 字符串分割成字符串数组 遍历数组插入指定DOM里 原生JS效果

    使用的TP3.2 JS字符串分割成字符串数组 var images='{$content.pictureurl} ' ;结构是这样 attachment/picture/uploadify/20141 ...

  2. 原生js实现单屏滚动

    类似于fullpage的单屏滚动,使用原生JS实现,不依赖任何js库: css: html,body {height:100%;} body {margin:0px;} div {height:100 ...

  3. 原生JS实现"旋转木马"效果的图片轮播插件

    一.写在最前面 最近都忙一些杂七杂八的事情,复习软考.研读经典...好像都好久没写过博客了... 我自己写过三个图片轮播,一个是简单的原生JS实现的,没有什么动画效果的,一个是结合JQuery实现的, ...

  4. React.js实现原生js拖拽效果及思考

    一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...

  5. 原生JS封装简单动画效果

    原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ...

  6. 原生JS实现分页效果2.0(新增了上一页和下一页,添加当前元素样式)

    虽然写的很烂,但至少全部都是自己写的,因为这个没有固定的顺序,所以就没有封装,如果你技术好的话,可以你写的分享给我,谢谢. <!DOCTYPE html><html lang=&qu ...

  7. 原生JS实现分页效果1.0

    不太完整,写的太急,等等加上完整注释,写起来还是有些难度的,写的有点水,后面再改进改进. <!DOCTYPE html><html lang="en">&l ...

  8. 原生js动画效果(源码解析)

    在做页面中,多数情况下都会遇到页面上做动画效果,大部分都是用jquery来实现动画,今天正好看到一篇原生js实现动画效果的代码,特分享在此. 原文地址:http://www.it165.net/pro ...

  9. 利用tween,使用原生js实现模块回弹动画效果

    最近有一个需求,就是当屏幕往下一定像素时,下方会有一个隐藏的模块马上显现出来,向上运动后带有回弹效果.然后屏幕滚回去时这个模块能够原路返回 其实这个效果css3就可以很轻松实现,但是公司要求最低兼容i ...

随机推荐

  1. Canny边缘检测算法原理及其VC实现详解(一)

    转自:http://blog.csdn.net/likezhaobin/article/details/6892176 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个 ...

  2. mysqldump 和 sql命令导入sql文件

    注意:不是进入mysql命令行操作的::: mysqldump -uroot -p --database x3gbk >x3gbk.sql 回车会出发,输入密码; 直接在-p后输入密码,有时候这 ...

  3. 深度学习voc数据集图片resize

    本人新写的3个pyhton脚本. (1)单张图片的resize: # coding = utf-8 import Image def convert(width,height): im = Image ...

  4. CIFAR10/CIFAR100数据集介绍

    CIFAR-10/CIFAR-100数据集解析 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 CIFAR-10/CIFAR-100数据集 CIFAR-10和CIFAR-100被标记 ...

  5. CountUp.js让页面数字跳动起来

    CountUp.js 无依赖的.轻量级的 JavaScript 类,可以用来快速创建以一种更有趣的动画方式显示数值数据.尽管它的名字叫 countUp,但其实可以在两个方向进行变化,这是根据你传递的 ...

  6. bzoj 2820 / SPOJ PGCD 莫比乌斯反演

    那啥bzoj2818也是一样的,突然想起来好像拿来当周赛的练习题过,用欧拉函数写掉的. 求$(i,j)=prime$对数 \begin{eqnarray*}\sum_{i=1}^{n}\sum_{j= ...

  7. SQLServer字符串的一些截取技巧

    先看一张科学家的生卒年月表 截取科学家的出生年份可以很方便的用left函数截取,如果要截取去世年份,需要先获取字符“—”的位置. select substring(c,charindex('—',c) ...

  8. 原生js写的一个简单slider

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 针对移动设备的CSS3布局

    针对移动设备的CSS3布局 一些专业人士预测五年内移动设备将击败普通电脑成为网页浏览领域的霸主,不管这个预言是否应验,让网页在移动设备上较好的显示已经成为网页设计师和开发者的重要任务,本教程学习用CS ...

  10. lintcode 40. 用栈实现队列

    使用两个栈来回倒腾可以实现队列. AC代码: import java.util.Stack; public class Queue { private Stack<Integer> sta ...