【小河今学 | HTML + CSS + JS + JQ】放大镜案例

CSS 弹性盒布局:flex-wrap 换行与多行交叉轴对齐 默认情况下,弹性容器(flex container)会把所有子项(flex item)挤在一行里,哪怕空间不够也只会压缩子项,而不会换行。浏览器会依次把子项放进当前行,当剩余空间不足以容纳下一个子项的基础尺寸时,就开启新的一行。一旦允许换行,容器里就会出现多条「弹性行(flex line)」,此时交叉轴对齐的行为也会从「单行对齐」变成「多行对齐」,是默认值:当子项没有设置固定高度时,行会被拉伸,子项随之变高,看起来像是「撑满了容器」。上面这段代码中,每个子项固定 200px 宽,容器宽度决定每行能放几个。 阅读详情

08.23 今天作业写放大镜案例
放大镜组件常用在电商网站的商品页面中,用于使用户更好的查看商品,示例如下:
在这里插入图片描述
以下是案例最终完成效果:
在这里插入图片描述

一、布局

首先观察上述效果图可以看出我们一共需要三个部分,分别是缩略图部分,小图部分和大图部分。每个部分需要用到的图片的分辨率也不相同,需要自己调整,这里我缩略图的分辨率为80 x 100,小图分辨率为400 x 500,大图分辨率为1200 x 1500。
具体代码如下:

	<div class="contanier">
        <!-- 小图 -->
        <div class="small">
            <!-- 遮罩 -->
            <div class="mask"></div>
            <img src="/images/small1.png" alt="">
        </div>
        <!-- 缩略图 -->
        <div class="thums">
            <ul>
                <li><img src="/images/thum1.png" alt="thums"></li>
                <li><img src="/images/thum2.png" alt="thums"></li>
                <li><img src="/images/thum3.png" alt="thums"></li>
                <li><img src="/images/thum4.png" alt="thums"></li>
                <li><img src="/images/thum5.png" alt="thums"></li>
                <li><img src="/images/thum6.png" alt="thums"></li>
            </ul>
        </div>
        <!-- 放大图 -->
        <div class="big">
            <img src="/images/big1.png" alt="">
        </div>
    </div>
* {
    margin: 0;
    padding: 0;
}

li {
    list-style: none;
}

.container {
    position: relative;
}

.mask {
    width: 200px;
    height: 200px;
    position: absolute;
    background-color: pink;
    opacity: 0.6;
    top: 0;
    left: 0;
}

.thums ul {
    width: 400px;
    text-align: center;
}

.thums ul li {
    display: inline-block;
    margin-right: 8px;
    
}

.thums ul li:last-child {
    margin-right: 0;
}

.thums ul li img {
    width: 40px;
    border: 2px solid transparent;
}

.thums ul li img:hover {
    border: 2px solid pink;
}

.big {
    width: 600px;
    height: 600px;
    position: absolute;
    left: 410px;
    top: 0;
    overflow: hidden;
}

.big img {
    position: absolute;
}

二、逻辑

逻辑部分主要实现

  1. 鼠标移入缩略图后将小图和大图换成缩略图所对应的图,这里注意将得到的src进行切割取数字。

  2. 遮罩随鼠标在小图上移动,这里注意当靠近边框时,遮罩是不会超出去的。
    在这里插入图片描述

  3. 大图跟随遮罩移动显示,这里注意要根据两张图的比例来调整移动显示。

具体代码如下

