极乐门资源网 Design By www.ioogu.com
话不多说,请看代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>放大镜-原生js封装</title> <link rel="shortcut icon" href="../public/image/favicon.ico" type="images/x-icon"/> <link rel="icon" href="../public/image/favicon.png" type="images/png"/> <link rel="stylesheet" type="text/css" href="../public/style/cssreset-min.css"> <link rel="stylesheet" type="text/css" href="../public/style/common.css"> <style type="text/css"> /*公共*/ html{ height:100%; } body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td { margin: 0; padding: 0 } body{ position: relative; min-height:100%; font-size:14px; font-family: Tahoma, Verdana,"Microsoft Yahei"; color:#333; } a{ text-decoration: none; color:#333; } .header{ width: 960px; padding-top: 15px; margin: 0 auto; line-height: 30px; text-align: right; } .header a{ margin: 0 5px; } .main{ width:960px; margin: 50px auto 0; } .code{ border:1px dashed #e2e2e2; padding:10px 5px; margin-bottom:25px; } pre { font-family: "Microsoft Yahei",Arial,Helvetica; white-space: pre-wrap; /*css-3*/ white-space: -moz-pre-wrap; /*Mozilla,since1999*/ white-space: -pre-wrap; /*Opera4-6*/ white-space: -o-pre-wrap; /*Opera7*/ word-wrap: break-word; /*InternetExplorer5.5+*/ } .example{ padding-top:40px; margin-bottom:90px; } .example .call{ padding:18px 5px; background:#f0f5f8; } .example h2{ padding-top:20px; margin-bottom:7px; } .example table { width:100%; table-layout:fixed; border-collapse: collapse; border-spacing: 0; border: 1px solid #cee1ee; border-left: 0; } .example thead { border-bottom: 1px solid #cee1ee; background-color: #e3eef8; } .example tr { line-height: 24px; font-size: 13px; } .example tr:nth-child(2n) { background-color: #f0f5f8; } .example tr th,.example tr td { border-left: 1px solid #cee1ee; word-break: break-all; word-wrap: break-word; padding:0 10px; font-weight: normal; } .example tr th { color: #555; padding-top: 2px; padding-bottom: 2px; text-align: left; } /*公共*/ .magnifier-box{ margin-bottom: 15px; } .magnifier-container{ width: 400px; height: 255px; margin: 50px; position: relative; border: 1px solid #ccc; } .magnifier-small{ position: relative; z-index: 1; width: 100%; height: 100%; overflow: hidden; } .magnifier-small img{ /*max-width: 100%; max-height: 100%;*/ } .magnifier-mark { position: absolute; display: block; width: 400px; height: 255px; background-color: #fff; filter: alpha(opacity:0); opacity: 0; z-index: 10; } .magnifier-float-box { display: none; width: 160px; height: 120px; position: absolute; background: #ffffcc; border: 1px solid #ccc; filter: alpha(opacity:50); opacity: 0.5; } .magnifier-big-box { display: none; position: absolute; top: 0; left: 460px; width: 400px; height: 300px; overflow: hidden; border: 1px solid #ccc; z-index: 1; } .magnifier-big-box img { position: absolute; z-index: 5; } .magnifier-thumb{} .magnifier-thumb li{ display: inline-block; width: 50px; height: 50px; vertical-align: middle; line-height: 50px; margin-right: 5px; border: 2px solid #fff; /*display: table-cell;*/ } .magnifier-thumb li.active{ border-color: #f40; } .magnifier-thumb li img{ max-width: 50px; max-height: 50px; vertical-align: middle; } </style> <script type="text/javascript"> /*封装代码*/ (function() { var Magnifier = function(el, opts) { var self = this; var defaults = { event: "mouseover", } opts = opts || {}; for (var w in defaults) { if ("undefined" == typeof opts[w]) { opts[w] = defaults[w]; } } this.params = opts; this.container = r(el); if (this.container.length > 1) { var x = []; return this.container.each(function() { x.push(new Magnifier(this, opts)) }), x } this.containers = this.container[0]; this.contbox = this.container.find(".magnifier-container")[0]; this.conmain = this.container.find(".magnifier-container")[0]; this.init(); } Magnifier.prototype = { init: function() { var self = this; this.rendDom(); this.mark = this.container.find(".magnifier-mark")[0]; this.float_box = this.container.find(".magnifier-float-box")[0]; this.big_box = this.container.find(".magnifier-big-box"); this.small = this.container.find(".magnifier-small")[0]; this.big_Image = this.big_box.find("img")[0]; this.event(); }, //渲染dom rendDom: function() { var self = this; var initimg = this.container.find(".magnifier-thumb li img")[0].getAttribute("src"); var initimgs = this.container.find(".magnifier-thumb li img")[0].getAttribute("data-source"); var small = document.createElement("div"); small.className = "magnifier-small"; var mark = document.createElement("div"); mark.className = "magnifier-mark"; var float = document.createElement("div"); float.className = "magnifier-float-box"; var img = document.createElement("img"); img.setAttribute("src", initimg) small.appendChild(mark); small.appendChild(float); small.appendChild(img); var big_box = document.createElement("div"); big_box.className = "magnifier-big-box"; var boximg = document.createElement("img"); boximg.setAttribute("src", initimgs); big_box.appendChild(boximg); this.conmain.appendChild(small); this.conmain.appendChild(big_box); this.boximg = this.container.find(".magnifier-small img")[0]; this.tabimg(); }, //执行切换图片 tabimg: function() { var self = this; this.tabimgs = this.conmain = this.container.find(".magnifier-thumb li"); for (var i = 0; i < this.tabimgs.length; i++) { self.tabimgs[i].addEventListener(this.params.event, function() { for (var j = 0; j < self.tabimgs.length; j++) { self.tabimgs[j].className = ""; } this.className = "active"; var onec = this.children[0].getAttribute("src"); var onecd = this.children[0].getAttribute("data-source"); self.change(onec, onecd); }, false); } }, //改变大小图片 change: function(o, b) { this.boximg.setAttribute("src", o); this.big_Image.setAttribute("src", b); }, //执行初始化鼠标事件 event: function() { var self = this; self.mark.addEventListener('mouseover', function() { self.float_box.style.display = "block"; self.big_box[0].style.display = "block"; }, false); self.mark.addEventListener('mouseout', function() { self.float_box.style.display = "none"; self.big_box[0].style.display = "none"; }, false); self.mark.addEventListener('mousemove', function(e) { var e = e || window.event; //兼容多个浏览器的event参数模式 self.moveevent(e) }, false); }, //开始移动 moveevent: function(e) { var self = this; var left = e.clientX - this.contbox.offsetLeft - this.small.offsetLeft - this.float_box.offsetWidth / 2; var top = e.clientY - this.contbox.offsetTop - this.small.offsetTop - this.float_box.offsetHeight / 2; if (left < 0) { left = 0; } else if (left > (this.mark.offsetWidth - this.float_box.offsetWidth)) { left = this.mark.offsetWidth - this.float_box.offsetWidth; } if (top < 0) { top = 0; } else if (top > (this.mark.offsetHeight - this.float_box.offsetHeight)) { top = this.mark.offsetHeight - this.float_box.offsetHeight; } this.float_box.style.left = left + "px"; this.float_box.style.top = top + "px"; var percentX = left / (this.mark.offsetWidth - this.float_box.offsetWidth); var percentY = top / (this.mark.offsetHeight - this.float_box.offsetHeight); this.big_Image.style.left = -percentX * (this.big_Image.offsetWidth - this.big_box[0].offsetWidth) + "px"; this.big_Image.style.top = -percentY * (this.big_Image.offsetHeight - this.big_box[0].offsetHeight) + "px"; } } var r = (function() { var e = function(e) { var a = this, t = 0; for (t = 0; t < e.length; t++) { a[t] = e[t]; } return a.length = e.length, this }; e.prototype = { addClass: function(e) { if ("undefined" == typeof e) return this; for (var a = e.split(" "), t = 0; t < a.length; t++) for (var r = 0; r < this.length; r++) this[r].classList.add(a[t]); return this }, each: function(e) { for (var a = 0; a < this.length; a++) e.call(this[a], a, this[a]); return this }, html: function(e) { if ("undefined" == typeof e) return this[0] "string" == typeof a) { var i = document.createElement("div"); for (i.innerHTML = a; i.firstChild;) this[t].appendChild(i.firstChild) } else if (a instanceof e) for (r = 0; r < a.length; r++) this[t].appendChild(a[r]); else this[t].appendChild(a); return this }, } var a = function(a, t) { var r = [], i = 0; if (a && !t && a instanceof e) { return a; } if (a) { if ("string" == typeof a) { var s, n, o = a.trim(); if (o.indexOf("<") >= 0 && o.indexOf(">") >= 0) { var l = "div"; for (0 === o.indexOf("<li") && (l = "ul"), 0 === o.indexOf("<tr") && (l = "tbody"), (0 === o.indexOf("<td") || 0 === o.indexOf("<th")) && (l = "tr"), 0 === o.indexOf("<tbody") && (l = "table"), 0 === o.indexOf("<option") && (l = "select"), n = document.createElement(l), n.innerHTML = a, i = 0; i < n.childNodes.length; i++) r.push(n.childNodes[i]) } else for (s = t || "#" !== a[0] || a.match(/[ .<>:~]/) "#")[1])], i = 0; i < s.length; i++) s[i] && r.push(s[i]) } else if (a.nodeType || a === window || a === document) { r.push(a); } else if (a.length > 0 && a[0].nodeType) { for (i = 0; i < a.length; i++) { r.push(a[i]); } } } return new e(r) }; return a; }()) window.magnifier = Magnifier; })() /*封装代码*/ </script> </head> <body> <div class="header"> <a href="https://github.com/huanghanzhilian/widget" target="_blank">项目地址</a> <a href="/widget/">返回首页</a> </div> <div class="main"> <div class="magnifier-box" id="magnifier1"> <div class="magnifier-container"></div> <ul class="magnifier-thumb"> <li class="active"> <img src="/UploadFiles/2021-04-02/c2.jpg">以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
标签:
原生js,放大镜
极乐门资源网 Design By www.ioogu.com
极乐门资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
极乐门资源网 Design By www.ioogu.com
暂无原生js实现放大镜效果的评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月19日
2024年11月19日
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】
- 伊能静.1999-从脆弱到勇敢1987-1996精选2CD【华纳】【WAV+CUE】
- 刘亮鹭《汽车DJ玩主》[WAV+CUE][1.1G]
- 张杰《最接近天堂的地方》天娱传媒[WAV+CUE][1.1G]
- 群星《2022年度发烧天碟》无损黑胶碟 2CD[WAV+CUE][1.4G]
- 罗文1983-罗文甄妮-射雕英雄传(纯银AMCD)[WAV+CUE]
- 群星《亚洲故事香港纯弦》雨果UPMAGCD2024[低速原抓WAV+CUE]
- 群星《经典咏流传》限量1:1母盘直刻[低速原抓WAV+CUE]
- 庾澄庆1993《老实情歌》福茂唱片[WAV+CUE][1G]
- 许巍《在别处》美卡首版[WAV+CUE][1G]
- 林子祥《单手拍掌》华纳香港版[WAV+CUE][1G]
- 郑秀文.1997-我们的主题曲【华纳】【WAV+CUE】
- 群星.2001-生命因爱动听电影原创音乐AVCD【MEDIA】【WAV+CUE】