天天看点

2018Web陈煜昆答辩新车网

1.主要思想

 这次是我第一次在web组参加答辩,答辩作品写的相对比较简单,但是我还是收获了很多,以及在写答辩的遇到了很多有意思的动画,我做的是一个新车网,用的是比较新的网页形式,但是可能并不实用,还有许多值得改进的地方。我主要想体现三大功能,商品展示,动态动画,和对售后服务更多的描述。

2.主要运用的技术

我的答辩主要运用了bookstrap框架,jquery插件,css3, html , javascript,css六大技术,但是运用的不是很好,问题很多,只能大体实现了一点功能,但想法和做出来的效果总是有差距。

3.网页主体介绍

我主要做了四个网页,分别是主页,服务,关于和联系我们,以及一个小的开场动画,就没啥了,在四个网页首部我分别做了不同的样式,轮播,背景图片自动切换,轮播文字,和文字颜色动态渐变,不多说了,上图。

2018Web陈煜昆答辩新车网

这是主页

2018Web陈煜昆答辩新车网

 这是服务网页,背景图可以切换

 轮播文字的实现直接上代码

var curIndex=0;
//时间间隔(单位毫秒),每秒钟显示一张,数组共有5张图片放在Photos文件夹下。
var timeInterval=5000;
var arr=new Array();
arr[0]="s1-1.jpg";
arr[1]="s1-2.jpg";
arr[2]="s1-3.jpg";
arr[3]="s1-4.jpg";
arr[4]="s1-5.jpg";
setInterval(changeImg,timeInterval);
function changeImg()
{
var obj=document.getElementById("obj");
if (curIndex==arr.length-1)
{
curIndex=0;
}
else
{
curIndex+=1;
}
obj.src=arr[curIndex];
}
           

  下面一个是联系我们的网页

2018Web陈煜昆答辩新车网

4.小动画详解

我在答辩中加了许多的动画效果,我是第一次做,有的做的不好看,多多包涵。

1.侧边选项卡

2018Web陈煜昆答辩新车网

2.滚动展示功能,主要就是用js写的,比较简单的可以调节向左向右滚动展示的效果,直接上图片代码

<script type="text/javascript">
window.onload=function(){
var Div=document.getElementById('roll');
var oUl=Div.getElementsByTagName('ul')[0];
var aLi=oUl.getElementsByTagName('li');
var Div=document.getElementById('rollmiddle');
var a=Div.getElementsByTagName('a');//获取向右向左的箭头
var timer=null;
var iSpeed=10;
oUl.innerHTML+=oUl.innerHTML;//定义图片可以循环播放
oUl.style.width=aLi.length*aLi[0].offsetWidth+'px';//定义外层ul的宽度,根据图片的个数和每个图片的宽度计算,保证总宽度是可调整的
function fnMove(){
if(oUl.offsetLeft<-oUl.offsetWidth/2){
oUl.style.left=0;
}else if(oUl.offsetLeft>0){
oUl.style.left=-oUl.offsetWidth/2+'px';
}//定义到边界的时候,实现无缝衔接
oUl.style.left=oUl.offsetLeft+iSpeed+'px';
//定义图片的右边距随着速度不断不断增加,或减小,实现运动的效果
}
timer=setInterval(fnMove,70);
a[0].onclick=function(){
iSpeed=-10;

//按下左箭头,定义向左运动

}
a[1].onclick=function(){
iSpeed=10;

//按下右箭头,定义向右运动
}
Div.onmouseover=function(){
clearInterval(timer);

//鼠标移动到图片上,清除定时器,停止运动
}
Div.onmouseout=function(){
timer=setInterval(fnMove,40);

//鼠标移出,重新开启定时器,重新运动
}
};
           

 3.我用了百度地图工具,用了一个密钥,通过一段js地图函数定位到了三峡大学欣苑,上代码更清楚明了一些。