;(function($){
    // 同步图片
    $('.thums img').mouseover(function () { 
        // console.log($(this).attr('src'))
        // 获取到当前图片的路径
        var thumsImg = $(this).attr('src');
        // 把获取到的图片路径提取对应数字
        var thumsImgNum = thumsImg.substr(12,1);
        // 将获取到的数字覆盖小图和大图的路径
        $('.small img').attr('src', '/images/small' + thumsImgNum + '.png');
        $('.big img').attr('src', '/images/big' + thumsImgNum + '.png');
    });

    // 鼠标移动到小图上时,让遮罩方块跟着移动
    $('.small').mousemove(function (e) { 
        var mouseX = e.pageX - $('.mask')[0].clientWidth/2;
        var mouseY = e.pageY - $('.mask')[0].clientHeight/2;
        // 让遮罩控制在小图内不超出
        if(mouseX < 0){
            mouseX = 0;
        }else if(mouseX > $('.small img')[0].clientWidth - $('.mask')[0].clientWidth){
            mouseX = $('.small img')[0].clientWidth - $('.mask')[0].clientWidth;
        }
        if(mouseY < 0){
            mouseY = 0;
        }else if(mouseY > $('.small img')[0].clientHeight - $('.mask')[0].clientHeight){
            mouseY = $('.small img')[0].clientHeight - $('.mask')[0].clientHeight;
        }

        $('.mask').css({
            'left': mouseX,
            'top': mouseY
        })

        // 让大图跟着移动
        $('.big img').css({
            'left': mouseX * -3 + 'px',
            'top' : mouseY * -3 + 'px'
        })
    });
})(jQuery);
STM32G474使用HRTIM触发多路ADC采样,通过DMA传输,通过串口打印显示,实现PWM中间时刻采样,避免开关噪声 本章工程使用HRTIM定时器进行ADC的触发,打开主定时器,子定时器A,B,C。(本工程未使用到A与C定时器,配置时可无需打开)主定时器配置:设置主定时器的频率为100KHz,并且设置自动更新以及自动重装载值。子定时器B设置:设置子定时器B为100KHz,并且每九次计数完成后产生一次中断。配置如上:1.打开自动预装载值2.打开自动复位3.设置死区时间以及互补PWM4.定时器复位触发更新寄存器5.定时器翻转重置更新6.重置触发源(定时器计数器在发生更新事件时重置) 阅读详情

相关推荐

hpm6750evk2开发板(四)TCP回送(1000M网口)

再接下来我们修改代码,先找到配置网速的地方,肯定是在enet的初始化函数里面,我们一个函数一个函数找,也可以用单步调试一步一步找,结果发现是在enet_init函数里面调用的rtl8211_basic_mode_default_config函数配置网速的,我们把enet_phy_port_speed_100mbps改为enet_phy_port_speed_1000mbps,重新编译运行试试。首先我们复制一份lwip_tcpecho代码,重命名为lwip_tcpecho_RGMII,如下图所示。

Silas1750的博客 921

jQuery放大镜实现

jQuery实现放大镜效果

TERMINUSL的博客 668

二阶锥松弛在配电网最优潮流计算中的应用(IEEE33节点配电网最优潮流算例matlab程序)(yalmip+cplex)

文献[7]建立了以支路潮流计算为基础的OPF模型,针对OPF中的非凸性约束,采用SOCR技术将其松弛为二阶锥约束,整个 OPF 模型则被转化为二阶锥规划( Second Order Cone Programming,SOCP)问题,对其求解可以得到全局最优解。其次结合辐射型配电网潮流特点建立支路潮流约束,并考虑配电网中的可控单元,包括分布式电源和离散、连续无功补偿装置,建立其出力约束,该模型为非凸非线性模型;式中,αj,t和βij,t分别为t时段内节点i电压的二次方和支路ij电流的二次方。

weixin_47365903的博客 1万+

jQuery实现放大镜功能

该功能为三部分 1.小图部分 小图宽高为400px 2.放大镜 放大镜宽高为200px 3.大图部分 大图宽高为800px 大图小图都是同一张图片,通过css来设置宽高,通过鼠标在小图中的位置来控制大图的横向和纵向滚动条的位置来实现该功能 效果图: html代码 左边为小图部分,右边为大图部分 <div id="smallBox"> <img src="/img/1.png" alt=""> <div id="zoom"></div> </di

MyBlog 2082

别再让OCV拖慢你的芯片!手把手教你用set_timing_derate优化STA时序(附CPPR实战)

本文深入探讨了芯片设计中OCV(On-Chip Variation)对时序分析的影响,并提供了使用`set_timing_derate`优化STA时序的实战指南。通过分阶段derate设置和CPPR技术,有效减少时序违例,提升芯片性能。文章结合TSMC 7nm工艺案例,详细解析了OCV建模与优化策略,助力工程师实现时序收敛。

weixin_42525005的博客 305

国产数据库安装部署说明

国产数据库安装部署说明

weixin_38203586的博客 910

