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

    1.html布局:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<link rel="stylesheet" type="text/css" href="mag.css"/>
    	</head>
    	<body>
    		<div id="boxShow">
    		<div class="smallpic" id="smallpic">
    			<img src="img/ph1.jpg" style="opacity: 1;"/>
    			<img src="img/ph2.jpg"/>
    			<img src="img/ph3.jpg"/>
    			<img src="img/ph4.jpg"/>
    			<img src="img/ph5.jpg"/>
    			<img src="img/ph6.jpg"/>
    			<div class="mask" id="mask"></div>
    		</div>
    		<div id="boxul">
    			<div class="wrap">
    			<ul id="picUl">
    				<li class="active"><img src="img/ph1.jpg"/></li>
    				<li><img src="img/ph2.jpg"/></li>
    				<li><img src="img/ph3.jpg"/></li>
    				<li><img src="img/ph4.jpg"/></li>
    				<li><img src="img/ph5.jpg"/></li>
    				<li><img src="img/ph6.jpg"/></li>
    			</ul>
    			</div>
    		<a href="javascript:;" id="left"><</a>
    		<a href="javascript:;" id="right">></a>
    		</div>
    
    		</div>
    		<div class="bigpic" id="bigpic">
    			<div id="img1">
    			<img src="img/big1.jpg"/>
    			<img src="img/big2.jpg"/>
    			<img src="img/big3.jpg"/>
    			<img src="img/big4.jpg"/>
    			<img src="img/big5.jpg"/>
    			<img src="img/big6.jpg"/>
    			</div>
    		</div>
    		<script src="mag.js" type="text/javascript" charset="utf-8"></script>
    		 <script src="move.js" type="text/javascript" charset="utf-8"></script>
    	</body>
    </html>
    

     2.css样式:mag.css

    			*{
    				padding:0px;margin:0px;
    			}
    			.smallpic{
    				 450px;
    				height: 450px;
    				border: 1px solid #ccc;
    				position: relative;
    				margin-bottom: 10px;
    			}
    			.smallpic img{
    				 450px;
    				height: 450px;
    				position: absolute;
    				left:0px;
    				top:0px;
    				opacity: 0;
    			}
    			#boxShow{
    				 460px;
    				height: 512px;
    			}
    			#boxul{
    				 450px;
    				height: 58px;
    				position: relative;
    			}
    			.wrap{
    				 315px;
    				height: 70px;
    				margin: 0 auto;
    				position: relative;
    				overflow: hidden;
    			}
    			#picUl{
    				500px;
    				height: 58px;
    				position: absolute;
    				left: 0;
    				top: 0;
    			}
    			#picUl li{
    				 58px;
    				height: 58px;
    				margin: 0 10px;
    				list-style: none;
    				float: left;
    			}
    			#picUl li.active{
    				border: 2px solid red;
    			}
    			#picUl li img{
    				 54px;
    				height: 54px;
    				border: 2px solid #fff;
    			}
    			#right,#left{
    				font-size: 30px;
    				color: #ccc;
    				font-family: verdana;
    				position: absolute;
    				text-decoration: none;
    				top:10px;
    			}
    			#left{
    				left:10px;
    			}
    			#right{
    				right:10px;
    			}
    			#right:hover,#left:hover{
    				color: #000;
    			}
    			.mask{
    				position: absolute;
    				left:0px;top:0px;
    				 50px;
    				height: 50px;
    				background: rgba(169,255,0,0.5);
    				visibility: hidden;
    			}
    			.bigpic{
    				 600px;
    				height: 600px;
    				border: 1px solid #ccc;
    				position: absolute;
    				left:455px;
    				top:0px;
    				overflow: hidden;
    				visibility: hidden;
    			}
    			#img1{
    				 800px;
    				height: 800px;
    			}
    			.bigpic img{
    				 100%;
    				 100%;
    				position: absolute;
    				left:0px;
    				top:0px;
    			}
    

      3.js效果:mag.js

    			var oSmallPic=document.getElementById('smallpic');//小图
    			var oMask=document.getElementById('mask');//小方
    			var oBigPic=document.getElementById('bigpic');//大方
    			var oImg1=document.getElementById('img1');//大图
    			var imgLi2=oImg1.getElementsByTagName('img');//包裹大图的框
    			var oul=document.getElementById('picUl');//小图下面的滚动图片的框
    			var oli=document.getElementsByTagName('li');//滑动的图片元素
    			var oBtnleft=document.getElementById('left');//做按钮
    			var oBtnright=document.getElementById('right');//右边按钮
    			var imgLi=oSmallPic.getElementsByTagName('img');//有放大镜的图片元素
    			//小方/大方=小图/大图=scale
    			oSmallPic.onmouseover=function(){
    				//让小芳和大芳显示
    				oMask.style.visibility='visible';
    				oBigPic.style.visibility='visible';
    				//求小芳的尺寸
    				oMask.style.width=oBigPic.offsetWidth*oSmallPic.offsetWidth/oImg1.offsetWidth+'px';
    				oMask.style.height=oBigPic.offsetHeight*oSmallPic.offsetHeight/oImg1.offsetHeight+'px';
    				//求比例:倍数
    				var scale=oBigPic.offsetWidth/oMask.offsetWidth;
    				
    				this.onmousemove=function(ev){
    					var ev=ev||window.event;
    					//让鼠标移动的放置在盒子的中间
    					var l=ev.clientX-oMask.offsetWidth/2;
    					var t=ev.clientY-oMask.offsetHeight/2;
    					if(l<0){
    						l=0;
    					}else if(l>=oSmallPic.offsetWidth-oMask.offsetWidth){
    						l=oSmallPic.offsetWidth-oMask.offsetWidth;
    					}
    			
    					if(t<0){
    						t=0;
    					}else if(t>=oSmallPic.offsetHeight-oMask.offsetHeight){
    						t=oSmallPic.offsetHeight-oMask.offsetHeight;
    					}
    					//判断小芳不能移出小图的范围。
    					//赋值给小芳
    					oMask.style.left=l+'px';
    					oMask.style.top=t+'px';
    					//将对应比例赋给大图
    					oImg1.style.left=-l*scale+'px';
    					oImg1.style.top=-t*scale+'px';
    					
    				}
    			}
    			
    			oSmallPic.onmouseout=function(){
    				oMask.style.visibility='hidden';
    				oBigPic.style.visibility='hidden';
    			}
    
    			// 让oul滚动
    		 oBtnright.onclick=function(){
    		 	if(oul.offsetLeft>0){
    		 		oul.style.left=-4*oli[0].offsetWidth+20+'px';
    		 	}
    		 	else(oul.offsetLeft<-4*oli[0].offsetWidth)
    		 	{
    		 		oul.style.left=0;
    		 	}
    			oul.style.left=-4*oli[0].offsetWidth+'px';			 	
    		 }
    		  oBtnleft.onclick=function(){
    			oul.style.left=0;
    		 }
    			//切换
    			var num=0;
    			for(var i=0;i<oli.length;i++){
    				oli[i].x=i;//自定义索引  给每一个小圆圈添加一个索引
    				oli[i].onmouseover=function(){
    					num=this.x;//num:当前被点击的按钮索引
    					tab();
    				}
    			}
    			
    			//将切换的过程封装起来
    			function tab(){
    				for(var j=0;j<oli.length;j++){
    					oli[j].className='';
    					imgLi[j].style.opacity='0';
    					imgLi2[j].style.opacity='0';
    					
    				}
    				oli[num].className='active';
    				imgLi[num].style.opacity='1';
    				imgLi2[num].style.opacity='1';
    			}	
    

    缓冲运动的封装:move.js

    	function getStyle(obj,attr){
    				if(obj.currentStyle){
    					return obj.currentStyle[attr];//ie8
    				}else{
    					return getComputedStyle(obj)[attr];//标准
    				}
    			}
    			function bufferMove(obj,json,fn){
    				clearInterval(obj.timer);//obj.timer:每个元素都有一个自己的定时器
    				obj.timer=setInterval(function(){
    					var bstop=true;//所有的属性都已经到了目标点
    					
    					for(var attr in json){
    					
    							//取当前值 current
    							var current=0;
    							if(attr=='opacity'){
    								current=Math.round(getStyle(obj,attr)*100);
    							}else{
    								current=parseInt(getStyle(obj,attr));
    							}
    							//求速度
    							var speed=(json[attr]-current)/7;
    							speed=speed>0?Math.ceil(speed):Math.floor(speed);
    							
    							
    							if(current!=json[attr]){
    								bstop=false;
    								if(attr=='opacity'){
    									obj.style.opacity=(current+speed)/100;
    									obj.style.filter='alpha(opacity='+(current+speed)+')';
    								}else{
    									obj.style[attr]=current+speed+'px';
    								}
    							}
    
    					}
    					if(bstop){
    						clearInterval(obj.timer);
    						fn&&fn();
    					}
    
    				},10);
    			}
    

      

      

  • 相关阅读:
    网页字体设置你了解吗?
    CSS 定位 (Positioning)
    常用CSS缩写语法总结
    CSS 教程
    CSS Reset(CSS重置)
    边框模拟小三角形
    CSS sprites
    border:none和border:0的区别
    css display属性
    css的postion属性
  • 原文地址:https://www.cnblogs.com/xuxiaoxia/p/6711227.html
Copyright © 2011-2022 走看看