1. 程式人生 > >JS 製作放大鏡對比圖功能原始碼,擁有倍數可選功能

JS 製作放大鏡對比圖功能原始碼,擁有倍數可選功能

先看效果圖:


JS檔案:

//$(function ($) {
$.fn.blowup = function (attributes,brother,beishu) {
    var $element = this;
    var $className = $element.attr("class");
     var $class1,$brother //class 與 beother 變數
    // If the target element is not an image
if (!$element.is("img")) {
      console.log("%c Blowup.js Error: " 
+ "%cTarget element is not an image.", "background: #FCEBB6; color: #F07818; font-size: 17px; font-weight: bold;", "background: #FCEBB6; color: #F07818; font-size: 17px;"); return; } // Constants var $IMAGE_URL = $element.attr("src"); var $brotherSrc = $("."+brother).attr("src"
); var $IMAGE_WIDTH = $element.width(); var $IMAGE_HEIGHT = $element.height(); var NATIVE_IMG = new Image(); NATIVE_IMG.src = $element.attr("src"); //NATIVE_IMG.width = "900"; //NATIVE_IMG.height = "900"; // Default attributes var defaults = { round : true, width
: 200, height : 200, background : "#FFF", shadow : "0 8px 17px 0 rgba(0, 0, 0, 1)", border : "6px solid #FFF", cursor : true, zIndex : 999999 } // Update defaults with custom attributes var $options = $.extend(defaults, attributes); // Modify target image $element.on('dragstart', function (e) { e.preventDefault(); }); $element.css("cursor", $options.cursor ? "crosshair" : "none"); // Create magnification lens element var lens = document.createElement("div"); lens.id = ""+$className+"BlowupLens"; // Attack the element to the body $("body").append(lens); // Updates styles $blowupLens = $("#"+$className+"BlowupLens"); $blowupLens.css({ "position" : "absolute", "visibility" : "hidden", "pointer-events" : "none", "zIndex" : $options.zIndex, "width" : $options.width, "height" : $options.height, "border" : $options.border, "background" : $options.background, "border-radius" : $options.round ? "50%" : "none", "box-shadow" : $options.shadow, "background-repeat" : "no-repeat", }); // Show magnification lens $element.mouseenter(function () { $class1 = $element.attr("class"); $blowupLens = $("#"+$class1+"BlowupLens"); $blowupLens.css("visibility", "visible"); $brother = $("#"+brother+"BlowupLens"); $brother.css("visibility", "visible"); }) // Mouse motion on image $element.mousemove(function (e) { /*$blowupLens = $("#"+$class1+"BlowupLens"); $brother = $("#"+brother+"BlowupLens");*/ // Lens position coordinates var lensX = e.pageX - $options.width / 2; var lensY = e.pageY - $options.height / 2; // Relative coordinates of image var relX = e.offsetX; var relY = e.offsetY; // Zoomed image coordinates var zoomX = -Math.floor(relX / $element.width() * NATIVE_IMG.width - $options.width / 2); var zoomY = -Math.floor(relY / $element.height() * NATIVE_IMG.height - $options.height / 2); //console.log(relX+"/"+$element.width()+"*"+ NATIVE_IMG.width ); //console.log(zoomX); //console.log(zoomY); var bgSize; switch(beishu){ case 0.5: zoomX = zoomX+(zoomX*beishu); zoomY = zoomY+(zoomY*beishu); bgSize =400*2.5; break; case 1.5: zoomX = zoomX+(zoomX*beishu); zoomY = zoomY+(zoomY*beishu); bgSize =400*3.5; break; default: bgSize = NATIVE_IMG.width; } // Apply styles to lens $blowupLens.css({ left : lensX, top : lensY, "background-image" : "url(" + $IMAGE_URL + ")", "background-position" : zoomX + " " + zoomY, "background-size" : bgSize }); // 此處if else 待優化邏輯。↓ if(brother == "rightImg"){ $brother.css({ left : lensX + $element.parent().width(), top : lensY, "background-image" : "url(" + $brotherSrc + ")", "background-position" : zoomX + " " + zoomY, "background-size" : bgSize }); }else if(brother == "laftImg"){ $brother.css({ left : lensX - $element.parent().width(), top : lensY, "background-image" : "url(" + $brotherSrc + ")", "background-position" : zoomX + " " + zoomY, "background-size" : bgSize }); } }) // 滑鼠移除 $element.mouseleave(function () { /*$blowupLens = $("#"+$class1+"BlowupLens");*/ $blowupLens.css("visibility", "hidden"); /*$brother = $("#"+brother+"BlowupLens");*/ $brother.css("visibility", "hidden"); }) } //})

