html静态网页:放大镜

简介: html静态网页:放大镜

功能分三个模块:

1-鼠标跟随

2-处理越界

3-方大

效果:

1.png文件架构:

1.png

学习交流群:970353786

第一部分代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
        <style type="text/css">
            #box{
               width: 400px;
               height: 400px;
               border: 1px solid black;
               margin: 100px auto;
               position: relative;
            }
            #glass{
                width: 50px;
                height: 50px;
                background-color: green;
                left: 100px;
                top: 50px;
                position: absolute;
            }
        </style>
  </head>
  <body>
        <div id="box">
            <div id="glass">
            </div>
        </div>
  </body>
    <script type="text/javascript">
        var box = document.querySelector('#box');
        var glass = document.querySelector('#glass');
        // box.onclick = function(e){
        box.onmousemove = function(e){
            var x = e.pageX - box.offsetLeft;
            var y = e.pageY - box.offsetTop;
            x -= parseInt(getComputedStyle(glass).width)/2
            y -= parseInt(getComputedStyle(glass).height)/2
            glass.style.left = x + "px";
            glass.style.top = y + "px";
        }
    </script>
</html>

第二部分代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
        <style type="text/css">
            #box{
               width: 400px;
               height: 400px;
               border: 1px solid black;
               margin: 100px auto;
               position: relative;
            }
            #glass{
                width: 50px;
                height: 50px;
                background-color: green;
                left: 100px;
                top: 50px;
                position: absolute;
                display: none;
            }
        </style>
  </head>
  <body>
        <div id="box">
            <div id="glass">
            </div>
        </div>
  </body>
    <script type="text/javascript">
        var box = document.querySelector('#box');
        var glass = document.querySelector('#glass');
        // box.onclick = function(e){
        box.onmousemove = function(e){
            var x = e.pageX - box.offsetLeft;
            var y = e.pageY - box.offsetTop;
            x -= parseInt(getComputedStyle(glass).width)/2
            y -= parseInt(getComputedStyle(glass).height)/2
            //越界处理
            //左越界处理
            if (x < 0) {
                x = 0;
            }
            //上越界处理
            if (y < 0) {
                y = 0;
            }
            //右越界处理
            var maxLeft = parseInt(getComputedStyle(this).width) - parseInt(getComputedStyle(glass).width)
            if (x > maxLeft ) {
                x = maxLeft;
            }
            //下越界处理
            var maxHeight = parseInt(getComputedStyle(this).height) - parseInt(getComputedStyle(glass).height)
            if (y > maxHeight ) {
                y = maxHeight;
            }
            console.log(x,y);
            glass.style.left = x + "px";
            glass.style.top = y + "px"; 
        }
        box.onmouseover = function(){
            glass.style.display = "block"
        }
        box.onmouseout = function(){
            glass.style.display = "none"
        }
    </script>
</html>

