成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單特效引發的大戰:移動開發中放棄jquery mobile

開發 前端
最近一直在一件事情上,移動線上網站測試必須符合3星,將不合格的網站調優后保證3星,方便線上推廣,難免會遇見一些問題,大致為題后期會寫一篇隨筆總結,“移動開發中網站如何優化”……

我本想安靜的做一個美男子,可是,老板不漲工資,反而,一月不如一月。

我為什么放棄jquery mobile插件選擇自己寫特效?

在開發中大家都知道效率很重要,一個好的工具可以在開發中大大提升效率,工作做的越多,相應的取得的報酬也就越多,相反就是我自己了。

最近一直在一件事情上,移動線上網站測試必須符合3星,將不合格的網站調優后保證3星,方便線上推廣,難免會遇見一些問題,大致為題后期會寫一篇隨筆總結,“移動開發中網站如何優化”。其中遇見的一個問題就是JS文件過大,CSS文件過大,之前項目一直使用的jquery mobile開發的前端模板,以至于批量開發的模板全部是基于jquery mobile,在這中間一直沒有過多的分析這之間會出現的問題,直到這次考核。

jquery mobile是基于jquery,在應用jquery mobile前必須先引入jquery,為了方便也就自然使用了對應的jquery mobile的樣式文件。但是在實際批量模板的時候并沒有寫更多的JS特效,也并沒有使用jquery mobile默認的樣式,相反還要寫一些樣式來取消原來的樣式。(其實,這之間有些是可以避免的,不介意的情況下還是可以使用JQM,只是我們的小伙伴有固定的任務,開發的使用為了效率,一天可能就要完成兩套模板,相應的時間也就投入在了CSS和模板標簽上了)。

原來我們是這么做的移動開發

JS:

① jquery-1.9.1.min.js

② jquery.mobile-1.3.1.min.js

③ banner.js

④ 一段JS

CSS:

① jquery.mobile-1.3.1.min.css

② style.css

現在我是這么做的

在JQM與zepto之間我還是糾結了一下,畢竟之前已經有很多項目已經是基于JQM,最后我還是一致決定使用zepto來重新規范一下接下來的模板,也許我這只是一個人的想法,也許這只是一次做著玩的想法,畢竟這不是第一次也不是最后一次。說遠了,拉回來。

JS:

① require.js

② zepto.min.js

③ touch.min.js

④ baiyun.mobile.min.js

CSS:

① style.css

前前后后對比分析

>>>對比一:頁面

圖一,原版,在這個版本中使用的是JQM,完全沒有使用JQM的默認UI,相反使用了很多的獨立IMG,也就自然而然增加了很多次請求,按照現在的要求,頁面不能單一的設計成現在的banner,首頁欄目導航。這個將自然而然增加更多的請求。

 

圖二,現版,在這個版本中使用了zepto,只是為了選擇器方面方便一些,更好的我覺得還是使用原生的javascript,這就是做移動開發的好處,不用考慮蛋疼的IE低版本,對于基礎知識的要求也就要更牢靠一些,也許習慣了使用工具,有時都很難分清楚到底原生中有沒有這樣一個方法,隨著更新,也許現在正在使用就會被下一個取代,可是萬變還是不離其中。還使用了一個老方法就是CSS Sprites,現在還有一些其它的方式,這里暫時不贅述了。

>>>對比二:首次加載

圖三,原版

圖四,現版

>>>對比三:二次加載

圖五,原版

圖六,現版

對比二與對比三不能作為絕對數據,但是從中我們也能看出一些問題,由于也是剛剛面對三星檢測這個棘手的問題才現學現賣,關于網站的優化方面還有很多知識需要學習,希望能夠與正在做相關工作的小伙伴一起交流交流。這里先不說其它因素,要不然就有扯遠了,圖三中JQM 與 JQ文件是73.9K(原文件還要大一些,具體的可以參見JQUERY官網),耗時1S左右了,相反require 與 zepto 與 touch文件是17.6K,耗時52ms,數據應該能看出一些什么吧?最后我還是決定換掉JQM,使用現在的版本,插件也可以直接使用JQM的插件,更喜歡自己造輪子,主要還是希望在這過程中自我學習提升,工資不能再降了啊,再降就只好去讓人打發點兒了,新聞說地鐵口乞人日入多少多少,你不一定就可以,這中間涉及的問題太多,最簡單的就是你沒有這方面的工作經驗。

#p#

baiyun.mobile.min.js 簡單特效之Banner

一個簡單的banner特效效果圖:

[[120097]]