HTML 檔案

<!DOCTYPE html5>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
  <!--<link rel="stylesheet" type="text/css" href="demo.css"/>-->
</head>
 <body>
  <div style="text-align: center;margin: 10px;">
   <button onclick="oneX()"> 一倍</button>
   <button onclick="twoX()"> 二倍</button>
   <button onclick="threeX()"> 三倍</button>
  </div>
  <div class="wrap" style="display: flex;justify-content: center;">
   <div class="left" style="margin-right: 50px;">
    <img src="http://static.sunday90.com/enlarge/images/03.jpg" width="400"  class="laftImg" />
   </div>
   <div class="right" >
    <img src="http://static.sunday90.com/enlarge/images/04.jpg" width="400" class="rightImg" />
   </div>
  </div>
 </body>
 <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
 <script src="blowup.js" type="text/javascript" charset="utf-8"></script>
 <script type="text/javascript">
  $(document).ready(function(){
     $(".laftImg").blowup({},"rightImg",1);
   $(".rightImg").blowup({},"laftImg",1);
    })
  function oneX(){
   $(".laftImg").blowup({},"rightImg",1);
   $(".rightImg").blowup({},"laftImg",1);
  }
  function twoX(){
   $(".laftImg").blowup({},"rightImg",0.5);
   $(".rightImg").blowup({},"laftImg",0.5);
  }
  function threeX(){
   $(".laftImg").blowup({},"rightImg",1.5);
   $(".rightImg").blowup({},"laftImg",1.5);
  }
 </script>
</html>

相關推薦

JS 製作放大鏡對比功能原始碼擁有倍數功能

先看效果圖: JS檔案: //$(function ($) { $.fn.blowup = function (attributes,brother,beishu) { var $element = this; var $className = $ele

raphael-min.js當中,rect物件原始碼加上註解!!

