首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >插件:商品放大镜

插件:商品放大镜

作者头像
yuezhongbao
发布于 2019-03-13 07:29:50
发布于 2019-03-13 07:29:50
1.6K00
代码可运行
举报
文章被收录于专栏:前端实习日记前端实习日记
运行总次数:0
代码可运行

前言

这段代码我哩哩啦啦写了三天多,平时都有活今天忙里偷闲想起之前放大镜这个功能写了一半(我是分两块写的, 先是让module就是那个遮罩层能自由的在图片上跟随鼠标走,剩下的就简单了,遮罩层的left、top乘以一个固定系数就是‘放大图片’的left、top)。好了我的思路就是:只需要一张图片,这张图片像素要大一点,先以缩小的方式展示,然后鼠标移上去之后,在右侧有一个div,里面也放着一个src相同的img,只不过这个img不再是缩小的了。ok 这样就够了!

 写之前先复习一下:(如图)

记住上面的图 上码

HTML

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="content">
    <img class="small" src="img/01.png" width="300" />
    <div class="module"></div>
    <div class="large">
        <img src="img/01.png" alt=""/>
    </div>
</div>

css

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div.content{
    overflow: hidden;
    position: relative;
}
img.small{
    float: left;
    border:1px solid blue;
}
div.large{
    float: left;
    width:300px;
    height:300px;
    overflow: hidden;
    position: relative;/**/
}
div.large>img{
    width:600px;
    display: none;
    position:absolute;/**/
}
div.module{
    width:150px;
    height:150px;
    background-color: rgba(255,255,255,.3);
    border:1px solid #666666;
    position:absolute ;
    top:0;
    left:0;
    display: none;
}
div.module:hover{
    cursor: move;
}

js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
   $('.content').mousemove(function(e){
       var mx = e.pageX-$(this).offset().left;
       var my = e.pageY-$(this).offset().top;
//           让鼠标在module正中间
     var left = mx-$('.module').width()/2;
       var top = my-$('.module').height()/2;
       if(mx>0&&my>0&&mx<$('.small').width()&&my<$('.small').height()){
//           防止溢出
       var L = (left<0)?0:(left>$('.small').width()-$('.module').width())?$('.small').width()-$('.module').width():left;
           var T = (top<0)?0:(top>$('.small').height()-$('.module').height())?$('.small').height()-$('.module').height():top;
           $('div.module').css('display','block').css('left',L+'px').css('top',T+'px');
//           显示放大照片
       var largeLeft = L*$('.large').width()/$('.module').width();//L*(300/150);
       var largeTop = T*$('.large').height()/$('.module').height();//T*(300/150);
       $('.large>img').css('display','block').css('left',0-largeLeft+'px').css('top',0-largeTop+'px');
        }
为什么left:0-largeLeft? 
因为你好好想想,你鼠标往左移动时候,div.large中的图片却是向右移动的,鼠标向右移动时,div.large中的图片是向左动的。
鼠标向上移动时,div.large中的图片是向下动的。
鼠标向下移动时,div.large中的图片是向上动的。
所以要用0减去!

       else{
           $('div.module').css('display','none');
//           隐藏放大照片
        $('.large>img').css('display','none');
       }
  })
 </script>

是不是很简单,我当时在避免.module溢出的时候费了些时间,

