电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

js實現詳情頁放大鏡效果

瀏覽:92日期:2024-04-13 18:28:44

本文實例為大家分享了js實現詳情頁放大鏡的具體代碼,供大家參考,具體內容如下

1.html

<div id='small'> <div id='mo'> </div> <img src='http://www.hdgsjgj.cn/bcjs/img/timg.jpg'/> <div id = 'frame'> </div> </div> <div id = 'big'> <img src='http://www.hdgsjgj.cn/bcjs/img/timg.jpg'/></div>

2.css

<style> *{margin:0;padding:0; } #small{width:400px;height:400px;position:relative;box-shadow: 0 0 5px #000; } #small img{/* 圖片百分百,完全覆蓋原始框 */width:100%;height:100%; } #frame{width:100px;height:100px;position:absolute;box-shadow:0 0 5px #000;top:0;left:0;/* 在鼠標移入原始框的時候才顯現,所以初始值為隱藏 */display: none;/* 在放大鏡中插入背景圖,根據背景圖定位,改變放大鏡中和原始框中的圖片一一對應 *//* 0 0 即為background-position的值 */background: url(img/timg.jpg) no-repeat 0 0;/* CSS2中的內容要和CSS3中的分開 */background-size: 400px 400px ; } #big{width:400px;height:400px;position:relative;box-shadow: 0 0 5px #000;/* 因為放大框中的內容與放大鏡是16:1放大的,所以原始框與放大框相同大小的情況下使用overflow: hidden;用放大框截取插入圖片的大小 */overflow: hidden;/* 在鼠標移入原始框的時候才顯現,所以初始值為隱藏 */display: none; } #big img{width:1600px;height:1600px;position: absolute;left: 0;top:0; } #big,#small{margin-left: 100px;float: left; } #mo{/* 最上邊的一層膜寬高100%,層級在最上層,完全覆蓋住原始框,確保鼠標在原始框上移動時,放大鏡能跟著穩定的移動,即鼠標移動的參照物唯一 */width:100%;height:100%;z-index: 999;position: absolute; }</style>

3.js