//创建和初始化地图函数:
    function inittheMap(){
        createtheMap();//创建地图
        setMaptheEvent();//设置地图事件
        addMaptheControl();//向地图添加控件
        addsetMarker();//向地图中添加图标
    }
    
    //创建地图函数:
    function createtheMap(){
        var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
        var point = new BMap.Point(111.319644,30.727061 );//定义一个中心点坐标
        map.centerAndZoom(point,17);//设定地图的中心点和坐标并将地图显示在地图容器中
        window.map = map;//将map变量存储在全局
    }
    
    function setMaptheEvent(){
        map.enableDragging();//启用地图拖拽事件
        map.enableScrollWheelZoom();//启用地图滚轮放大缩小
        map.enableDoubleClickZoom();//启用鼠标双击放大
        map.enableKeyboard();//启用键盘上下左右键移动地图
    }
    
    function addMaptheControl(){
        //向地图中添加缩放控件
	var ctrl_nav = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE});
	map.addControl(ctrl_nav);
        //向地图中添加缩略图控件
	var ctrl_ove = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1});
	map.addControl(ctrl_ove);
        //向地图中添加比例尺控件
	var ctrl_sca = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});
	map.addControl(ctrl_sca);
    }
    
    //标注点数组
    var markerArr = [{title:"我的标记",content:"我的备注",point:"111.319644|30.727061 ",isOpen:0,icon:{w:20,h:21,l:0,t:0,x:6,lb:5}}
		 ];
    //创建marker
    function addsetMarker(){
        for(var i=0;i<markerArr.length;i++){
            var json = markerArr[i];
            var p0 = json.point.split("|")[0];
            var p1 = json.point.split("|")[1];
            var point = new BMap.Point(p0,p1);
			var iconImg = createIcon(json.icon);
            var marker = new BMap.Marker(point,{icon:iconImg});
			var iw = createInfoWindow(i);
			var label = new BMap.Label(json.title,{"offset":new BMap.Size(json.icon.lb-json.icon.x+10,-20)});
			marker.setLabel(label);
            map.addOverlay(marker);
            label.setStyle({
                        borderColor:"#808080",
                        color:"#333",
                        cursor:"pointer"
            });
			
			(function(){
				var index = i;
				var _iw = createInfoWindow(i);
				var _marker = marker;
				_marker.addEventListener("click",function(){
				    this.openInfoWindow(_iw);
			    });
			    _iw.addEventListener("open",function(){
				    _marker.getLabel().hide();
			    })
			    _iw.addEventListener("close",function(){
				    _marker.getLabel().show();
			    })
				label.addEventListener("click",function(){
				    _marker.openInfoWindow(_iw);
			    })
				if(!!json.isOpen){
					label.hide();
					_marker.openInfoWindow(_iw);
				}
			})()
        }
    }
    //创建窗口
    function createInfoWindow(i){
        var json = markerArr[i];
        var iw = new BMap.InfoWindow("<b class='iw_poi_title' title='" + json.title + "'>" + json.title + "</b><div class='iw_poi_content'>"+json.content+"</div>");
        return iw;
    }
    //创建一个图标
    function createIcon(json){
        var icon = new BMap.Icon("maps_16px_1125037_easyicon.net.ico.png", new BMap.Size(json.w,json.h),{imageOffset: new BMap.Size(-json.l,-json.t),infoWindowOffset:new BMap.Size(json.lb+5,1),offset:new BMap.Size(json.x,json.h)})
        return icon;
    }
    
    inittheMap();//创建和初始化地图
           

4.开场动画实现了3D旋转远近,穿透,放大,缩小效果。