html局部放大镜效果,jQuery实现图片局部放大镜效果

下图只是给大家举个例子,类似于这种效果图:具体实现过程请看下文代码:css.zoomPad{position:relative;float:left;z-index:99;cursor:crosshair;}.zoomPreload{-moz-opacity:0.8;opacity: 0.8;filter: alpha(opacity = 80);color: #333;font-size: 12...

weixin_29795345的博客 720

保姆级教程:手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动

本文提供了一份详细的保姆级教程,手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动。从基础配置到RGMII接口的特殊设置,再到驱动开发的关键步骤和调试技巧,帮助开发者快速掌握PHY芯片的移植与开发。

weixin_33734785的博客 333

html做图片放大镜,jquery实现图片放大镜效果

jquery实现图片放大镜效果龙行web前端2018-11-2239380评论分享一个jquery制作的图片放大镜效果,这种常用的一般在电商商品详情展示页用的比较多,通过放大图片让消费者更能清晰查看商品细节,增加用户体验度,通过原图放大不会造成图片失真,找到这个demo分享给大家:首先是引入Jquery文件jquery-1.2.6.min.js和CSS样式表。其次在...

weixin_42355256的博客 712

芒果YOLOv8改进16:检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

YOLOv8代码改进教程:即插即用|新颖轻量化非对称多级压缩LADH检测头🎈

包括YOLOv5、YOLOv7、YOLOv8等模型改进 5612

蓝鸟四轴飞控系统C程序V3.0(基础版本)深度解读

2. 解析遥控通道数据(油门 / 横滚 / 俯仰 / 偏航),转换为标准化值(-1000~+1000);3. 封装PID初始化(PID_Init,配置KP/KI/KD、输出限幅、积分限幅);,包含姿态角(Attitude_Data.Roll/Pitch/Yaw)、角速度(Gyro_Data.X/Y/Z)、遥控值(RC_Data[0~5])、电池电压(Bat_Volt)、电机PWM值(Motor_PWM[0~3])、系统状态(Sys_State),校验和通过Check_Sum()函数计算;

搏博的专栏 344

【小河今学 | HTML + CSS + JS + JQ】省城区联动案例

省城区联动案例

LB_laber的博客 281

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【小河今学 | HTML + CSS + JS + JQ】Tab切换案例

Tab切换案例

LB_laber的博客 307

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【小河今学 | Html+CSS+JS+JQ】音乐播放器1-布局

音乐播放器

LB_laber的博客 665

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【小河今学 | HTML + CSS + JS + JQ】轮播图

轮播图

LB_laber的博客 261

【小河今学 | JavaScript + JQuery】音乐播放器2-功能实现

音乐播放器

LB_laber的博客 1737

CSS 盒子模型与背景渐变、文字渐变实战

content(内容区):文字、图片等实际内容占据的区域padding(内边距):内容与边框之间的空白border(边框):盒子的边界margin(外边距):盒子与其他盒子之间的间距fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;margin 外边距border 边框padding 内边距content 内容区。

2601_96876853的博客 241

CSS 定位布局:固定定位与粘性定位详解

fixed相对视口定位,脱离文档流,适合始终固定的元素,如导航栏、悬浮按钮。sticky是相对定位与固定定位的结合,保留文档流占位,适合滚动吸附效果,如表头吸顶、目录跟随。两者都容易受到祖先元素transform和overflow的影响,排查问题时优先检查这两点。实际开发中,根据"是否需要始终固定"和"是否需要保留占位"来选择合适的方式。掌握这两种定位方式,能让你在实现吸顶导航、悬浮操作、滚动跟随等交互时更加得心应手。

2601_96876853的博客 443

CSS display 模式转换详解

display属性是 CSS 布局的基石。掌握blockinlineflexgrid等常见取值,并理解它们之间的转换规则,能够帮助我们更灵活地控制页面结构。在实际开发中,建议优先使用flex和grid完成布局,仅在必要时才通过display转换处理细节问题。

2601_96876853的博客 338

CSS 定位布局与 z-index 叠放次序详解

层叠上下文(Stacking Context)是一个独立的「三维空间」,内部元素的z-index只在同一个上下文内比较。子元素的z-index再大,也无法突破父级上下文所处的层级。根元素html;position为且z-index不为auto;或sticky(现代浏览器);opacity小于 1;transformfilter等不为none;;flex/grid子项且z-index不为auto。position决定元素是否脱离文档流以及定位参照物;z-index。

2601_96876853的博客 413

CSS 弹性盒布局:子项目 flex 伸缩与 gap 间隙详解

flex-grow决定剩余空间如何分配,决定空间不足时如何压缩,flex-basis决定伸缩基准;日常优先使用flex简写,理解flex: 1与flex: auto的差异;项目间距优先使用gap,避免margin带来的首尾处理问题;注意与这两个高频细节。

2601_96876853的博客 355

升级 three 后标签「点击全部失效」——CSS2D 层事件治理全解

three.js 升级至 r147+ 后,CSS2D 标签点击失效源于 OrbitControls 绑定 canvas 导致指针捕获劫持事件。解决方案分两层:第一层,通过 labelRenderer.domElement.style.pointerEvents = 'none' 使层透明,仅交互元素设 pointer-events: auto 并用 stopPropagation 阻止冒泡;第二层,防止窗体误关与重复弹窗,需在容器上阻止冒泡、关闭按钮使用 stopImmediatePropagation

weixin_44242600的博客 329

CSS 定位布局:相对定位与绝对定位详解

父元素 relative + 子元素 absolute」是 CSS 中最常用的定位组合,几乎所有的角标、下拉菜单、tooltip 都基于它实现。它决定了元素在页面中的定位方式,也是实现悬浮按钮、下拉菜单、遮罩层、角标等常见 UI 效果的核心手段。的偏移只是视觉位移,不会改变元素在文档流中的占位,因此不会引起其他元素重排。在视觉上向右移动 30px、向下移动 20px,但它原本占据的空间依然保留,后面的元素不会补上来。再大也无法跳出父元素的层级。,不再占据原来的空间,其他元素会像它不存在一样重新排列。

2601_96876853的博客 266

CSS 轮播图:让内容盒子垂直居中的几种做法

做轮播图时,最常见的结构是「外层容器固定高度 + 内层内容盒子(图片、标题、按钮组)」。轮播图内容盒子的垂直居中,本质是「容器有高度 + 子元素有居中规则」。轮播容器用 Flex,内层盒子自动在两个方向居中,代码最少、兼容性最好(现代浏览器全支持)。下面按「从简单到通用」的顺序,给出几种在轮播图中真正好用的垂直居中方案。,水平居中了,但垂直方向总是贴着顶部,或者被拉伸变形。,这是不依赖 Flex/Grid 的经典写法。新项目不建议使用,仅在维护老代码时能看懂即可。是 Flex 两个属性的简写,写法更短。

2601_96876853的博客 367

CSS 弹性盒子布局:display: flex 从入门到实战

2009 年 W3C 提出了 Flexible Box Layout(弹性盒子布局),它用一套「主轴 + 交叉轴」的模型,把「排列、对齐、分配剩余空间」这些高频需求变成了一行 CSS 就能解决的事情。会立刻从「块级纵向排列」变成「横向一行排列」,这就是 Flex 最直观的效果。只改变视觉顺序,不改变 DOM 顺序,注意可访问性与 Tab 键顺序问题。这些方案要么需要清除浮动,要么需要精确计算宽度,垂直居中更是经典难题。所有对齐属性都是围绕这两个轴展开的,记住这一点,后面的属性就不会混淆。

2601_96876853的博客 455

css注意事项二

块元素上下 margin 会合并:上面盒子 margin-bottom:10px,下面盒子 margin-top:10px,中间间距不是 20px,只会是 10px。❌ 误区:给块级 div 加 text-align:center,不能让 div 盒子自己居中!→ 你设置的 width,包含 border 边框 + padding 内边距,不会撑大盒子。写反了,选中 active 的页码,hover 效果不出来。参数:x 偏移,y 偏移,模糊大小,扩展大小,颜色 后台组件阴影不要太重,淡淡的就可以。

2603_96589670的博客 320
上一篇: 【小河今学 | HTML + CSS + JS + JQ】省城区联动案例
下一篇: 【小河今学 | HTML + CSS + JS + JQ】轮播图
LB_laber
博客等级 码龄7年 14粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值