当前位置:网站首页>【网站放大镜效果】两种方式实现
【网站放大镜效果】两种方式实现
2022-07-30 18:41:00 【马小跳的Coding进阶之路】
一、要实现的效果如下图所示:

二、具体操作代码:
有两种方式:
2.1——jQuery图像缩放插件zoom.js
使用方法:
1.将 zoom.js 和 zoom.css 文件链接到网站。
<linkhref="css/zoom.css"rel="stylesheet">
<scriptsrc="js/zoom.js"></script>
2.zoom.js依赖于transition.js文件,所以一定要调用。
<script src="js/transition.js"></script>
3.添加一个数据操作="zoom"属性到你想要缩放的图像。如下:
<img src="img/blog_post_featured.png" data-action="zoom">
完整代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css"> .jqzoom {
border: 1px solid; float: left; } * {
margin: 0; padding: 0; } </style>
<link rel="stylesheet" type="text/css" href="css/jqzoom.css">
<script type="text/javascript" src="js/jquery-1.12.4.js"></script>
<script type="text/javascript" src="js/jquery.jqzoom.js"></script>
<script type="text/javascript"> $(document).ready(function() {
//放大镜效果 $(".jqzoom").jqueryzoom({
xzoom: 300, //width yzoom: 300, //height offset: 0 }); }) </script>
</head>
<body>
<div class="jqzoom">
<img src="images/yellow_one_small.jpg" jqimg="images/yellow_one_big.jpg" alt="">
</div>
</body>
</html>
2.2——jQuery代码实现:
实现思路:
1.左盒子宽度为400px,左边图片尺寸为400px400px
2.右盒子宽度为400px,右边图片尺寸为左图的2.5倍,1000px1000px
3.鼠标悬停后的小框框尺寸:左图÷2.5 = 160px*160px
完整代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jq代码实现放大镜效果现</title>
<style> body, ul, li {
padding: 0; margin: 0; list-style: none; } .leftbox, .rightbox {
width: 400px; height: 400px; border: 1px solid red; position: absolute; } .rightbox {
left: 410px; top: 0; overflow: hidden; display: none; } .marks {
/*小图的宽高比例 窗口的宽度 / 大图的宽度 * 窗口的宽度 */ width: 160px; height: 160px; background: rgba(254, 238, 167, .4); position: absolute; left: 0; top: 0; display: none; } </style>
<body>
<!-- 建立显示原图窗口 -->
<div class="leftbox">
<!-- 插入要放大的图片 -->
<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fp3.ssl.cdn.btime.com%2Ft01cd85a3c6cce1bece.jpg%3Fsize%3D400x400&refer=http%3A%2F%2Fp3.ssl.cdn.btime.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1661654929&t=5b7dd79acc7f463411798d9c258fcbb6" alt="" width="400">
<!-- 加入用于锁定放大区域的小框框 -->
<div class="marks"></div>
</div>
<!-- 建立显示放大图片的窗口 -->
<div class="rightbox">
<img width="1000" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fp3.ssl.cdn.btime.com%2Ft01cd85a3c6cce1bece.jpg%3Fsize%3D400x400&refer=http%3A%2F%2Fp3.ssl.cdn.btime.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1661654929&t=5b7dd79acc7f463411798d9c258fcbb6" alt="" style="position: absolute;">
</div>
<script src="html/js/jquey1.12.4.js"></script>
<script> // 绑定鼠标移入原图窗口事件 $('.leftbox').mouseover(function(e) {
$('.rightbox').css('display', 'block'); $('.marks').css('display', 'block'); }) //绑定鼠标在原图窗口移动的事件 $('.leftbox').mousemove(function(e) {
// 获取鼠标当前的位置 var x = e.clientX; var y = e.clientY; // 获取原图窗口距离文档的偏移位置 var sX = $('.leftbox').offset().left; var sY = $('.leftbox').offset().top; // 计算鼠标的相对位置(相对于原图窗口的偏移距离) var mx = x - sX; var my = y - sY; // 获取小框框的宽高 var mw = $('.marks').width() / 2; var mh = $('.marks').height() / 2; // 鼠标移动后小框框的移动距离 $('.marks').css({
left: mx - mw + 'px', top: my - mh + 'px' }); // 获取小框框的偏移位置 var lw = $('.marks').position().left; var lh = $('.marks').position().top; // 判断边界(小框框只能在原图窗口范围内移动) var maxW = $('.leftbox').width() - $('.marks').width() var maxH = $('.leftbox').height() - $('.marks').height() // 左边界 if (lw <= 0) {
$('.marks').css('left', '0px'); } // 右边界 if (lw >= maxW) {
$('.marks').css('left', maxW + 'px'); } // 上边界 if (lh <= 0) {
$('.marks').css('top', '0px'); } // 下边界 if (lh >= maxH) {
$('.marks').css('top', maxH + 'px'); } // 获取小框框的偏移位置 var lw = $('.marks').position().left; var lh = $('.marks').position().top; // 计算鼠标在小图里的位置 *2.5计算大图移动的比例 var newX = lw * 2.5; var newY = lh * 2.5; $('.rightbox img').css({
left: -newX + 'px', top: -newY + 'px' }); }) //绑定鼠标离开原图窗口事件 $('.leftbox').mouseout(function() {
$('.rightbox').css('display', 'none'); $('.marks').css('display', 'none'); }) </script>
</body>
</html>
以上两种方法亲测有效。
ending~
边栏推荐
- Pytorch基础--tensorboard使用(一)
- DM8: Single database and single instance to build a local data guard service
- 【Swords Offer】Swords Offer 17. Print n digits from 1 to the largest
- Swiper轮播图片并播放背景音乐
- 自己需要努力
- The sixteenth issue of eight-part article Balabala said (MQ)
- 【Pointing to Offer】Pointing to Offer 22. The kth node from the bottom in the linked list
- Go system collection
- 【Qt Designer工具的使用】
- 图解LeetCode——11. 盛最多水的容器(难度:中等)
猜你喜欢