第三部分代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
        <style type="text/css">
            *{
                padding: 0;
                margin: 0;
            }
            .box{
                width: 800px;
                margin: 50px auto;
            }
            .left{
                width: 250px;
                height: 250px;
                border: 1px solid black;
                float: left;
                margin-right:30px ;
                position: relative;
            }
            .left img{
                width: 100%;
            }
            .right{
                width: 500px;
                height: 500px;
                border: 1px solid black;
                overflow: hidden;
                float: left;
                display: none;
                position: relative;
            }
            .right img{
                position: absolute;
            }
            .glass{
                /* 如何计算放大镜宽高?? */
                /* 
                 已知:小div宽高 = 小图宽高 = 250*250
                      大div宽高 = 500*500
                      大图宽高 = 800*800
                 计算公式:
                    放大镜宽 / 小div宽 = 大div宽 / 大图宽
                    ==>放大镜宽 = 大div宽 / 大图宽 * 小div宽
                                = 500/800*250
                                =1250/8 = 156.125
                 */
                width:157px;
                height:157px;
                background-color: blue;
                position: absolute;
                left: 0;
                top: 0;
                opacity: 0.3;
                display: none;
            }
        </style>
  </head>
  <body>
        <div class="box">
            <div class="left">
                <img src="1.jpeg" >
                <div class="glass"></div>
            </div>
            <div class="right">
                <img src="2.jpeg" >
            </div>
        </div>
  </body>
    <script type="text/javascript">
        var leftDiv = document.querySelector('.left');
        var glass = document.querySelector('.glass');
        var rightDiv = document.querySelector('.right');
        var bigImg = document.querySelector('.right img');
        leftDiv.onmousemove = function(e){
            var x = e.pageX - this.offsetLeft;
            var y = e.pageY - this.offsetTop;
            x -= parseInt(getComputedStyle(glass).width)/2
            y -= parseInt(getComputedStyle(glass).height)/2
            //越界处理
            //左越界处理
            if (x < 0) {
                x = 0;
            }
            //上越界处理
            if (y < 0) {
                y = 0;
            }
            //右越界处理
            var maxLeft = parseInt(getComputedStyle(this).width) - parseInt(getComputedStyle(glass).width)
            if (x > maxLeft ) {
                x = maxLeft;
            }
            //下越界处理
            var maxHeight = parseInt(getComputedStyle(this).height) - parseInt(getComputedStyle(glass).height)
            if (y > maxHeight ) {
                y = maxHeight;
            }
            console.log(x,y);
            glass.style.left = x + "px";
            glass.style.top = y + "px"; 
            //大图移动,需要计算移动的距离
            /* 如何计算大图移动的距离?? */
            /* 
             已知:小div宽高 = 小图宽高 = 250*250
                  大div宽高 = 500*500
                  大图宽高 = 800*800
                  放大镜宽高= 157*157
                  放大镜移动的x和y
             计算大图移动的距离left和top????
                计算公式:
                放大镜移动x / 大图移动的x = 小图宽 / 大图宽
                ===>大图移动的x = 大图宽 / 小图宽 * 放大镜移动x
              */
            var left = -x * 800/250;
            var top =  -y * 800/250; 
            bigImg.style.left = left + "px";
            bigImg.style.top = top + "px";
        }
        leftDiv.onmouseover = function(){
            glass.style.display = "block";
            rightDiv.style.display = "block";
        }
        leftDiv.onmouseout = function(){
            glass.style.display = "none";
            rightDiv.style.display = "none";
        }
    </script>
</html>
相关文章
|
2月前
|
存储 移动开发 前端开发
HTML基础知识:构建网页的基石
【10月更文挑战第11天】HTML基础知识:构建网页的基石
106 0
|
4月前
|
数据采集 移动开发 前端开发
HTML代码的革命:语义化标签的魅力,让你的网页结构焕然一新!
【8月更文挑战第26天】本文探讨了Web前端开发中的语义化标签概念及其重要性。语义化标签通过使用具有明确含义的HTML标签来构建页面结构,提升了网页的可访问性及搜索引擎优化效果,并增强了代码的可读性和维护性。文章还讨论了实际开发中遇到的问题及未来发展趋势。
63 0
|
3月前
|
JavaScript 前端开发 容器
用HTML DOM实现有条件地渲染网页元素(上)
用HTML DOM实现有条件地渲染网页元素(上)
|
3月前
|
存储 JavaScript 前端开发
用HTML DOM实现有条件地渲染网页元素(下)
用HTML DOM实现有条件地渲染网页元素(下)
|
5月前
|
数据挖掘 Shell 测试技术
怎么用Python解析HTML轻松搞定网页数据
**Python解析HTML摘要** 本文介绍了使用Python处理HTML的常见需求,如数据提取、网络爬虫和分析,并讨论了三种解析方法。正则表达式适用于简单匹配,但对复杂HTML不理想;BeautifulSoup提供简单API,适合多数情况;lxml结合XPath,适合处理大型复杂文档。示例展示了如何用这些方法提取链接。
152 2
|
2月前
|
数据安全/隐私保护 C++
【HTML】构建网页的基石
本文介绍了HTML的基本概念和常用标签,包括HTML文件的基本结构、常见标签(如标题、段落、换行、图片、超链接等)、表格与表单的使用方法,以及无语义标签div和span的特性。通过具体示例展示了如何在VS Code中快速生成HTML框架及各标签的应用场景,帮助初学者快速掌握HTML的基础知识。
54 1
【HTML】构建网页的基石
|
3月前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
4月前
|
移动开发 HTML5
可达鸭举牌网页版本在线生成源码html5
可达鸭举牌网页版本,在线生成源码,点击分享即可制作DIY自己的举牌文字网页,需要GIF动图的自行用GIF图片录制工具录制下来。
55 1
可达鸭举牌网页版本在线生成源码html5
|
4月前
|
前端开发
HTML网页作业代码(仿写商城首页、学校官网网页等、源码可直接运行)
这篇文章提供了HTML网页作业的完整代码,包括仿写商城首页和学校官网网页的源码,以及如何运行和项目结构等详细信息。
HTML网页作业代码(仿写商城首页、学校官网网页等、源码可直接运行)
|
3月前
|
移动开发 前端开发 数据挖掘
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图