天天看點

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,審美真的差。