web項目開發流程小結 字數3960 閱讀102 評論0 喜歡1 隨着開發項目的增多,本身慢慢摸索出一條開發流程之路,在此記下。 ________________________________________ 想法 --> 實現 --> 測試 --> 改bug --> 優化 --> 壓縮 1.想法 想法就是在項目開發前對項目進行的深刻了解和大體想出該怎麼作。 我會從如下兩大點出發: 1.1 佈局 看到設計圖,第一眼看的就是頁面的佈局,說白了就是html盒子的佈局問題。 1.1.1 從(div+css)編碼佈局來講:就三種方式,即 • 天然佈局 (標準流) • 流動佈局(浮動流) • 定位佈局(定位流) 1.1.2 從網頁設計角度來講: 靜態佈局 優勢: ①通常版心寬度960px,margin: 0 auto; ②保證小分辨率1024正常瀏覽 ,同時大分辨率居中展現 缺點: ①大分辨屏幕兩邊留白太多; ②不會隨設備分辨率改變而適應屏幕; ③不符合人們日進瘋狂的審美標準; 參考連接: http://www.12306.cn/mormhweb/ 聽說耗資兩億的網站,呵呵 自適應佈局 優勢: ①分別爲不一樣的屏幕分辨率定義佈局,佈局切換時頁面元素髮生改變 缺點: ①每一個佈局中,頁面元素不隨窗口大小的調整發生變化 ②可看做是靜態佈局的一個系列 參考連接: http://www.blueidea.com/tech/web/2009/6943.asp http://www.zhangxinxu.com/wordpress/2009/11/ 自適應css佈局 流式佈局我的理解,主體元素用百分比 優勢: ①主要使用百分比來設置各個部分的寬度, 用來適應不一樣的分辨率 缺點: ①若屏幕尺度跨度太大,在相對其原始設計太小或過大的屏幕上不能正常顯示 響應式佈局 優勢: ①不一樣的屏幕分辨率定義佈局,元素寬度隨着窗口調整而自動適配 ② 可看做是流式佈局和自適應佈局設計理念的融合 ③跨平臺,在手機,pad,電腦上均有不俗的表現 ④節省人力開發成本,再也不須要有人特意維護PC頁面,移動頁面 ⑤表現力一致,在不一樣的平臺上看到的東西都是基本一致的,會讓感受體驗良好 缺點: ①自由度過低,侷限性較大,須要考慮在手機,pad,PC上三種屏幕下的頁面內元素的呈現; ②.頁面會大,打開速度慢。同時下載多套CSS樣式代碼,可能在手機上就下載PC/pad的冗餘代碼,浪費了流量資源 ③對於非webkit內核的瀏覽器支持極差 ,Windows Phone手機上用的IE瀏覽器,徹底就悲劇了 參考連接: http://www.bubuko.com/infodetail-268180.html 媒體查詢 http://www.jq22.com/yanshi4277 http://time.com 響應式網站 彈性佈局 優勢: ①使用 em 或 rem 單位進行相對佈局,相對 % 百分比更加靈活, ②支持瀏覽器的字體大小調整和縮放等的正常顯示 ③ 兼容性:IE9+,Firefox、Chrome、Safari、Opera 的主流版本都支持 缺點: ①文字排版,rem 的等比縮放特性會讓全部設備一行顯示的文字數量相同,大屏幕上不能顯示更多內容。 ②對圖片型的 Sprite 支持很差,建議使用 Font Icon 或者 SVG 型 Sprite; ③有小數點參與計算,會出現相似 50% + 50% > 100% 致使意外折行的狀況; 參考連接: http://www.cnblogs.com/breakdown/p/4231708.html http://www.iinterest.net/2015/07/22/css3-rem-layout/?utm_source=tuicool&utm_medium=referral rem 瀑布流佈局 優勢: ①圖片的展示高效有吸引力 ②懶加載模式避免用戶鼠標點擊的翻頁操做,提升頁面加載速度 ③沒必要明確知道數據塊高度,當數據塊中有圖片時,就不須要指定圖片高度 ④ 適合於文字多欄排列 缺點: ①純css實現不了,要用jQuery 的 Masonry 插件 ②只有高級瀏覽器中才能使用 ③列數固定,擴展不易,當瀏覽器窗口大小變化時,只能固定的x列,若是要添加一列,很難調整數據塊的排列 ④ 滾動加載更多數據時,還要指定插入到第幾列中,不夠方便 參考連接: http://masonry.desandro.com 參考網站 http://www.tuicool.com/articles/RvY3Yv css3瀑布流實現 http://www.jq22.com/jquery-info362 具體方法 http://bbs.blueidea.com/thread-3058927-1-1.html 實例 因此得出了下面的結論: 1.若是隻作pc端,那麼定寬度是最好的選擇 2.若是作移動端,且設計對高度和元素間距要求不高,那麼rem+js是最好的選擇,一份css+一份js調節font-size搞定 3.若是pc,移動要兼容,並且要求很高那麼響應式佈局仍是最好的選擇,前提是設計根據不一樣的高寬作不一樣的設計,響應式根據媒體查詢作不一樣的佈局。 4.爲了更清晰的瞭解靜態,自適應,流式,響應式佈局的區別,可參考http://wow.techbrood.com/fiddle/1753 需登陸qq 1.2 交互 肯定佈局後,還要看都有哪些交互要作。注重用戶體驗的產品確實值得學習和尊重。 說簡單點就是人除了能夠瀏覽這個web頁面,還能夠在這個web頁面上進行一些操做,而這些操做還會跟你發生一系列互動 本人只作頁面開發,對交互設計理解不深刻,找來篇文章學習 http://www.missyuan.com/thread-682067-1-1.html 站在開發角度,我會把產品中的交互開發分爲兩個部分: 1.2.1 實現用戶操做功能的交互開發 好比,表單驗證,搜索功能,錯誤提示,下拉選項提示,等待加載頁面,加載進度條,導航跟隨等等。 交互設計是產品設計師已經設計好的,而我要作的是實現和加強用戶操做的體驗,例 搜索框里加上提示搜索的信息,焦點在框內時提示文字所有消失,以便用戶直接輸入 <input type="search" name="user_search" placeholder="Search W3School" /> 1.2.2 提示用戶操做的交互行爲 • hover 設置圖片hover放大,文字和按鈕hover變色, title提示 • active 告訴用戶他當前所在的位置,因此要有特點樣式 • banner 左右兩側arrow按鈕 提示用戶焦點圖能夠上下翻頁看 • backTop的提示 若頁面超過兩屏高,最好在底部設置個backTop按鈕提示,方便用戶再次看頂部的信息 • $(window).scroll(function(e) { • if($(window).scrollTop() >$(window).height()){ • $('.backTop').show(); • }else{ • $('.backTop').hide(); • } • }); • $('.backTop').click(function(e) { • $('body,html').animate({'scrollTop':'0px'},500); }); • 不可操做時的遮罩層 • <html> • <head> • <title>彈出一個窗口後,後面的層不可操做</title> • <script> • function show() //顯示隱藏層和彈出層 • { • var hideobj=document.getElementById("hidebg"); • hidebg.style.display="block"; //顯示隱藏層 • hidebg.style.height=document.body.clientHeight+"px"; //設置隱藏層的高度爲當前頁面高度 • document.getElementById("hidebox").style.display="block"; //顯示彈出層 • } • function hide() //去除隱藏層和彈出層 • { • document.getElementById("hidebg").style.display="none"; • document.getElementById("hidebox").style.display="none"; • } • </script> • <style> • body { margin:0px;padding:0px;text-align: center;} • #hidebg { position:absolute;left:0px;top:0px; • background-color:#000; • width:100%; /*寬度設置爲100%,這樣才能使隱藏背景層覆蓋原頁面*/ • filter:alpha(opacity=60); /*設置透明度爲60%*/ • opacity:0.6; /*非IE瀏覽器下設置透明度爲60%*/ • display:none; /* http://www.bitsCN.com */ • z-Index:2;} • #hidebox { position:absolute;width:400px;height:300px;top:200px;left:30%;background-color:#fff;display:none;cursor:pointer;z-Index:3;} • #content { text-align:center;cursor:pointer;z-Index:1;} • </style> • </head> • <body> • <div id="hidebg"></div> • <div id="hidebox" onClick="hide();">點擊關閉</div> • <div id="content" onClick="show();">點擊試試</div> • </body> </html> • 加載進度條和自定義加載動畫插件 介紹兩個我知道的 o progress.js http://blog.csdn.net/joyhen/article/details/24458427 官網和下載地址在裏面 http://www.cnblogs.com/Wayou/p/gmail_like_page_loading_progress_bar.html自定義動畫寫法 優勢: 能自定義加載動畫 缺點: 依賴於jquery.min.js ,不輕便 o pace.js http://github.hubspot.com/pace/docs/welcome/ 優勢: 輕便,官網有多個模板可用 缺點: 不能自定義加載動畫 2.實現 2.1 技術難點 每一個項目可能都會遇到本身沒實現過的需求,怎麼辦?莫慌, 1.先google些資料壯壯膽 2.分析和學習下他人實現的代碼 3.本身寫 #### 2.1 兼容demo 4.慢慢調試修改,直到達到本身項目中的需求 把難點攻克了,其餘就都ok了,寫項目心也不慌了 2.2 搬救兵,找外援 有些輪播,電梯導航,分辨率適配,本身不會寫或懶得寫的需求,可讓框架,插件上。 2.2.1框架 我經常使用的有 bootstrap 框架和移動端的 fullpage 框架。 不過多介紹這兩個框架,緣由是前端框架不少,我的只停留在會用上,沒有很深刻研究。 新接觸的框架,不會用,能夠先寫個demo,簡單學習下 2.2.2插件 這個就多了,要看實現哪些效果,圖表Echarts,分享插件,天氣,日期,分頁,滾動條,圖片懶加載,加載進度條等。 很少說,看需求。 2.3 兼容 不得不作的事就是兼容,沒辦法,用戶至上,一切爲了用戶。。。寶寶內心苦,但寶寶不說,就偷偷地寫出來 兼容兩個方面: 2.3.1 瀏覽器兼容 相比其餘chrome,safari,firefox,opera,兼容IE8多一些,要爲該掛的IE8兼容html5的標籤,兼容css3衆多美好屬性,包括媒體查詢。。。 • 讓ie瀏覽器按最高標準解析頁面,360瀏覽器按極速模式解析 • <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="renderer" content="webkit"> • ie8 引用兩個js能夠解決適配問題和html5標籤的兼容問題 • <!--[if IE 8]> • <script src="http://apps.bdimg.com/libs/respond.js/1.4.2/respond.js"></script> • <script src="js/html5shiv.js"></script> <![endif]--> • ie8讓IE8支持placeholder屬性 • jQuery('[placeholder]').focus(function() { • var input = jQuery(this); • if (input.val() == input.attr('placeholder')) { • input.val(''); • input.removeClass('placeholder'); • } • }).blur(function() { • var input = jQuery(this); • if (input.val() == '' || input.val() == input.attr('placeholder')) { • input.addClass('placeholder'); • input.val(input.attr('placeholder')); • } • }).blur().parents('form').submit(function() { • jQuery(this).find('[placeholder]').each(function() { • var input = jQuery(this); • if (input.val() == input.attr('placeholder')) { • input.val(''); • } • }) }); • 清除ie input 的默認樣式 input::-ms-clear, input::-ms-reveal{display: none;}/* 清除ie中input的默認行爲 */ • 清除ie 和火狐a標籤獲取焦點時的默認行爲 a:focus{outline: none!important;-moz-outline: none;}/* 清除ie a標籤獲取焦點時的默認行爲 */ • 清除瀏覽器的select默認樣式 • select{ • border: 1px solid #ccc; • -webkit-appearance: none; • -moz-appearance: none; • appearance: none; • } select::-ms-expand { display: none; }/* 清除瀏覽器的默認樣式 */ • IE8支持rgba()屬性寫法 • <!DOCTYPE html> • <html lang="en"> • <head> • <meta charset="UTF-8"> • <title>IE8支持rgba()屬性寫法</title> • <style> • #box{ • width: 300px; • height: 300px; • border: 1px solid #ccc; • background: rgba(0, 0, 0, .5); • } • </style> • <!--[if lt IE 9]> • <style type="text/css"> • #box{ • background: transparent; • filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000,endColorstr=#7f000000); • zoom: 1; • } • </style> • <![endif]--> • </head> • <body> • <div id="box"></div> • </body> </html> • ie9如下兼容漸變背景色的濾鏡屬性 • .box { • background: -webkit-linear-gradient(top, #3a8fd8, #449ce9); • background: -moz-linear-gradient(top, #3a8fd8, #449ce9); • background: -ms-linear-gradient(top, #3a8fd8, #449ce9); • background: -o-linear-gradient(top, #3a8fd8, #449ce9); • background: linear-gradient(top, #3a8fd8, #449ce9); • -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#3a8fd8', endColorstr='#449ce9',GradientType='0')"; • /* IE8 */ • } • GradientType='0'表示漸變從上到下 GradientType='1'表示漸變從左到右 • PIE兼容圓角border-radius,盒陰影box-shadow • /*兼容圓角*/ • .pie_radius{ • width:360px; • height:200px; • background-color:#34538b; • -moz-border-radius:8px; • -webkit-border-radius:8px; • border-radius:8px; • position:relative; /*定位必須加上*/ • behavior:url(pie.htc); /*pie文件要放在根目錄下,不要放在css文件裏!*/ • } • /*兼容盒陰影*/ • .pie_box_shadow{ • width:360px; • height:200px; • background-color:#34538b; • -moz-box-shadow:1px 3px 3px #666; • -webkit-box-shadow:1px 3px 3px #666; • box-shadow:1px 3px 3px #666; • position:relative;/*定位必須加上*/ • behavior:url(pie.htc); /*pie文件要放在根目錄下,不要放在css文件裏!*/ } 可參考 http://www.zhangxinxu.com/wordpress/2010/07/pie使ie支持css3圓角盒陰影與漸變渲染/ 2.3.2 分辨率兼容 若只開發Web頁面,自適應佈局,同時用百分比定寬度差很少就夠了; 若全上,那就響應式佈局; 若移動,就rem和百分比一塊兒用; 3. 測試 這個要看項目要求在哪些設備和分辨率下測試了,我從這幾方面看, • 頁面樣式 • 交互效果 • 加載速度 • 分辨率 • 不一樣設備 這塊貌似沒啥可說的,也是個細心又無聊的事兒,不過是本身寫的項目,就不無聊了。用心才能發現更多問題,在用戶使用產品前就把它們幹掉。 4. 改bug 每一個人在每一個項目中,遇到的問題是不一樣的,並且bug可大可小,解決順序固然是先挑最棘手的,影響最大的bug去啃。我認爲改bug 一靠經驗,二靠決心,三靠耐心 有種死磕的味道,我就是這樣,固然解決不了的bug,如果不影響用戶操做和很明顯的視覺效果,能夠先放下,畢竟一個項目的工期有限。 5. 優化 優化貫穿整個項目的開發和維護過程,時時刻刻都要想着怎樣能讓代碼更精簡,項目運行起來更輕便,加載更快。 5.1 代碼優化 代碼優化很重要,方便之後對項目的維護和重用,讓本身和他人看着都很賞心悅目。 • 相一樣式代碼合併 • 每一個頁面都有的部分能夠提出來,建個base.css • 經常使用的結構或佈局樣式能夠提取出來,自定義樣式庫,方便之後用 • 經常使用的css3動畫效果能夠提出來,自定義動畫樣式庫 • 屢次重複的事情css作起來麻煩,js就幫個忙 5.2 語義化標籤 • html5標籤語義化很強,可經常使用 兼容ie8的方法在兼容部分提到了 • logo,產品名稱通常放到h1標籤中的a標籤裏,有助搜索引擎優化 5.3 項目總體優化 • 多個小圖標能夠用sprite圖,或fontIcon • 引入的js文件較大,可用線上網址,更快,省資源 6. 壓縮 • gulp自動壓縮同步,用法 http://www.ydcss.com/archives/18 • js模塊化編程 http://www.ruanyifeng.com/blog/2012/11/require_js.html • Webpack打包 http://zhuanlan.zhihu.com/p/20367175 • js/css壓縮 我的經常使用 http://tool.css-js.com • 圖片壓縮 我的經常使用 https://tinypng.com