以往要達成這種模式的定位都要利用 JavaScript 的 onscroll 事件去達成,是蠻吃重的一種方法,而且流暢度也不好,會有閃爍的現象。
利用 fixed 定位可以簡化 JavaScript 的開發和負擔,而且又穩定且簡單設定。
- body{
- height:1200px;
- /* prevent screen flash in IE6(解決 IE6 不正常閃爍) */
- background:url(nothing.txt) white fixed;
- }
- div{
- background:#FF0066;
- border:4px solid #FF9999;
- }
- /* 水平置中 */
- .fixed-center{
- width:100px;
- height:100px;
- position:fixed;
- top:50%;
- left:50%;
- /* 上邊界計算 */
- /* -(border-top-width + padding-top + (height/2) ) */
- /* 或者是整體高除以二(offsetHeight/2) */
- margin-top:-52px;
- /* 左邊界計算 */
- /* -(border-left-width + padding-left + (width/2) ) */
- /* 或者是整體寬除以二(offsetWidth/2) */
- margin-left:-52px;
- /* position fixed for IE6 */
- _position: absolute;
- _margin-top:0;
- /* clientHeight:不包含邊匡的區塊高度( padding + height ) */
- /* offsetHeight:包含邊匡的區塊高度( border + padding + height ) */
- _top:expression(documentElement.scrollTop + ( documentElement.clientHeight-this.offsetHeight )/2
- );
- }
- .fixed-top-center{
- width:100px;
- height:100px;
- position:fixed;
- top:0;
- left:50%;
- margin-left:-52px;
- /* position fixed for IE6 */
- _position: absolute;
- _top:expression(documentElement.scrollTop);
- }
- .fixed-bottom-center{
- width:100px;
- height:100px;
- position:fixed;
- bottom:0;
- left:50%;
- margin-left:-52px;
- /* position fixed for IE6 */
- _position: absolute;
- _top:expression( documentElement.scrollTop+documentElement.clientHeight-this.offsetHeight );
- }
展示頁面(Demo Page)
參考來源:上下左右置中、不隨頁面捲動的內容-小正正教室
4 回應:
您好! 請問一下~
在.fixed-top-center{}中
若是設"top: 20px",它好像還是置頂?!
有什麼方法可以解決呢?
謝謝~
不好意思 上一則留言沒有寫清楚
我的問題是指在ie6的狀態下。
謝謝~
IE6 的設定方式
_top:expression(documentElement.scrollTop+20);
補充一下,所有底線(_)開頭的樣式都是給IE6看的
張貼留言