当时我很蠢单独把每个方向都拿出来并且在每个方向下面设置.module的left和top;导致鼠标在移动的时候代码判断使移动发生了冲突,并未达到我想要的效果。   想想虽然要每个方向都要考虑,但是没必要每判断一次给就给.module赋一次值。   把left和top单独拿出来考虑,最后在把left、top赋值给.module 如下,更好。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//                防止溢出
var L = (left<0)?0:(left>$('.small').width()-$('.module').width())?$('.small').width()-$('.module').width():left;
var T = (top<0)?0:(top>$('.small').height()-$('.module').height())?$('.small').height()-$('.module').height():top;
           $('div.module').css('display','block').css('left',L+'px').css('top',T+'px');
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
$.extend()插件(放大镜)
1.结构 <div class="small0"> <img src="img/01.png" alt="01"/> <div class="mask0"></div> </div> <div class="big0"> 2.样式 <style> *{margin: 0;padding: 0} .small0{ width: 300px; position: absolute;
天天_哥
2018/09/29
1.4K0
Jquery和CSS3轻松实现放大镜效果
每当打开淘宝,天猫等pc端时,看到心仪的物品时,点击图片时,便呈现出放大的效果。有没有去理解分析它的原理?是不是感觉非常的神奇?当真正地去接触,其实非常好理解。下面一起来学习!
Javanx
2019/09/04
1.6K0
前端必学——实现电商图片放大镜效果(附代码)
放大镜可以说是前端人必须学会的程序之一,今天的案例为大家展示一下怎么实现放大镜的效果!
用户10816598
2023/11/24
5590
原生JS实现放大镜特效
分享一个用原生JS实现的放大镜效果,效果如下: 代码如下: <!doctype html> <html> <head> <meta charset="UTF-8"> <title>
越陌度阡
2020/11/26
16.6K0
原生JS实现放大镜特效
js放大镜效果
世间万物皆对象
2024/03/20
1.3K0
js放大镜效果
【说站】vue实现tab切换的放大镜效果
本文实例为大家分享了vue实现tab切换的放大镜效果的具体代码,供大家参考,具体内容如下
很酷的站长
2022/11/24
1.6K0
【说站】vue实现tab切换的放大镜效果
放大镜原理
上面代码中,图片没有设置高度,我们在JavaScript中用 img.offsetWidth 来获取。获取之后设置 wrapper 的宽度与 img 的宽度相同。
多云转晴
2019/10/23
2.3K0
放大镜原理
电商放大镜及动态边框效果
  但是以上两个思路均有问题。如果设置border,如何使其边框动画?如果周边设置4个div,那么不仅是需要js操控,并且无形之中增加了许多复杂度,与编程思想背道而驰。 那么我们还有别的办法来处理使边框动起来吗?首先,动画是一定要有的。其次,如果不能用border,那么用background怎么样呢? justdoit.
流眸
2019/08/12
2K0
电商放大镜及动态边框效果
放大镜
放大镜:淘宝等电商页面应用广泛... 思路:先让move块和bimg块隐藏,当鼠标移动到box上时,使move块和bimg块显示,获取鼠标当前的位置,然后经过计算给与move块和bimg块适当的值实现放大镜效果
河湾欢儿
2018/09/06
1.7K0
JS放大镜的制作
3.当mask移动时让大图跟着移动 **鼠标经过时显示mask和big,当鼠标离开box的时候隐藏mask和big **
切图仔
2022/09/08
3.3K0
JS放大镜的制作
【javaScript案例】之放大镜效果的实现
这次的案例稍微有一点难度,在css和js上都需要多加思考,话不多说,让我们来开始吧~
xinxin-l
2022/03/29
1.2K0
基于 Vue 的商品主图放大镜方案
在做电商类应用时,难免会遇到商品主图实现放大镜效果的场景,现有的基于Vue的第三方包不多并且无法直接复用,今天,我来分享一种高稳定性的基于 Vue 的图片放大镜方法。
政采云前端团队
2019/12/20
2K0
基于 Vue 的商品主图放大镜方案
【如果你要学JS XIII】——实现放大镜效果、client&scroll属性、固定侧边栏
client翻译过来就是客户端,我们使用client系列的相关属性来获取元素可视区的相关信息。通过client系列 的相关属性可以动态的得到该元素的边框大小、元素大小等。
像素人
2023/12/26
6140
【如果你要学JS XIII】——实现放大镜效果、client&scroll属性、固定侧边栏
html静态网页:放大镜
功能分三个模块: 1-鼠标跟随 2-处理越界 3-方大 效果: 文件架构: 学习交流群:970353786 第一部分代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> #box{ width: 400px; height: 400
川川菜鸟
2021/10/18
2.2K0
让剁手党洞察物体细节,“放大镜”当之无愧
经常浏览淘宝、京东等一些商城网站,都会看到各种各样的页面交互效果,放大镜交互效果在商城网站中算是比较常见的。作为程序员的我们也会经常去考虑放大镜效果的实现方式,同时在平时的一些电商类平台开发中也会遇到
HTML5学堂
2018/03/13
1.5K0
让剁手党洞察物体细节,“放大镜”当之无愧
JavaScript写放大镜效果
更多内容请见原文,文章转载自:https://blog.csdn.net/weixin_44519496/article/details/118599333
马克社区
2022/04/18
7570
Jquery实现图片放大两种方式
在开发过程中,有时候,我们遇到的需求:需要图片放大缩小。 下面凯哥就介绍两种实习方式 一:弹窗层显示放大后的图片 二:鼠标悬浮放大后的图片 以下正文 说明:jquery.min.js和图片请自行修改 一:弹窗层显示放大后的图片,点击图片后缩小 效果图: 代码: <head> <style type="text/css"> .fillbg { background-color: rgba(0, 0, 0, 0.6); bottom: 0; height: 100%; left: 0; opacity: 
凯哥Java
2022/12/16
4K0
Jquery实现图片放大两种方式
CSS绝对定位7大应用场景实战案例分享
今天我们来分享web前端CSS定位中的position:absolute绝对定位的应用场景案例的相关场景!
艾编程
2022/12/09
1.1K0
CSS绝对定位7大应用场景实战案例分享
用最简单的方法实现原生JS放大镜特效
<html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> \*{margin:0px;padding:0px;} #big{width:200px;height:200px;position:absolute;overflow:hidden;left:480px;top:20px;dis
汤清丽
2019/12/15
2.7K0
第44天:鼠标移动放大效果
1、鼠标移动放大效果 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>鼠标移动放大效果</title> 6 <style> 7 .box{ 8 width: 350px; 9 height: 350px; 10 position: relative;
半指温柔乐
2018/09/11
1.3K0
相关推荐
$.extend()插件(放大镜)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档