$(function(){
	var liNum = 5*5*5;//认为li的的个数为5*5*5
	var tX = 500,tY = 300,tZ = 700;//水平 垂直 间隔
	var firstX = - 2*tX;
	var firstY = - 2*tY;
	var firstZ = - 2*tZ;//x,y,z偏移量
	init();
	function init(){
	for(var i = 0;i < liNum;i++)
	{
		  var $li = $('<li><h1>Benz<h1><h3>new car<h3></li>');
		  var x = (Math.random()-0.5)*2000;//[0,1)
		  var y = (Math.random()-0.5)*2000;
		  var z = (Math.random()-0.5)*2000;
		  $li.css({
		  	'transform' : 'translate3d('+x+'px,'+y+'px,'+z+'px)'
		  });
		// var iX = (i % 25) % 5;//x方向,要增加的倍数
		// var iY = parseInt((i % 25) / 5);
		// var iZ = parseInt(i / 25);
		// $li.css(
		// {
		// 	'transform' : 'translate3d('+ (firstX+iX*tX) +'px,'+(firstY + iY*tY)+'px,'+(firstZ + iZ*tZ)+'px)'
		// });
		$('#main').append($li);
		// $('<li></li>') -> 创建一个节点,把这个节点变成jq对象
	}
	setTimeout(function(){
       Grid();
	},300);
}
	function Grid(){
	   $('#main li').each(function(i){//遍历
       var iX = (i % 25) % 5;//x方向,要增加的倍数
		var iY = parseInt((i % 25) / 5);
		var iZ = parseInt(i / 25);
		$(this).css(
		{
			'transform' : 'translate3d('+ (firstX+iX*tX) +'px,'+(firstY + iY*tY)+'px,'+(firstZ + iZ*tZ)+'px)',
			'transition' : '4s ease-in-out'
		});
	});
	}
	//滚轮
	(function(){
		var nowX,lastX,minusX,nowY,minusY,lastY;
		var roY = 0,roX = 0,tZ = -2000;
		var timer1,timer2;
       $(document).mousedown(function(ev){
       	ev = ev || window.event;
       	lastX = ev.clientX;
       	lastY = ev.clientY;
       	clearInterval(timer1);
       	  $(this).on('mousemove',function(ev){ 
       	  	   ev = ev || window.event;//存放事件相关信息
       	  	   nowX = ev.clientX;
       	  	   nowY = ev.clientY;
       	  	   minusX = nowX - lastX;//追踪坐标差值
       	  	   minusY = nowY - lastY;
       	  	   roY += minusX*0.2; 
       	  	   roX -= minusY*0.2;
       	  	   $('#main').css({
       	  	   	'transform' : 'translateZ('+ tZ +'px) rotateX('+ roX +'deg) rotateY('+ roY +'deg)' 
       	  	   })
       	  	   lastX = nowX;//存放前一点的坐标
       	  	   lastY = nowY;
       	  });
          return false;
       }).mouseup(function(){
            $(this).off('mousemove');
            timer1 = setInterval(function()//动画缓冲
            {  
                minusX *= 0.95;
                minusY *= 0.95;
                if(Math.abs(minusX)<0.5)
                {
                    clearInterval(timer1);
                }
                if(Math.abs(minusY)<0.5)
                {
                    clearInterval(timer1);
                }
                roY += minusX*0.2; 
       	  	    roX -= minusY*0.2;
       	  	    $('#main').css({
       	  	   	'transform' : 'translateZ('+ tZ +'px) rotateX('+ roX +'deg) rotateY('+ roY +'deg)' 
       	  	   });
            },13);
       }).mousewheel(function(e,d){//滚轮事件
           // var d = arguments[1] // 不定参,实参的集合,判断方位,每次动一
           clearInterval(timer2);
           tZ += d*80; // 景深移动 
           tZ = Math.min(0,tZ);//取参数里面最小的
           tZ = Math.max(-8000,tZ);
           $('#main').css({
           	   'transform' : 'translateZ('+ tZ +'px) rotateX('+ roX +'deg) rotateY('+ roY +'deg)' 
           });
          timer2 = setInterval(function(){
               d *= 0.85;  
               if (Math.abs(d) < 0.01) {
               	clearInterval(timer2);
               }
               tZ += d*80; // 景深移动 
               tZ = Math.min(500,tZ);//取参数里面最小的
               tZ = Math.max(-8000,tZ);
               $('#main').css({
           	   'transform' : 'translateZ('+ tZ +'px) rotateX('+ roX +'deg) rotateY('+ roY +'deg)' 
           });
           },13)
       });
	})()
	//方法链写法

});

// onload=function(){
// 			setTimeout(go,10000);
// 		};
// 		var f = 10; //利用了全局变量来执行
// 		function go(){
// 		f--;
// 			if(f>0){
// 			document.getElementById("sp").innerHTML=f;  //每次设置的x的值都不一样了。
// 			}else{
// 			location.href='home.html';
// 			}
// 		}
setTimeout(function () {
window.location="dabian.html";
}, 10000);

           

5.总结

1.网页响应式大致实现了,但是有些细节的地方做的不是很好,浏览效果不是很好。

2.暑假有点放松了,对自己的要求降低了,做的东西不尽如人意。

3.对js了解太浅,没有好好的学,也没有学好,菜的不想说话。

4.对于布局仍没有好的想法,布局没有啥新意,也不是很好看。

5.暑假来了可得认真学习一下了,将各种动画和布局再学习一下,把网页做漂亮点,emmm,审美真的差。