第二次討論——響應式設計、布局技巧、css效能最佳化、css預先處理

來源:互聯網
上載者:User

標籤:visit   合并   enter   原則   響應式   程式設計語言   區別   工作   動物   

第二次討論

【響應式設計】

集中建立頁面的圖片排版大小,可以智能地根據使用者行為以及使用的裝置環境(系統平台、螢幕尺寸、螢幕定向等)進行相對應的布局。

響應式布局:

meta標籤的實用:設定布局寬度等於裝置寬度,布局viewport等於度量viewport

<meta name="viewport" content="width=device-width,initial-scale=1">

 

【【布局】】

【水平置中】

一、text-align和inline-block的聯合使用:

text-align屬性:通過指定行框與哪個點對齊,從而設定區塊層級元素內文本的水平對齊方式。(從而child為文本行內元素,parent為塊狀元素,可以通過display來設定)。

.parent{text-align: center;} //父元素.child{display: inline-block;}//子項目

不過此方法相容性比較好,IE瀏覽器接收。不過代碼較多,同時要設定父元素和子項目。

二、使用margin:0 auto設定

.child{width:100px;margin:0 auto;}//必須要有寬度

margin設定的是區塊層級元素的置中。相容性好,不過需要設定寬度。

三、display:table設定

.child{display:table;margin:0 auto;}

此方法只需對自身進行設定,代碼簡短。不過在IE6、7上,需要進行調整。

四、使用絕對位置

.parent{position:relative;} /*或者實用margin-left的負值為盒子寬度的一半也可以實現,不過這樣就必須知道盒子的寬度,但相容性好*/
.child{position:absolute;left:50%;transform:translate(-50%);}

transform:translate。移動transform在translation的方向和距離。簡單的說,向某方向移動物體多少距離。

不過這個方法相容性不好,要IE9 以上。

【垂直置中】

一、vertical-align方法

/*第一種方法*/ .parent{display:table-cell;vertical-align:middle;height:20px;} /*第二種方法*/ .parent{display:inline-block;vertical-align:middle;line-height:20px;}

在使用vertical-align的時候,由於對齊的基準是用行高的基準作為標記,故需要設定line-height或設定display:table-cell。

二、使用絕對位置

.parent{position:relative;} 
.child{positon:absolute;top:50%;transform:translate(0,-50%);}

注意與水平置中的區別

【水平垂直置中】

一、利用vertical-align,text-align,inline-block實現

.parent{display:table-cell;vertical-align:middle;text-align:center;} .child{display:inline-block;}

二、使用絕對位置

.parent{position:relative;} .child{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}

由上可知,絕對位置可以實現任何方式的置中,不過還要考慮相容性問題。

【多欄版面配置】

一、左列定寬,右列自適應:

(1)使用float+margin

.left{float:left;width:100px;}.right{margin-left:100px;}

經實驗,如果不用margin的話,必須設定高度。IE6會有3px的bug

(2)使用table實現

.parent{display:table;table-layout:fixed;width:100%;} .left{display:table-cell;} .right{width:100px;display:table-cell;}

二、兩列定寬,一列自適應

(1)使用margin+float

(2)利用float+overflow實現

.left,.center{float:left:width:200px;} .right{overflow:hidden;}

(3)利用table實現
三、兩側自適應,中間定寬(網頁布局常用)

(1)使用margin+float

.left{width:100px;float:left;} .center{float:left;width:100%;margin-right:-200px;} .right{width:100px;float:right;}

(2)利用table實現

四、一列不定寬,一列自適應

(1)利用float+overflow實現

.left{float:left;background-color: red;height: 100px;}.right{background-color: blue;overflow: hidden;height: 100px;}

不需要設定高度。會自適應。

五、多列式分布

(1)div+float

六、九宮格布局

(1)div+table

 

【css效能最佳化】

一、模組化:讓代碼高度重用,提高開發效率。

      模組與模組之間盡量不要包含相同的部分,如果有,提取出來,拆分成一個獨立的模組。

二、css命名:用英文。大小駝峰、底線等。駝峰表示區別不同單詞,底線表示從屬關係。

      避免重複命名,自己的代碼前加上屬於自己的首碼。

三、class的使用:多組合,少繼承。

四、上下margin處理:如果不確定模組的上下margin特別穩定,最好不要將它寫在模組的類裡,而是使用類的組合,單獨為上下margin掛用於邊距的原子類(如mt10、

          mb20)。模組最好不要混用margin-top和margin-bottom,統一使用某一個。

五、低權重原則:避免濫用自選取器。當不同選擇符的樣式設定有衝突時,會採用權重高的選擇符設定樣式。選擇符權重相同,為就近原則。

        權重原則:HTML標籤為1(如p),class為10,id為100。css選擇符保證權重儘可能低。

        使用子選取器,會增加css選擇符的權重。新添class更利於維護。

六、css sprite技術:將網站的多張背景圖片合并到一張大圖上。利用background-position屬性來展示我們需要的部分

          圖片載入會發出HTTP請求,而使用css sprite就減少了HTTP請求次數。減輕伺服器壓力。

          只能合并背景圖片。對於橫向和縱向都平鋪的圖片,不能使用css sprite,只能或橫向,或縱向。排版要盡量緊湊。

          缺點:降低開發效率和增大維護難度,是否使用取決於網站流量。

七、css常見問題:(1)編碼風格:多行式可讀性強,不過會增大css檔案大小,一行式可讀性較差,不過利於提高開發速度,減小css檔案大小。推薦一行式。

         (2)id和class:同一網頁,相同id只能出現一次,但是class無限制。id的權重大於class。不過原生JS提供getElementId()方法,不支援class。

                使用id會限制網頁的擴充性。一般情況下,建議盡量使用class,少用id。

         (3)css hack:IE條件注釋法(相容性最好,增加了開發和維護成本)

                 選擇符首碼法(增強了可維護性,不過相容性欠佳,不能用於內聯樣式)

                 樣式屬性首碼法(集合度更高,代碼更加精簡,可維護性更強,但存在相容風險,可用於內聯樣式)

         (4)解決超連結訪問後hover樣式不出現的問題:a標籤四種狀態的排序問題,love hate原則,即l(link)ov(visited)e h(hover)a(active)te。

         (5)haslayout:IE瀏覽器的專有屬性,用於css的解析引擎。很多bug都因為haslayout沒有被自動觸發。最好的解決方案:zoom。

         (6)區塊層級元素和行內元素:使用display轉換。

         (7)IE6、7不支援display:inline-block。

         (8)relative、absolute和float:不要濫用。

【css預先處理】

用一種專門的程式設計語言,為 CSS 增加了一些編程的特性,將 CSS 作為目標組建檔案,然後開發人員就只要使用這種語言進行編碼工作。

第二次討論——響應式設計、布局技巧、css效能最佳化、css預先處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.