javascript的MVC框架做导航和幻灯片

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script language="javascript" src="js/Ademo.js"></script>
		<style type="text/css">
		html,body{
			margin: 0;
			padding: 0;
			font: "arial, helvetica, sans-serif";
			font-size: 12px;
		}
		#navbar{
			width: 800px;
			height: 30px;
			background-color: #71C371;
			color: white;
			margin: 0 auto;
		}
		#navbar ul{
			list-style: none;
			margin: 0;
			padding: 0;
			text-align: center;
		}
		#navbar ul li{
			width: 80px;
			height: 30px;
			text-align: left;
			vertical-align: middle;
			display: inline;
			margin: 5px 8px;
			font-size: 14px;
			line-height: 28px;
		}
		#navbar ul li a:link,a:hover,a:active{
			color: white;
			text-decoration: none;
		}
		#box{position: relative;width: 800px;height: 450px;background: #fff; margin: 0px auto;top:-5px;}
		#box .list{position: relative;width: 800px;height: 450px; overflow: hidden;}
		#box .list li{position: absolute;top: 0;left: 0;width: 800px;height: 450px;opacity: 0;filter: alpha(opacity=0);}
		#box .list li img{width: 100%;height: 100%;}
		#box .list li.current{opacity: 1;filter: alpha(opacity=100);}
		#box .count{position: absolute;right: 0;bottom: 5px;}
		#box .count li{text-align:center;color: #fff;float: left;width: 20px;height: 20px;cursor: pointer;margin-right: 5px;overflow: hidden;background:#f90;opacity: 0.7;filter: alpha(opacity=70);border-radius: 20px;}
		#box .count li.current{color: #fff;opacity: 1;filter:alpha(opacity=100);font-weight: 700;background: #f60;}
		</style>
	</head>
	<body>
		<script language="javascript">
			$(function(){
				//初始化MVC对象
				var MVC=MVC||{};
				//初始化MVC数据模型层
				MVC.model=function(){
					//内部数据对象
					var M={
						//XHR主函数
						xhr:function(type,url){},
						//如果要用XHR获取各类数据
						navdata:function(){},
						imgdata:function(){},
						textdata:function(){}
					};
					M.data={
						navBar:[{
							title:'主页',
							href:'index.html'
						},{
							title:'公司介绍',
							href:'gsjs.html'
						},{
							title:'菜品展示',
							href:'cpzs.html'
						},{
							title:'加盟店',
							href:'jmd.html'
						},{
							title:'加盟中心',
							href:'jm.html'
						},{
							title:'联系我们',
							href:'lxwm.html'
						}],
						imgShow:[{
							src:'img/1.jpg',
							alt:'第一张图片',
							href:'#'
						},{
							src:'img/2.jpg',
							alt:'第二张图片',
							href:'#'
						},{
							src:'img/3.jpg',
							alt:'第三张图片',
							href:'#'
						},{
							src:'img/4.jpg',
							alt:'第四张图片',
							href:'#'
						},{
							src:'img/5.jpg',
							alt:'第五张图片',
							href:'#'
						}]
					};
					M.conf={
						navBarCloseAnimate:false
					};
					return {
						getData:function(m){
							return M.data[m];
						},
						getConf:function(c){
							return M.conf[c];
						},
						setData:function(m,v){
							M.data[m]=v;
							return this;
						},
						setConf:function(c,v){
							M.conf[c]=v;
							return this;
						}
					}
				}();
				//初始化MVC视图层
				MVC.view=function(){
					var M=MVC.model;
					var V={
						createNavBar:function(){
							var html='',
							data=M.getData('navBar');
							if(!data||!data.length){
								return;
							}
							//创建视图容器
							var dom=$.create('div',{
								'id':'navbar',
								'class':'navbar'
							});
							//视图容器模板
							var tpl={
								container:[
									'<div class="navbar-inner"><ul>{#content#}</ul></div>',
								].join(''),
								item:[
									'<li>',
									'<a class="navbox" href={#href#}>',
									'{#title#}',
									'</li>'
								].join('')
							};
							//渲染全部导航模块
							for(var i=0,len=data.length;i<len;i++){
								html+=$.formateString(tpl.item,data[i]);
							}
							//在页面中创建导航视图
							dom.html(
								$.formateString(tpl.container,{content:html})
							).appendTo('body');
						},
						createImg:function(){
							var html='',
							data=M.getData('imgShow');
							if(!data||!data.length){
								return;
							}
							//创建图片容器
							var imgDom=$.create('div',{
								'id':'box',
								'class':'box'
							});
							//图片视图窗口模块
							var tplimg={
								container:[
									'<div class="img-inner"><ul class="list">{#content#}</ul>',
									'<ul class="count">',
									'<li class="current">1</li>',
									'<li>2</li>',
									'<li>3</li>',
									'<li>4</li>',
									'<li>5</li></ul></div>'
								].join(''),
								item:[
									'<li class="current">',
									'<a class="imghref" href={#href#}>',
									'<img src={#src#} alt={#alt#}/></a>',
									'</li>'
								].join('')
							};
							//渲染全部图片模块
							for(var i=0,len=data.length;i<len;i++){
								html+=$.formateString(tplimg.item,data[i]);
							}
							//在页面中创建图片视图
							imgDom.html(
								$.formateString(tplimg.container,{content:html})
							).appendTo('body');	
						}
					};
					return function(v){
						V[v]();
					}
				}();
				//初始化MVC控制器层
				MVC.ctrl=function(){
					var M=MVC.model;
					var V=MVC.view;
					var C={
						//导航栏模块
						initNavBar:function(){
							V('createNavBar');
						},
						initImgShow:function(){
							V('createImg');
							var aUl=$('ul','box');
							var aImg=aUl[0].getElementsByTagName('li');
							var aNum=aUl[1].getElementsByTagName('li');
							var timer=play=null;
							var i=index=0;
							for(i=0;i<aNum.length;i++){
								aNum[i].index=i;
								aNum[i].onmouseover=function(){
									show(this.index);
								};
							}
							$('#box').on('mouseover',function(){
								clearInterval(play);
							});
							$('#box').on('mouseout',function(){
								autoPlay();
							});
							function autoPlay(){
								play=setInterval(function(){
									index++;
									index>=aImg.length&&(index=0);
									show(index);
								},2000);
							}
							
							function show(a){
								index=a;
								var alpha=0;
								for(i=0;i<aNum.length;i++){
									aNum[i].className="";
									aNum[index].className="current";
									clearInterval(timer);
								}
								for(i=0;i<aImg.length;i++){
									aImg[i].style.opacity=0;
									aImg[i].style.filter="alpha(opacity=0)";
								}
								timer=setInterval(function(){
									alpha+=6;
									alpha>100&&(alpha=100);
									aImg[index].style.opacity=alpha/100;
									aImg[index].style.filter="alpha(opacity="+alpha+")";
									alpha==100&&clearInterval(timer);
								},50);
							}
						}
						
					};
					for(var i in C){
						C[i]&&C[i]();
					}
				}();
			});
		</script>
		
	</body>
</html>

最后做出来的成品样子
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值