<script> //獲取原始框 var oSmall = document.getElementById('small'); //獲取放大框 var oBig = document.getElementById('big'); //獲取放大鏡 var oFrame = document.getElementById('frame'); //獲取放大框中的圖片 var oBig_img = oBig.children[0] //獲取原始框中的圖片 var oSmall_img = oSmall.children[1]; //鼠標移入事件(注:沒有兼容問題) //放大鏡和放大框顯現出來 oSmall.onmouseenter = function(){ oBig.style.display = 'block'; oFrame.style.display = 'block'; //鼠標移入圖片變模糊 oSmall_img.style.opacity = '0.3'; } //鼠標移出事件(注:沒有兼容問題) //放大鏡和放大框變回原始的隱藏狀態 oSmall.onmouseleave = function(){ oBig.style.display = 'none'; oFrame.style.display = 'none'; //鼠標移出,圖片變清晰 oSmall_img.style.opacity = '1' } //鼠標移動事件(注:有兼容問題) oSmall.onmousemove = function(event){ //解決兼容問題 var e = event || window.event; //獲取鼠標在放大鏡中心的位置坐標(用于判斷放大鏡不會移出原始框) //獲取位置用offsetX/offsetY //size初始值為100,與放大鏡未放大之前一致, //size/2是為了獲取鼠標在放大鏡的中心點 //用size而不是定值,是為了后邊放大鏡隨鼠標滾輪滾動放大縮小時 //鼠標能一直在放大鏡中心位置 //e.offsetY/e.offsetX是鼠標到原始框邊框的距離 //size / 2是鼠標到放大鏡邊框的距離 //nTop/nLeft是放大鏡邊框到原始框邊框的距離 var nTop = e.offsetY - size / 2; var nLeft = e.offsetX - size / 2; //判斷放大鏡的臨界值 //不小于最小值,不大于最大值 //判斷放大鏡的最小值 if(nTop <= 0){ //差一點就等于零的時候,也賦值為零 nTop = 0; } if(nLeft <= 0){ nLeft = 0; } //判斷放大鏡的最大值 //因為坐標只有offsetLeft 和 offsetTop兩個,所以計算最大值時: //需要獲取放大鏡的左和上的邊框到原始框的左和上的邊框的最大距離與原始框的坐標位置進行比較 //offsetHeight/offsetWidth獲取元素的寬高 //原始框的寬高 - 放大框的寬高 == 放大鏡可以移動的最大值 var maxTop = oSmall.offsetHeight - oFrame.offsetHeight; var maxLeft = oSmall.offsetWidth - oFrame.offsetWidth; //放大鏡的邊框大于等于最大值,停 if(nTop >= maxTop){ nTop = maxTop; } if(nLeft >= maxLeft){ nLeft = maxLeft; } //放大鏡的位置坐標 oFrame.style.top = nTop + 'px' oFrame.style.left = nLeft + 'px' //計算放大鏡和放大框之間的縮放比例 //計算比例用offsetWidth/offsetHeight var propX = oBig.offsetWidth/oFrame.offsetWidth; var propY = oBig.offsetHeight/oFrame.offsetHeight; //-nTop/-nLeft用負值,使放大框中的內容與放大鏡所停的位置一致(圖片內容移動方向相同) //如果是正值,放大鏡移動時與放大框中的內容相反移動(放大框中不會出現對應的放大圖片) oBig_img.style.top = -nTop*propY + 'px' oBig_img.style.left = -nLeft*propX + 'px' //鼠標移入時,放大鏡清晰,原始框模糊 //利用改變插入到放大鏡中的背景圖的position,進行圖片的一一對應 //注意:``里的${}和${}中間用空格隔開 oFrame.style.backgroundPosition = `${-nLeft}px ${-nTop}px`; } //鼠標滾輪事件 //注意:兼容問題 //設置size初始值為100,即放大鏡未放大縮小時的原始狀態 //通過判斷滾輪的上下滾動方向,改變放大鏡的大小,即寬高同時增大或縮小 var size = 100; //解決兼容問題 //FF(火狐) if(document.addEventListener){ //第一個參數是事件名稱, //第二個參數是事件處理函數, //第三個參數是一個被廢棄的參數,是以事件捕獲的形式,還是事件冒泡的形式觸發事件,默認false //第三個參數基本用不到document.addEventListener(’DOMMouseScroll’,handleEvent,false); } //IE/Opera(歐鵬)/Chrome(谷歌) window.onmousewheel = document.onmousewheel = handleEvent; // 分辨滾輪向上還是向下; function handleEvent(event){var e = event || window.event;// FF => detail 向上 是 負數 ;// 向下 是 正數;// Chrome => deltaY 向上 是 負數;// 向下 是 正數;var flag = trueif(e.detail != 0 ){ // 說明瀏覽器是火狐; if(e.detail > 0){flag = false// 向下; }else{flag = true;// 向上; }}else{ //說明瀏覽器是IE/Opera/Chrome if(e.deltaY > 0){flag = false// 向下; }else{flag = true;// 向上; }}//滾輪向上時,放大鏡變大,放大框中的內容縮小;//滾輪向下時,放大鏡縮小,放大框中的內容變大;if(flag){ // 向上 size ++;}else{ size --;// 向下}//將size值賦給放大鏡oFrame.style.width = size + 'px';oFrame.style.height = size + 'px';//當鼠標放在原始框上一動不動時,放大鏡也不會再增大了oSmall.onmousemove(e);//放大縮小后放大鏡和放大框的比例發生了變化,導致放大框中的內容與放大鏡所在位置不符// 根據放大鏡的縮放,重新計算放大框與放大鏡之間的縮放比例var prop = 400 / size;// 根據比例縮放放大框中的圖片 ;oBig_img.style.width = 400 * prop + 'px';oBig_img.style.height = 400 * prop + 'px'; }</script>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 润滑脂-高温润滑脂-轴承润滑脂-食品级润滑油-索科润滑油脂厂家 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 体坛网_体坛+_体坛周报新闻客户端| 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 办公室家具公司_办公家具品牌厂家_森拉堡办公家具【官网】 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 广东青藤环境科技有限公司-水质检测 | PE一体化污水处理设备_地埋式生活污水净化槽定制厂家-岩康塑业 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 欧盟ce检测认证_reach检测报告_第三方检测中心-深圳市威腾检验技术有限公司 | 珠海网站建设_响应网站建设_珠海建站公司_珠海网站设计与制作_珠海网讯互联 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 天助网 - 中小企业全网推广平台_生态整合营销知名服务商_天助网采购优选 | 雪花制冰机(实验室雪花制冰机)百科 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 上海道勤塑化有限公司| 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 膜结构车棚|上海膜结构车棚|上海车棚厂家|上海膜结构公司 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 哔咔漫画网页版在线_下载入口访问指引 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 芜湖厨房设备_芜湖商用厨具_芜湖厨具设备-芜湖鑫环厨具有限公司 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 创富网-B2B网站|供求信息网|b2b平台|专业电子商务网站 | 手机游戏_热门软件app下载_好玩的安卓游戏下载基地-吾爱下载站 | 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 北钻固控设备|石油钻采设备-石油固控设备厂家 | 传爱自考网_传爱自学考试网 | 环氧树脂地坪漆_济宁市新天地漆业有限公司 | 顶空进样器-吹扫捕集仪-热脱附仪-二次热解吸仪-北京华盛谱信仪器 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 |