博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js之放大镜效果
阅读量:6280 次
发布时间:2019-06-22

本文共 3227 字,大约阅读时间需要 10 分钟。

 
HTML:
    
放大镜效果

  

 
CSS:
* {    margin: 0;    padding: 0;} body {    background: #000;} img {    vertical-align: bottom;} #box {    position: relative;    margin: 10px;    padding: 10px;    width: 260px;    background: #fff;}#large-box {    display: none;    position: absolute;    top: 0;    left: 290px;    width: 260px;    height: 260px;    overflow: hidden;}#large-img {    position: absolute;    width: 520px;    height: 520px;}#middle-box {    position: relative;}#middle-img {    width: 100%;}#shadow {    display: none;    position: absolute;    left: 0;    top: 0;    width: 130px;    height: 130px;    background: rgba(255, 0, 0, .4);    cursor: move;}#small-box {    margin-top: 10px;    overflow: hidden;}#small-box img{    float: left;    width: 63px;    border: 1px solid #fff;}#small-box .active {    border-color: red;}

  

js:
 
 
function $(id) {    return document.getElementById(id);} var oBox         = $('box');var oSmallBox  = $('small-box');var aSmallImg  = Array.from(oSmallBox.children);var oMiddleBox = $('middle-box');var oMiddleImg = $('middle-img');console.log(oMiddleImg);var oLargeBox  = $('large-box');var oLargeImg  = $('large-img');var oShadow    = $('shadow');  // 给缩略图添加鼠标进入事件aSmallImg.forEach( v => {    v.onmouseover = function () {        // 先去掉所有的class名        aSmallImg.forEach(v => v.className = '');         // 当前img添加class        this.className = 'active';         // 改变中型图片的地址        oMiddleImg.src = this.src;         // 改变大型图片的地址        oLargeImg.src = this.src;    };}); // 遮罩层最大的left和top值var maxL = 0;var maxT = 0;// 大图片最大的left和top值var maxLargeImgL  = 0;var maxLargeImgT  = 0; // 鼠标进入middle-boxoMiddleBox.onmouseover = function () {    // 显示遮罩层    oShadow.style.display = 'block';    // 显示右侧的盒子    oLargeBox.style.display = 'block';     // 获取最大的left和top值    maxL = oMiddleBox.offsetWidth - oShadow.offsetWidth;    maxT = oMiddleBox.offsetHeight - oShadow.offsetHeight;     maxLargeImgL = oLargeImg.offsetWidth - oLargeBox.offsetWidth;    maxLargeImgT = oLargeImg.offsetHeight - oLargeBox.offsetHeight;}; // 鼠标离开middle-boxoMiddleBox.onmouseout = function () {    // 显示遮罩层    oShadow.style.display = 'none';    // 显示右侧的盒子    oLargeBox.style.display = 'none';}; // 给middle-box添加移动事件oMiddleBox.onmousemove = function (ev) {    var e = ev || window.event;    var iL = e.clientX - oShadow.offsetWidth / 2 - oMiddleBox.offsetLeft - oBox.offsetLeft;    var iT = e.clientY - oShadow.offsetHeight / 2 - oMiddleBox.offsetTop - oBox.offsetTop;      // 限定左侧    if(iL < 0) {        iL = 0;    }     // 限定上侧    if(iT < 0) {        iT = 0;    }     // 限定右侧    if(iL > maxL) {        iL = maxL;    }     // 限定下侧    if(iT > maxT) {        iT = maxT;    }    oShadow.style.left = iL + 'px';    oShadow.style.top  = iT + 'px';     // 让大图移动    oLargeImg.style.left  = - iL * maxLargeImgL / maxL + 'px';    oLargeImg.style.top   = - iT * maxLargeImgT / maxT + 'px';};
图片更换成自己的路径即可

转载于:https://www.cnblogs.com/bgwhite/p/9476480.html

你可能感兴趣的文章
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>
Java中Object类的equals()和hashCode()方法深入解析
查看>>
数据库
查看>>
Vue------第二天(计算属性、侦听器、绑定Class、绑定Style)
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>
VC中怎么读取.txt文件
查看>>
如何清理mac系统垃圾
查看>>
企业中最佳虚拟机软件应用程序—Parallels Deskto
查看>>
Nginx配置文件详细说明
查看>>
怎么用Navicat Premium图标编辑器创建表
查看>>