zoukankan      html  css  js  c++  java
  • 放大镜效果

    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';
    }
    

      

     

  • 相关阅读:
    《Docker Deep Dive》Note
    使用 Angular RouteReuseStrategy 缓存(路由)组件
    我的 VSCode 配置
    TCP/IP协议
    Fiddler代理手机抓包
    基于 Docker 和 GitLab 的前端自动化部署实践笔记
    Vue.js 2.x render 渲染函数 & JSX
    服务器免密登陆脚本
    gitlab+jenkins+pm2+rsync实现node的自动化部署
    nginx常用
  • 原文地址:https://www.cnblogs.com/yangxue72/p/8436108.html
Copyright © 2011-2022 走看看