首页 > 其他分享 >jQuery 放大镜效果

jQuery 放大镜效果

时间:2024-10-07 10:44:04浏览次数:8  
标签:jQuery even 鼠标 效果 放大镜 big var slider small

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>放大镜效果</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
.small {
margin-left:40px;
margin-top:50px;
width: 150px;
height: 150px;
/*border: 2px solid yellow;*/
}
.small>img {
width: 150px;
height: 150px;
}
.slider {
width: 50px;
height: 50px;
background: rgba(180,180,135,0.3);
position: absolute;
display: none;
}
#big {
//设置为固定大小;
width: 200px;
height: 200px;
position: absolute;
/* border: 2px solid red;*/
overflow: hidden;
display: none;
}

</style>
</head>
<body>
<!--缩略图-->
<div class="small">
<img src="https://img1.baidu.com/it/u=1465664392,2808406094&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=800" />
<!--放大镜,在原图不上的小块-->
<div class="slider"></div>
</div>
<!--放大镜区域,大图,设置为none隐藏-->
<div id="big">
<img id="bigImg" src="https://img1.baidu.com/it/u=1465664392,2808406094&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=800" />
</div>

even.clientX<input type="text" value="0" id="test" /><br/>
even.clientY<input type="text" value="0" id="test1" />
<script src="https://cdn.staticfile.net/jquery/1.10.2/jquery.min.js">
</script>
<script type="text/javascript">

var small = $(".small")[0];
var slider = $(".slider")[0];
var big = document.getElementById("big");//试一试js获取
var bigImg = document.getElementById("bigImg");

//让slider跟随鼠标移动.给小的方块绑定事件
$(".small").mousemove(function(e) {
var even = e || event; //兼容火狐浏览器
var x = even.clientX - small.offsetLeft - slider.offsetWidth/2;
var y = even.clientY - small.offsetTop - slider.offsetHeight/2;
//测试even.clientX和even.clientY
$("#test").val(even.clientX);
$("#test1").val(even.clientY);
//水平方向的最大值
var maxX = small.clientWidth - slider.clientWidth;
//竖直方向的最大值
var maxY = small.clientHeight - slider.clientHeight;
if(x<0){
//相当于超出左侧,超出左侧时,拉回
x=0;
}
//超出右侧时拉回
if(x>maxX){
x = maxX;
}
//顶部超出
if(y<0){
y=0;
}
//底部超出
if(y>maxY){
y = maxY;
}
slider.style.top = (y+small.offsetTop) + "px";
slider.style.left = (x+small.offsetLeft) + "px";
//放大的图片的主要实现代码:比例计算, big.scrollLeft是id=big的div中下方滚轴的位置
//由于id=big的div设置成固定大小,而图片又非常大,所以这个div就像个放大镜一样在大图上晃
//比例计算很简单,鼠标在缩略图的位置与缩略图宽高比=鼠标在大图位置与大图宽高比,现在未知数是大图鼠标的位置
big.scrollLeft = x/maxX * (bigImg.clientWidth - big.clientWidth) ;
big.scrollTop = y/maxY * (bigImg.clientHeight -big.clientHeight) ;
});

//鼠标移入事件
$(".small").mouseenter(function(){
//鼠标移入到缩略图时候实现,上面出现的小的方块
$(".slider").css("display","block");
$("#big").css("top",small.offsetTop+"px");
//隐藏的大图=获取左图的左边位置+宽度+10(隔开点缝隙与缩略图)+px
big.style.left = small.offsetLeft + small.offsetWidth + 10 + "px";
//右侧的大图区域显示出来图片
$("#big").css("display","block");
});

//移除事件
//添加鼠标移出事件,鼠标移出缩略图的时候
$(".small").mouseleave(function(){
$(".slider").css("display","none");
$("#big").css("display","none");
});
</script>
</body>
</html>

 

标签:jQuery,even,鼠标,效果,放大镜,big,var,slider,small
From: https://www.cnblogs.com/hechunfeng/p/18449817

