• 放大镜效果


    HTML

    <div id="div1">
    	<img src="img/big.jpg"/>
    	<span></span>
    	<div class="mark"></div>
    </div>
    <div id="div2">
    	<img src="img/big.jpg"/>
    </div>
    

    CSS

    #div1{
    	 400px;
    	height: 200px;
    	overflow: hidden;
    	position: relative;
    }
    #div1 img{
    	 100%;
    	height: 100%;
    }
    .mark{
    	 100%;
    	height: 100%;
    	position: absolute;
    	left: 0;
    	top: 0;
    	background: transparent;
    }
    #div1 span{
    	position: absolute;
    	 100px;
    	height: 100px;
    	background: yellow;
    	opacity: 0.5;
    	filter: alpha(opacity=50);
    	left: 0;
    	top: 0;
    	display: none;
    	z-index: 9999;
    }
    #div2{
    	 300px;
    	height: 300px;
    	margin-top: 20px;
    	display: none;
    	overflow: hidden;
    	position: relative;
    }
    #div2 img{
    	 800px;
    	height: 400px;
    	position: absolute;
    }
    

    JS

    //span抖动闪现
    //1.js:onmouseenter/onmouseleave
    //最早ie firefox chrome,做兼容非常的麻烦
    //css:加一个曾
    var oDiv=document.getElementById('div1');
    var oDiv1=document.getElementById('div2');
    var oSpan=oDiv.getElementsByTagName('span')[0];
    var oImg=oDiv1.getElementsByTagName('img')[0];
    
    oDiv.onmouseover=function(){
    	oSpan.style.display='block';
    	oDiv1.style.display='block';
    };
    oDiv.onmouseout=function(){
    	oSpan.style.display='none';
    	oDiv1.style.display='none';
    };
    oDiv.onmousemove=function(ev){
    	var ev=ev||event;
    	
    	var disX=ev.clientX-oDiv.offsetLeft-oSpan.offsetWidth/2;
    	var disY=ev.clientY-oDiv.offsetTop-oSpan.offsetHeight/2;
    	
    	//限制范围
    	//左右
    	if(disX<0){
    		disX=0;
    	}else if(disX>oDiv.clientWidth-oSpan.offsetWidth){
    		disX=oDiv.clientWidth-oSpan.offsetWidth;
    	}
    	//上下
    	if(disY<0){
    		disY=0;
    	}else if(disY>oDiv.clientHeight-oSpan.clientHeight){
    		disY=oDiv.clientHeight-oSpan.clientHeight;
    	}
    	
    	oSpan.style.left=disX+'px';
    	oSpan.style.top=disY+'px';
    	
    	//比例
    	var scaleX=disX/(oDiv.clientWidth-oSpan.offsetWidth);
    	var scaleY=disY/(oDiv.clientHeight-oSpan.clientHeight);
    	
    	oImg.style.left=-(oImg.offsetWidth-oDiv1.offsetWidth)*scaleX+'px';
    	oImg.style.top=-(oImg.offsetHeight-oDiv1.offsetHeight)*scaleY+'px';
    }
    

      

     

  • 相关阅读:
    Vue3.0实战项目
    Vue 笔试题(做对九题即可成为前端懂王)
    CSS 响应式布局---Grid 布局
    CSS快速提升技巧(一)
    前端骨架屏
    Python学习29
    Python学习28
    Python学习27
    Python学习26
    Python学习25
  • 原文地址:https://www.cnblogs.com/yangxue72/p/8436108.html
Copyright © 2020-2023  润新知