用js來(lái)定義瀏覽器中一個(gè)左右浮動(dòng)元素相對(duì)于頁(yè)面主體寬度的位置的函數(shù)
更新時(shí)間:2012年01月21日 19:26:52 作者:
用js來(lái)定義瀏覽器中一個(gè)左右浮動(dòng)元素相對(duì)于頁(yè)面主體寬度的位置的函數(shù) 函數(shù)的參數(shù):elem元素、頁(yè)面主體寬度(如:990、950寬)、elem與頁(yè)面主體DIV的左邊距
首先這個(gè)元素position為fixed
top為(clientHeight-elem.offsetHeight)/2(即元素在瀏覽器的中間,這個(gè)是固定的)
left為(clientWidht-主體寬度)/2+主體寬度+左邊距,左邊距可以設(shè)為正數(shù),也可以為負(fù)數(shù),如果為負(fù)數(shù)時(shí)的絕對(duì)值 等于 主體寬度+elem.offsetWidht,那么元素就剛好浮動(dòng)在頁(yè)面主體的左邊,設(shè)置為0時(shí),剛好浮動(dòng)在頁(yè)面主體的右邊
但是萬(wàn)惡的ie6不支持css中fixed屬性,好在ie6可以通過(guò)expresion表達(dá)式來(lái)解決,萬(wàn)事大吉
具體看代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>左右浮動(dòng)元素</title>
<style type="text/css">
html{_background-image:url(about:blank);_background-attachment:fixed;/*針對(duì)ie6,解決窗口滾動(dòng)時(shí)的抖動(dòng)*/}
body{margin:0;padding:0;}
.box-wrap{width:990px;margin:0 auto;height:5000px;background:#999;}
.pos-id{width:50px;height:200px;line-height:200px;background:#F00;
/*針對(duì)ie6*/
_position:absolute;
_bottom:auto;
_top:expression(eval(document.documentElement.scrollTop+(document.documentElement.clientHeight-this.offsetHeight)/2-
(parseInt(this.currentStyle.marginTop)||0)-(parseInt(this.currentStyle.marginBottom)||0)));
/*其中的_top為瀏覽器的垂直居中線上,left在js定義中*/
}
.pos-id a{color:#FFF;font-size:12px;}
</style>
</head>
<body>
<div class="box-wrap" id="box-wrap">
<div class="pos-id" id="pos-id">
<a href="http://www.dhdzp.com/" title="腳本之家" target="_blank">腳本之家</a>
</div>
</div>
<script language="javascript">
window.onload = function(){
/*
----------------------------------
定義一個(gè)瀏覽器左右浮動(dòng)元素相對(duì)于頁(yè)面主體寬度的位置的函數(shù)
----------------------------------
*/
function setScrollDivPos(elemId_str,main_width,m_left){
//自定義一個(gè)獲取元素的函數(shù)
$ = function(id){return document.getElementById(id);};
//獲取瀏覽器在標(biāo)準(zhǔn)模式和混雜模式的視口大小
var c_width = document.documentElement.clientWidth || document.body.clientWidth;
var c_height = document.documentElement.clientHeight || document.body.clientHeight;
//獲取瀏覽器滾動(dòng)時(shí)頂部被隱藏的像素大小
//var s_top = document.documentElement.scrollTop || document.body.scrollTop;
//獲取瀏覽器視口寬度減去頁(yè)面主題寬度的一半
var half_width = (c_width - main_width)/2;
//獲取瀏覽器視口高度的一半
var half_height = c_height/2;
//獲取元素的高度
var elem_height = $(elemId_str).offsetHeight;
//獲取元素相對(duì)于頁(yè)面主體的(左、上)相對(duì)位置
var pos_left = main_width + half_width + m_left + "px";
var pos_top = (c_height - elem_height)/2 + "px";
//獲取瀏覽器頂部的滾動(dòng)大小
//var s_top = document.documentElement.scrollTop || document.body.scrollTop;
//對(duì)元素進(jìn)行定位布局
if(window.XMLHttpRequest){
$(elemId_str).style.cssText = 'position:fixed;top:' + pos_top + ';left:' + pos_left + ';';
}else{
$(elemId_str).style.cssText = ';left:' + pos_left + ';';
}
}
//定義id為pos-id的元素 在頁(yè)面主題寬度為990px的左側(cè)
//setScrollDivPos("pos-id",990,-1040);
//定義id為pos-id的元素 在頁(yè)面主題寬度為990px的右側(cè)
setScrollDivPos("pos-id",990,0);
}
</script>
</body>
</html>
top為(clientHeight-elem.offsetHeight)/2(即元素在瀏覽器的中間,這個(gè)是固定的)
left為(clientWidht-主體寬度)/2+主體寬度+左邊距,左邊距可以設(shè)為正數(shù),也可以為負(fù)數(shù),如果為負(fù)數(shù)時(shí)的絕對(duì)值 等于 主體寬度+elem.offsetWidht,那么元素就剛好浮動(dòng)在頁(yè)面主體的左邊,設(shè)置為0時(shí),剛好浮動(dòng)在頁(yè)面主體的右邊
但是萬(wàn)惡的ie6不支持css中fixed屬性,好在ie6可以通過(guò)expresion表達(dá)式來(lái)解決,萬(wàn)事大吉
具體看代碼:
復(fù)制代碼 代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>左右浮動(dòng)元素</title>
<style type="text/css">
html{_background-image:url(about:blank);_background-attachment:fixed;/*針對(duì)ie6,解決窗口滾動(dòng)時(shí)的抖動(dòng)*/}
body{margin:0;padding:0;}
.box-wrap{width:990px;margin:0 auto;height:5000px;background:#999;}
.pos-id{width:50px;height:200px;line-height:200px;background:#F00;
/*針對(duì)ie6*/
_position:absolute;
_bottom:auto;
_top:expression(eval(document.documentElement.scrollTop+(document.documentElement.clientHeight-this.offsetHeight)/2-
(parseInt(this.currentStyle.marginTop)||0)-(parseInt(this.currentStyle.marginBottom)||0)));
/*其中的_top為瀏覽器的垂直居中線上,left在js定義中*/
}
.pos-id a{color:#FFF;font-size:12px;}
</style>
</head>
<body>
<div class="box-wrap" id="box-wrap">
<div class="pos-id" id="pos-id">
<a href="http://www.dhdzp.com/" title="腳本之家" target="_blank">腳本之家</a>
</div>
</div>
<script language="javascript">
window.onload = function(){
/*
----------------------------------
定義一個(gè)瀏覽器左右浮動(dòng)元素相對(duì)于頁(yè)面主體寬度的位置的函數(shù)
----------------------------------
*/
function setScrollDivPos(elemId_str,main_width,m_left){
//自定義一個(gè)獲取元素的函數(shù)
$ = function(id){return document.getElementById(id);};
//獲取瀏覽器在標(biāo)準(zhǔn)模式和混雜模式的視口大小
var c_width = document.documentElement.clientWidth || document.body.clientWidth;
var c_height = document.documentElement.clientHeight || document.body.clientHeight;
//獲取瀏覽器滾動(dòng)時(shí)頂部被隱藏的像素大小
//var s_top = document.documentElement.scrollTop || document.body.scrollTop;
//獲取瀏覽器視口寬度減去頁(yè)面主題寬度的一半
var half_width = (c_width - main_width)/2;
//獲取瀏覽器視口高度的一半
var half_height = c_height/2;
//獲取元素的高度
var elem_height = $(elemId_str).offsetHeight;
//獲取元素相對(duì)于頁(yè)面主體的(左、上)相對(duì)位置
var pos_left = main_width + half_width + m_left + "px";
var pos_top = (c_height - elem_height)/2 + "px";
//獲取瀏覽器頂部的滾動(dòng)大小
//var s_top = document.documentElement.scrollTop || document.body.scrollTop;
//對(duì)元素進(jìn)行定位布局
if(window.XMLHttpRequest){
$(elemId_str).style.cssText = 'position:fixed;top:' + pos_top + ';left:' + pos_left + ';';
}else{
$(elemId_str).style.cssText = ';left:' + pos_left + ';';
}
}
//定義id為pos-id的元素 在頁(yè)面主題寬度為990px的左側(cè)
//setScrollDivPos("pos-id",990,-1040);
//定義id為pos-id的元素 在頁(yè)面主題寬度為990px的右側(cè)
setScrollDivPos("pos-id",990,0);
}
</script>
</body>
</html>
您可能感興趣的文章:
- 準(zhǔn)確獲得頁(yè)面、窗口高度及寬度的JS
- jquery 得到當(dāng)前頁(yè)面高度和寬度的兩個(gè)函數(shù)
- js獲得頁(yè)面的高度和寬度的方法
- js 獲取頁(yè)面高度和寬度兼容 ie firefox chrome等
- jquery實(shí)現(xiàn)在頁(yè)面加載完畢后獲取圖片高度或?qū)挾?/a>
- jquery實(shí)現(xiàn)類似EasyUI的頁(yè)面布局可改變左右的寬度
- js獲取input長(zhǎng)度并根據(jù)頁(yè)面寬度設(shè)置其大小及居中對(duì)齊
- 手機(jī)端頁(yè)面rem寬度自適應(yīng)腳本
- jQuery獲取頁(yè)面及個(gè)元素高度、寬度的總結(jié)——超實(shí)用
- 手機(jī)屏幕尺寸測(cè)試——手機(jī)的實(shí)際顯示頁(yè)面的寬度
相關(guān)文章
前端大屏開(kāi)發(fā)3種主流適配方案總結(jié)
這篇文章主要介紹了前端大屏開(kāi)發(fā)3種主流適配方案的相關(guān)資料,分別是vwvh方案、scale方案和rem+vwvh方案,每種方案都有其優(yōu)缺點(diǎn),可以根據(jù)具體需求選擇合適的方法,需要的朋友可以參考下2025-03-03
基于javascript實(shí)現(xiàn)全國(guó)省市二級(jí)聯(lián)動(dòng)下拉選擇菜單
這篇文章主要介紹了基于javascript實(shí)現(xiàn)全國(guó)省市二級(jí)聯(lián)動(dòng)下拉選擇菜單,以一個(gè)完整實(shí)例形式較為詳細(xì)的分析了js實(shí)現(xiàn)省市二級(jí)聯(lián)動(dòng)下拉菜單的實(shí)現(xiàn)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-01-01
讓你的博文自動(dòng)帶上縮址的實(shí)現(xiàn)代碼,方便發(fā)到微博客上
添加以下代碼到你的博客中: (呵呵,抄襲至lulu Studio http://s8.hk/0itw)2010-12-12
JavaScript中的閉包(Closure)詳細(xì)介紹
這篇文章主要介紹了JavaScript中的閉包(Closure)詳細(xì)介紹,函數(shù)調(diào)用對(duì)象與變量的作用域鏈、什么是閉包等內(nèi)容,并給出了實(shí)例,需要的朋友可以參考下2014-12-12
微信小程序canvas實(shí)現(xiàn)刮刮樂(lè)效果
這篇文章主要為大家詳細(xì)介紹了微信小程序canvas實(shí)現(xiàn)刮刮樂(lè)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
JavaScript中常見(jiàn)的七種繼承及實(shí)現(xiàn)
JS的繼承方式在我們面試的時(shí)候經(jīng)常會(huì)被問(wèn)到,所以深入理解js繼承方式以及它們的優(yōu)缺點(diǎn)是非常有必要的。本文為大家整理了JavaScript中常見(jiàn)的七種繼承及實(shí)現(xiàn),需要的可以參考一下2023-03-03