相关文章

  • 鸿蒙应用示例:镂空效果实现教程
    在鸿蒙系统中,为了给用户带来更加生动的视觉体验,我们可以使用不同的技术手段来实现图像和文字的镂空效果。本文将通过三个具体的示例来展示如何在鸿蒙系统中实现实心矩形镂空、实心圆镂空以及文字镂空的效果。示例代码//定义一个名为Index的应用入口组件@Entry@Componentstruct......
  • PbootCMS实现数字条分页样式效果
    在PbootCMS中实现数字条分页效果非常简单,并且可以通过CSS自定义样式。下面详细介绍如何使用PbootCMS的分页组件,并通过CSS修改数字条的外观。1.添加分页代码在需要分页的模板文件中添加以下代码:<!--分页-->{pboot:if({page:rows}>0)}<divclass="pagebar"><divc......
  • [jQuery] $(this) 是什么
    前言$(this)就是把DOM对象传递给jQuery构造器中,通过jQuery对象让我们可以使用jQuery的html()、css()等一系列函数操作DOM元素。<buttonid="btn">ClickMe</button><scriptsrc="path/to/jquery.js"></script><script>$('#btn').c......
  • jQuery-Mobile-高级教程-全-
    jQueryMobile高级教程(全)原文:ProjQueryMobile协议:CCBY-NC-SA4.0零、简介我们目前正在见证企业和个人构建和分发移动应用的方式的转变。最初的策略是为每个主要平台构建单独的原生应用。然而,团队很快意识到维护多个平台是不可持续的,因为移动团队失去了灵活性。可以一次......
  • 基于HTML、CSS和JavaScript的滚动数字显示效果,类似于老式计数器或电子表上的数字滚动
    这段代码实现了一个基于HTML、CSS和JavaScript的滚动数字显示效果,类似于老式计数器或电子表上的数字滚动效果。以下是代码的详细解释说明:HTML结构基础设置:<!DOCTYPEhtml> 声明文档类型为HTML5。<htmllang="en"> 指定文档语言为英文。<metacharset="UTF-8"> 和......
  • [vue] vue3封装clip动画, 实现元素的国度效果
    import{nextTick}from"vue";//数据类型functiongetDataType(){returnObject.prototype.toString.call(arguments[0]).slice(8,-1).toLowerCase();}/****@param{*}els单元素节点或者元素节点集合*@param{*}fn数据变更的函数,通过调用函数导致......
  • 【前端】-jQuery(带你让你深入了解学习使用jQuery)
    引言: jQuery是一个轻量级的JavaScript库,自2006年发布以来,它迅速成为Web开发中不可或缺的工具。它通过提供简洁的语法和强大的功能,简化了HTML文档操作、事件处理、动画效果以及AJAX请求的实现。jQuery允许开发者以更少的代码实现复杂的任务,提升开发效率。此外,jQu......
  • EKP qhky 附件A4纸张打印效果
    一.需求背景需求:EKPV16,对于附件打印 开发者一般情况下使用的是 请求直接预览打印,但是对于需要自定义打印文件的大小需要特别定制!方案:使用PDF.js在JSP页面中显示PDF文件(EKPV16项目中已引入PDF.js库)定制前效果:定制后效果: 二.Code  加载和渲染PDF文件......
  • 哨兵节点:思想简单,效果很棒的编程算法
    以下文章来源于IOT物联网小镇,作者道哥别人的经验,我们的阶梯!今天和同事一起调代码,定位到一处很耗时的地方。在某个线程中,同步周期需要保证在2毫秒(如果耗时不到2毫秒,那么就让剩下的时间进行sleep)。但是在调用一个模块的内部函数时,时不时的就飘到了3~5毫秒,时间抖动毫无保证。......
  • CSS——边框线条动画效果
    CSS——边框线条动画效果上次我们实现了边框的线条缩放效果,今天我们来用三种方式完成边框的线条旋转动态效果。方法一:使用伪元素这是最普遍、最常用的方法,我们需要为边框所在的元素添加伪元素,然后旋转这个伪元素即可。本节将讲解以下视频的实现过程。伪元素边框旋转......