raphael-min.js /**  *環節物件rect圖  *  *@paramp  *@paramm  *@returns{a.rect}  */ a.rect= function(p, m) { var u = this, g = "rect" + a.util.

js 簡單實現表單資料的增添單項刪改多項刪除修改以及全功能

// 新增商品函式 function add(){ // 獲取表單元素 var table = document.getElementById("order"); // 以表單的行數為索引插入行

d3.js製作連線動畫和編輯器

此文章為原創文章,原文地址:https://www.cnblogs.com/eagle1098/p/11431679.html 連線動畫圖 編輯器 效果如上圖所示。本專案使用主要d3.jsv4製作,分兩部分,一個是實際展示的連線動畫圖,另一個是管理人員使用滑鼠編輯連線的頁面。對於d3.js如何引入圖片,如

js已知一個文字輸入框通過按鈕點用if 判斷輸入框裡的數字是否能被3整除

<!DOCTYPE html> <html> <head>     <title>第一題</title>     <meta charset="utf-8"> </head> <!--

DedeCMS二次開發聯動篩選功能的實現(含多功能

多選效果如下圖:具體操作說明:一、注意,首先備份以下兩個檔案\include\arc.listview.class.php\include\extend.func.php多選版檔案下載連結:https 多選效果如下圖:   具體操作說明: 1、注意,首先備份以下兩個檔

python 讀不同編碼的文本傳遞一個的encoding 參數給open() 函數

系統 fault 使用 取出 可選 asc 完全 pen 調用 文件的讀寫操作默認使用系統編碼,可以通過調用sys.getdefaultencoding() 來得到。在大多數機器上面都是utf-8 編碼。如果你已經知道你要讀寫的文本是其他編碼方式,那麽可以通過傳遞一個可選的

自發光效果(控制自發光的顏色、強度呼吸光

通過一個貼圖控制自發光的顏色,一個控制自發光主色調的顏色(注意此處mask直接用rgb格式即可,不需要阿爾法通道控制發光程度,因為顏色自帶一個亮度的屬性) _EmissionMask (“Emission Mask”, 2D) = “white” {} _E

poi操作word文件以07版本為參考將word文件中圖片替換為文字(替換文字也一樣)讀圖片文字內容

1、先簡單介紹下word07版本以後的儲存格式,word 07版本以後主要是以xml格式儲存。如果想檢視詳情可將字尾名改為zip,再檢視壓縮檔案可檢視到各種檔案,其中document.xml就是word主要展現給我們大家所看到的內容。2.根據第一步的描述,我查看了docume

(轉)織夢DedeCMS二次開發聯動篩選功能的實現(含多功能

原文:http://www.dedejs.com/html/article-571-1.html點選開啟連結織夢預設的列表頁沒有篩選功能,但有時候我們做產品列表頁的時候,產品的欄位比較多,很多人都需要用到篩選功能,這樣可以讓使用者更方便的找到自己所需要的東西,實現這個聯動篩選

js餅狀(帶百分比)功能實現新人必懂

tool edi state pro form allow UNC connect ajax 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8

js製作CSV檔案下載功能由於值中含有json字串導致匯出格式錯誤解決方法

問題描述: 由於做的是真分頁,所以下載的時候不用在查詢資料庫,因而直接用的是js製作CSV檔案下載功能,但是由於值中含有json字串導致匯出格式錯誤。格式錯誤體現在json字串被拆分,佔用了多個單元格。 解決方法: 根據CSV檔案識別單元格的方式,用雙引號括起來的內容被

thinkpad 睡眠喚醒後熱鍵功能正常但屏幕無法顯示狀態/進度條/

選項 屏幕 速度 alt 設置 系統 操作 右鍵 狀態 由於博主比較習慣筆記本開蓋即用,合蓋即走,不大習慣開機關機(畢竟SSD速度杠杠滴^_^)。可是發現筆記本長時間睡眠乃至休眠喚醒後,使用thinkpad熱鍵,雖然可以調節,但屏幕不顯示調節狀態了。解決步驟如下: 1.

js中onchange()的使用實現功能選擇哪一張圖片顯示哪一張

pla option type oct 圖片 script www () height 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x

js 利用canvas + flv.js實現 視頻流 截屏 、本地下載功能實現兼容火狐谷歌 截屏跨域的坑

font 方案 function can 屬性和方法 load() com DG ren 1 本地視頻截屏(canvsa)    <!DOCTYPE html> <html> <head> <meta charset=

Mock.js簡易教程脫離後端獨立開發實現增刪改查功能

定義 數據 false 則表達式 type break 整數 增 刪 改 查 大於 在我們的生產實際中,後端的接口往往是較晚才會出來,並且還要寫接口文檔,於是我們的前端的許多開發都要等到接口給我們才能進行,這樣對於我們前端來說顯得十分的被動,於是有沒有可以制造假數據來模擬後

怎麼製作GIF動製作GIF動攻略

  網路聊天中,使用GIF動圖已經成為一種常態。很多人都習慣了使用GIF動圖來表達自己的心情,那麼你們有想過你們手中的GIF動圖是怎麼製作的嗎?我想肯定都是想過的。其實製作GIF並不困難,有款迅捷GIF製作工具請新增連結描述便能夠輕鬆駕馭了。下面小編就來分享下製作GIF動圖的方法,教大家如何製作GIF動圖。

python學習之網站的編寫(HTMLCSSJS)(十七)----------示例構造一個網頁的框架上部標題登入logo左側選單右側內容原始碼

結果: 顏色為了明顯,所以較為難看,可以根據自己的需要進行更改 原始碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title

python學習之網站的編寫(HTMLCSSJS)(十六)----------示例構造一個左側管理選單的功能主選單才顯示下面的內容

結果: 程式碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>逆水行舟不進則退</title>

python學習之網站的編寫(HTMLCSSJS)(十五)----------示例彈出一個背景為半黑色前面是白框的彈窗功能(已經編好的框架)

效果圖,程式碼直接可應用,按自己的需要在其中加入想要的內容:  程式碼及講解: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <