Web頁面中的特殊效果,如菜單效果,對話框效果都需要通過定位屬性來實現。
定位樣式
position屬性可以控制元素的定位類型
position屬性值可以為sataic、fixed、absolute、relative
position屬性的語法結構
- position:value;
定位屬性static
默認值。沒有定位,元素出現在正常文檔流中
#box{position:static;width:100px;height:100px;border:2px?solid?#f00;
}
定位屬性fixed
生成固定定位的元素,相對于瀏覽器窗口進行定位。
元素的位置通過位置偏移屬性進行設置。
元素的Z軸疊放順序通過z-index屬性進行設置。
元素從正常文檔流中完全移除,不占用頁面空間
當用戶向下滾動頁面時元素框并不隨著移動
#topNav{position:fixed;width:100%;left:0;top:0;right:0;background-color:#000;
}
定位屬性absolute
生成絕對定位元素,相對于static定位以外的第一個父元素進行定位
元素的位置通過位置便宜屬性進行規定
元素的Z軸疊放順序通過z-index屬性進行設置
將元素的正常文檔流中完全移除,不占據空間
#mask{position:absolute;width:100%;height:100%;left:0;top:0;right:0;bottom:0;background-color:#000;
}
定位屬性relative
生成相對定位元素,相對于其正常位置進行定位
元素的位置通過位置便宜屬性進行設置
元素的Z軸疊放順序通過z-index屬性進行設置
元素原本所占的空間仍保留
元素框會相對與它原來的位置偏移某個距離
-設置垂直或水平位置,讓元素相對于它的起點進行移動
位置偏移
left屬性設置對象相對于父元素/窗口的左側偏移距離
right屬性設置對象相對于父元素/窗口的右側偏移距離
top屬性設置對象相對于父元素/窗口的頂部偏移距離
bottom屬性設置對象相對于父元素/窗口的底部偏移距離
Z軸疊放順序
HTML元素的Z軸地方順序可以通過z-index屬性實現
Z軸的數值越打、其位置靠上,反之靠下
透明處理
通過CSS樣式可以設置HTML元素的透明度
在chrome、firefox等瀏覽器中采用opacity屬性實現
在IE瀏覽器中采用filter屬性實現
#mask{position:absolute;width:100%;height:100%;left:0;top:0;right:0;bottom:0;background-color:#000;opacity:?.3;filter:?alpha(opacity=30);
}
CSS Hacks
為了解決不同瀏覽器之間CSS支持的不同
瀏覽器的類型及版本的不同會造成CSS效果的不盡相同
CSS Hack區分IE6、IE7、firefox
區別不同瀏覽器,CSS Hack寫法
區別IE6與Firefox
background:orange;*background:blue;
區別IE6與IE7
background:green!impartant;background:blue;
區別IE7與Firefox
background:orange;*background:green;
區別FF、IE6、IE7
background:orange;
*background:green;
_background:blue;
background:orange;
*background:green!important;
*background:blue;
CSS優化
減輕服務器壓力
縮短服務器響應時間
提高用戶的體驗度
CSS優化原則
盡量減少HTTP請求個數
80%的最終用戶響應時間花在前端程序上,而其大部分時間則花在各種頁面元素,如圖像、樣式表、腳本和Flash等的下載。減少頁面元素將會減少HTPP請求的次數。這是快速顯示頁面的關鍵所在。常用的方法包括:
- CSS sprites,合并多個背景圖像到一個單獨圖像,然后通過background-p_w_picpath和background-position進行調整
- p_w_picpath maps,結合堆個圖像到一個單獨圖像。其總體規模大致是想當的,但是減少HTTP請求的數量,從而加快頁面顯示的速度。圖像銀蛇只工作在頁面中的圖像是連續的,如導航欄
把CSS放到頂部
將CSS樣式表放置在文檔頭部后,可以提高頁面加載速度。
這是因為樣式表放在頭部后允許頁面逐步顯示
避免使用CSS表達式
CSS表達式是一個強大(也是危險)的方式來動態設置CSS屬性。他們從IE5開始支持,但IE8正式終止了對這種功能的支持。使用CSS表達式的問題在于,計算機會計算高于預期的頻率。如果在CSS中要使用表達式的話,則可以通過:
- 使用一次性表達式,在第一次計算表達式設置為一個顯示的值,取代CSS表達式
- 如果樣式屬性必須設置動態頁面的整個生命周期中,使用事件處理程序來替代CSS表達式
避免空的src和href
當link標記的href屬性為空、script標記的src屬性為空的時候,瀏覽器渲染的時候會把當前頁面的URL作為它們的屬性值,從而把頁面的內容加載進來作為它們的值
將CSS和JS放到外部文件中
通常在現實世界中使用外部文件產生更快的速度,因為JavaScript和CSS文件將由瀏覽器緩存
這樣的技術在頁面內引用外部的JavaScript和CSS文件后續頁會引用外部文件應該已經在瀏覽器中緩存
壓縮CSS或JavaScript
壓縮的做法是把不必要的字符從代碼來減小其大小,從而提高加載時間
兩個流行的工具:JSMin和YUI Compressor,其中YUI Compressor也可以壓縮CSS
不要再HTML中縮放圖像
因為盡管通過HTML標記的width、height屬性縮放了圖像,但是圖像在網絡傳輸時仍然保持原來圖像的字節數
轉載于:https://blog.51cto.com/kinrey/1827418