The Meta metaverse division lost 2.8 billion in the second quarter!Still want to keep betting?Metaverse development has yet to see a way out!

中集世联达飞瞳全球工业人工智能AI领军者,全球顶尖AI核心技术高泛化性高鲁棒性稀疏样本持续学习,工业级高性能成熟AI产品规模应用

- daily a LeetCode 】 【 191. A number of 1

Recommendation | People who are kind to you, don't repay them by inviting them to eat

网络基础(三)01-网络的基础概念——URL地址组成之协议、主机地址、路径和参数&127.0.0.1本地回环地址& 查看网址IP地址并访问之ping空格+网址&netstat -anb查看本机占用端口

使用postman调接口报Content type ‘text/plain;charset=UTF-8‘ not supported

Application of time series database in the field of ship risk management

【HMS core】【Analytics Kit】【FAQ】如何解决华为分析付费分析中付款金额显示为0的问题?

第十六期八股文巴拉巴拉说(MQ篇)

ESP8266-Arduino programming example-HC-SR04 ultrasonic sensor driver
随机推荐
while,do while,for循环语句
The Meta metaverse division lost 2.8 billion in the second quarter!Still want to keep betting?Metaverse development has yet to see a way out!
SwiftUI iOS Boutique Open Source Project Complete Baked Food Recipe App based on SQLite (tutorial including source code)
CCNA-NAT协议(理论与实验练习)
SwiftUI iOS 精品开源项目之 完整烘焙食品菜谱App基于SQLite(教程含源码)
natural language processing nltk
ESP8266-Arduino programming example-HC-SR04 ultrasonic sensor driver
《自然语言处理实战入门》---- 文本样本扩展小技巧:使用回译技术进行样本增强
CMake库搜索函数居然不搜索LD_LIBRARY_PATH
Anaconda Navigator stuck on loading applications
好未来单季营收2.24亿美元:同比降84% 张邦鑫持股26.3%
Hello, my new name is "Bronze Lock/Tongsuo"
【HMS core】【Analytics Kit】【FAQ】如何解决华为分析付费分析中付款金额显示为0的问题?
荐号 | 对你有恩的人,不要请吃饭来报答
DTSE Tech Talk丨第2期:1小时深度解读SaaS应用系统设计
ESP8266-Arduino编程实例-DS18B20温度传感器驱动
Go 系统收集
不同的路径依赖
卫星电话是直接与卫星通信还是通过地面站?
One year after graduation, I was engaged in software testing and won 11.5k. I didn't lose face to the post-98 generation...