圖片質量不是很高,還是用的是同一張圖片,能不能看?不能看,不能看也就先將就著看吧。就是一個簡單的幾張圖片輪播,這里有幾點不一樣,看完代碼大家應該可以發現其中的問題。

HTML代碼:

  1. <div class="mbSlider"> 
  2.     <ul> 
  3.         <li style="background: url(http://www.pushself.com/noImage.jpg) 50% 50% no-repeat;"> 
  4.             <a href="http://www.pushself.com"></a> 
  5.         </li> 
  6.         <li style="background: url(http://www.pushself.com/noImage.jpg) 50% 50% no-repeat;"> 
  7.             <a href="http://www.pushself.com"></a> 
  8.         </li> 
  9.         <li style="background: url(http://www.pushself.com/noImage.jpg) 50% 50% no-repeat;"> 
  10.             <a href="http://www.pushself.com"></a> 
  11.         </li> 
  12.     </ul> 
  13. </div> 

 

CSS代碼:

  1. .mbSlider ul {  
  2.   positionrelative;  
  3.   z-index0;  
  4.   height120px;  
  5.   overflowhidden;  
  6. }  
  7. .mbSlider ul li {  
  8.   positionabsolute;  
  9.   top: 0;  
  10.   left: 0;  
  11.   z-index0;  
  12.   visibilityhidden;  
  13. }  
  14. .mbSlider ul li, .mbSlider ul a {  
  15.   displayblock;  
  16.   width100%;  
  17.   height100%;  
  18. }  
  19. .mbSlider ul li:nth-child(1) {  
  20.   visibilityvisible;  

JS代碼:(代碼寫的不是很好,高手路過記得留下點兒高招哦)

  1. (function(i) {  
  2.     var windowWidth = $(window).width(),  
  3.         windowHeight = $(window).height(),  
  4.         name = option.name,  
  5.         AutoMain = function() {  
  6.             this.mbSlider = function() {  
  7.                 var mbSliderThis = this,  
  8.                     directionArr = ["left","right"];  
  9.                     liLength = $("." + name + " ul li").length,  
  10.                     duration = i.duration in directionArr?i.duration:"left",  
  11.                     initVal = i.initVal && i.initVal<liLength?parseInt(i.initVal):0,  
  12.                     mbSliderHeight = $("." + name + " ul").height(),  
  13.                     mbSliderHeight = mbSliderHeight > 120 && mbSliderHeight < windowHeight / 3?mbSliderHeight:120;  
  14.                 $("." + name + " ul").height(mbSliderHeight);//banner不能過大  
  15.                 if(liLength < 2) {  
  16.                     return;  
  17.                 }else if(liLength == 2) {//便于切換流暢  
  18.                     $("." + name + " ul").append($("." + name + " ul").html());  
  19.                     liLength = $("." + name + " ul li").length;  
  20.                 }  
  21.                 var direction = i.direction,  
  22.                     t;  
  23.                 mbSliderThis.run = function(direction){  
  24.                     Action.apply(this,{  
  25.                                 0: direction,  
  26.                                 1: initVal,  
  27.                                 2: liLength,  
  28.                         "length" : 3  
  29.                     })  
  30.                     initVal = initVal == liLength - 1?0:++initVal;  
  31.                     t = setTimeout(function() {  
  32.                         mbSliderThis.run(direction);  
  33.                     },3000);  
  34.                 }  
  35.                 $("." + name + " ul li").css({  
  36.                     "-webkit-transition-duration":i.duration + "s" 
  37.                 });  
  38.                 mbSliderThis.run(direction);  
  39.                 $("." + name + " ul li").swipeLeft(function() {  
  40.                     var direction = "right";  
  41.                     clearInterval(t);  
  42.                     mbSliderThis.run(direction);  
  43.                 });  
  44.                 $("." + name + " ul li").swipeRight(function() {  
  45.                     var direction = "left";  
  46.                     clearInterval(t);  
  47.                     mbSliderThis.run(direction);  
  48.                 });  
  49.             };  
  50.         },  
  51.         Action = function(direction,initVal,liLength) {  
  52.             var liLength = liLength;  
  53.             if(direction == "right") {  
  54.                 var currLiNum = initVal,  
  55.                     prevLiNum = currLiNum == 0?liLength - 1:currLiNum - 1,  
  56.                     nextLiNum = currLiNum == liLength - 1?0:currLiNum + 1;  
  57.                     directionVal = 1;  
  58.             }else {  
  59.                 var currLiNum = initVal == 0?0:-initVal,  
  60.                     prevLiNum = currLiNum == 0?-liLength + 1:currLiNum + 1,  
  61.                     nextLiNum = currLiNum == -liLength + 1?0:currLiNum - 1;  
  62.                     directionVal = -1;  
  63.             }  
  64.             var prevLiWidth = -windowWidth * directionVal,  
  65.                 currLiWidth = 0,  
  66.                 nextLiWidth =  windowWidth * directionVal;  
  67.             $("." + name + " ul li").eq(prevLiNum).css({  
  68.                 "-webkit-transform":"translate3d(" + prevLiWidth + "px, 0, 0)",  
  69.                 "visibility":"hidden" 
  70.             });  
  71.             $("." + name + " ul li").eq(currLiNum).css({  
  72.                 "visibility":"visible",  
  73.                 "-webkit-transform":"translate3d(" + currLiWidth + "px, 0, 0)" 
  74.             });  
  75.             $("." + name + " ul li").eq(nextLiNum).css({  
  76.                 "-webkit-transform":"translate3d(" + nextLiWidth + "px, 0, 0)",  
  77.                 "visibility":"hidden" 
  78.             });  
  79.         },  
  80.         autoMain = new AutoMain().mbSlider();  
  81. })(option)  
  82. var option = {"name":"mbSlider","direction":"right","duration":".8","initVal":0}; 

這中間其實有遇見一個問題,因為存在在PC中向客戶大致展示一下,使用background只是為了部分瀏覽器中避免拖動時圖片被拉出,卻發現了一個問題,背景代碼:background: url(http://www.pushself.com/noImage.jpg) 50% 50% / 100% 100% no-repeat;在chrome下可以直接解析使用,移動端的時候就被分解了,background-size: 100%;并非是background: 100% 100%;就會第一次進入頁面時,或者刷新后出現一個不希望有的特效。

[[120098]]

這次分享到此結束,希望能夠與大家多多交流。

本文出自:http://www.cnblogs.com/unofficial/p/3975924.html

責任編輯:林師授 來源: unofficial的博客
相關推薦

2013-11-28 09:38:04

移動開發jQuery Mobi

2015-01-12 10:28:58

移動開發框架LettuceMobile Fram

2015-01-12 12:10:11

移動開發框架LettuceMobile Fram

2011-12-12 10:08:39

jQuery MobiHTML5

2011-09-05 10:49:14

Sencha ToucjQuery MobiHTML5

2010-08-16 08:49:25

jQuery MobijQuery

2011-06-30 09:46:59

jQuery MobiRails

2011-09-01 10:09:04

2012-03-27 14:34:07

Visual Stud微軟MVC

2011-09-05 13:45:25

jQuery MobiSencha Touc移動Web UI框架

2012-03-06 15:41:16

jQuery MobijQuery Mobi手冊

2011-07-08 15:27:03

jQuery Mobi

2012-03-06 16:46:29

jQuery MobijQuery MobiAjax

2011-07-21 15:37:40

jQuery MobiJQMJSON

2010-03-26 09:13:00

Windows Mob系統更新

2009-08-20 10:41:18

Windows Mob

2011-07-20 14:11:24

響應布局jQuery Mobi

2011-07-19 17:09:44

jQuery Mobi事件

2009-08-12 09:29:09

中國移動Mobile

2012-02-07 10:05:40

jQuery MobijQuery Mobi
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九久视频 | 秋霞影院一区二区 | 久久精品国产99国产精品亚洲 | 99久久婷婷国产综合精品 | 国产小网站 | 日韩在线精品视频 | 欧美精品中文字幕久久二区 | 在线欧美视频 | 亚洲一区视频在线 | 欧美情趣视频 | 国产精品久久 | 亚洲综合色视频在线观看 | 看一级黄色毛片 | 国产欧美日韩一区二区三区在线 | 欧美成人精品激情在线观看 | 国产成人精品一区二区 | 欧美日日 | 国产成人精品一区二区三区在线 | 国产羞羞视频在线观看 | 欧美一区二区三区 | 亚洲国产成人av | 95国产精品 | 亚洲一区国产精品 | 日日夜夜视频 | 久久人体 | 久久99精品久久久久久 | 热99| 国产精品毛片 | 国产一级在线 | 春色av| 久久精品久久久久久 | 欧美日韩大陆 | 国产91av视频在线观看 | 99这里只有精品视频 | 精品综合| 看a网站| 电影午夜精品一区二区三区 | 操皮视频 | 国产女人精品视频 | 亚洲精品一区二区网址 | 高清欧美性猛交xxxx黑人猛交 |