模仿Bootstrap插件的放大镜插件

/**该插件的使用基于jQuery**/

var mymagnifier=function(opts){
opts = mymagnifier.prototype.extendObj(mymagnifier.prototype.defaults,opts);
mymagnifier.prototype.magnifier(opts);
}
/**默认参数块**/
mymagnifier.prototype.defaults = {
img:"img",
bigimg:"bigs",
mark:"mark"
};

mymagnifier.prototype.magnifier=function(opts){
var img = document.getElementById(opts.img);
var bigimg = document.getElementById(opts.bigimg);
var mark = document.getElementById(opts.mark);
var magnifier=img.parentNode;
console.log(magnifier.className+"+"+magnifier.getBoundingClientRect().left+"+"+magnifier.getBoundingClientRect().top);
var x,y,l,t,L,T,mL,mT;
img.onmouseover=function(){
mark.style.display="block";
bigimg.style.display="block";
}
img.onmouseout=function(){
mark.style.display="none";
bigimg.style.display="none";
}
img.onmousemove=function(e){
//获取鼠标相对浏览器的坐标
x=e.clientX;
y=e.clientY;
//console.log("x"+x,"y"+y)
l=img.offsetLeft;
t=img.offsetTop;
mark.style.left=(x-l-mark.offsetWidth/2-magnifier.getBoundingClientRect().left)+‘px‘;
mark.style.top=(y-t-mark.offsetHeight/2-magnifier.getBoundingClientRect().top)+‘px‘;
// 移动区边界距离边界的距离
mL=mark.offsetLeft;
mT=mark.offsetTop;
//最小范围
/*console.log("mL"+mL,"mT"+mT)*/
if(mL<=0){
mark.style.left="0";
}
if(mT<=0){
mark.style.top="0"
}
// 最大范围
if(mL>=img.offsetWidth-mark.offsetWidth){
mark.style.left=img.offsetWidth-mark.offsetWidth+"px";
}
if(mT>=img.offsetHeight-mark.offsetHeight){
mark.style.top=img.offsetHeight-mark.offsetHeight+"px";
}
//显示区的宽高
L=bigimg.offsetWidth;
T=bigimg.offsetHeight;
// console.log(L,T);
//获取放大的倍数
bigimg.style.left="-"+(mL/(img.offsetWidth/L))+"px";
bigimg.style.top="-"+(mT/(img.offsetHeight/T))+"px";
// console.log(bigimg.style.left,bigimg.style.top)
}
}

//js继承
mymagnifier.prototype.cloneObj=function(oldObj) { //复制对象方法
if (typeof(oldObj) != ‘object‘) return oldObj;
if (oldObj == null) return oldObj;
var newObj = new Object();
for (var i in oldObj)
newObj[i] = mymagnifier.prototype.cloneObj(oldObj[i]);
return newObj;
};
mymagnifier.prototype.extendObj=function() { //扩展对象
var args = arguments;
if (args.length < 2) return;
var temp = mymagnifier.prototype.cloneObj(args[0]); //调用复制对象方法
for (var n = 1; n < args.length; n++) {
for (var i in args[n]) {
temp[i] = args[n][i];
}
}
return temp;
}
HTMLElement.prototype.MYmagnifier = mymagnifier;
var magnifier_box=document.getElementsByClassName("magnifier");
for(var i=0;i<magnifier_box.length;i++){
magnifier_box[i].MYmagnifier();
}
时间: 2024-10-21 06:18:54

模仿Bootstrap插件的放大镜插件的相关文章

jquery插件jqzoom放大镜插件特效代码分享

原文:jquery插件jqzoom放大镜插件特效代码分享 源代码下载地址:http://www.zuidaima.com/share/1550463469554688.htm 放大镜插件效果是当前电子商务系统的一个不可缺的部分,值得学习哦 代码截图:

Bootstrap 提示工具(Tooltip)插件方法的用法

方法 下面是一些提示工具(Tooltip)插件中有用的方法: 方法 描述 实例 Options: .tooltip(options) 向元素集合附加提示工具句柄. $().tooltip(options) Toggle: .tooltip('toggle') 切换显示/隐藏元素的提示工具. $('#element').tooltip('toggle') Show: .tooltip('show') 显示元素的提示工具. $('#element').tooltip('show') Hide: .t

基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用

Bootstrap文件上传插件File Input是一个不错的文件上传控件,但是搜索使用到的案例不多,使用的时候,也是一步一个脚印一样摸着石头过河,这个控件在界面呈现上,叫我之前使用过的Uploadify 好看一些,功能也强大些,本文主要基于我自己的框架代码案例,介绍其中文件上传插件File Input的使用.关于Uploadify的控件介绍,可以参考我之前的随笔介绍<基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用>. 1.文件上传插件File In

bootstrap学习以及其插件

Bootstrap中文网地址,里面有bootstrap组件的下载与使用说明,现在使用bootstrap3: http://www.bootcss.com/ W3CSchool.CC里面有学习bootstrap的内容,可以在线测试,觉得不错: http://www.w3cschool.cc/bootstrap/bootstrap-tutorial.html 由于bootstrap没有日历控件,我打算用这个日历控件,里面有使用说明: http://www.html580.com/?2zi_fRif

jquery放大镜插件与样式

这是放大镜插件链接,我已经上传到我博客http://files.cnblogs.com/valiant1882331/%E6%94%BE%E5%A4%A7%E9%95%9C%E6%8F%92%E4%BB%B6%E4%B8%8E%E6%A0%B7%E5%BC%8F.rar 以下是代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD

jquery 弹出层插件fancybox和放大镜插件cloud-zoom

这两天做了一个网上的项目,其实也不是自己做的,嘿嘿,现在就来说说我对这个小页面效果代码的理解代码下载 1.添加javascript引用和CSS文件的引用 //js代码的引用<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script> <script src="fancybox/jquery.easing-1.3

玩转Bootstrap(基础) -- (8.Bootstrap支持的JavaScript插件)

1.导入JavaScript插件 Bootstrap除了包含丰富的Web组件之外,如前面介绍的下拉菜单.按钮组.导航.分页等.他还包括一些JavaScript的插件. Bootstrap的JavaScript插件可以单独导入到页面中,也可以一次性导入到页面中.因为在Bootstrap中的JavaScript插件都是依赖于jQuery库,所以不论是单独导入还一次性导入之前必须先导入jQuery库. 一次性导入: Bootstrap提供了一个单一的文件,这个文件包含了Bootstrap的所有Java

转载:基于jquery的bootstrap在线文本编辑器插件Summernote

基于jquery的bootstrap在线文本编辑器插件Summernote 转载:jQ酷 » 基于jquery的bootstrap在线文本编辑器插件Summernote Summernote是一个基于jquery的bootstrap超级简单WYSIWYG在线编辑器.Summernote非常的轻量级,大小只有30KB,支持Safari,Chrome,Firefox.Opera.Internet Explorer 9 +(IE8支持即将到来). 特点: 世界上最好的WYSIWYG在线编辑器 极易安装

基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)

首先需要导入一些js和css文件 ? 1 2 3 4 5 6 <link href="__PUBLIC__/CSS/bootstrap.css" rel="external nofollow" rel="stylesheet"> <link type="text/css" rel="stylesheet" href="__PUBLIC__/CSS/fileinput.css&qu