用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数


Posted in Javascript onJanuary 21, 2012

首先这个元素position为fixed
top为(clientHeight-elem.offsetHeight)/2(即元素在浏览器的中间,这个是固定的)
left为(clientWidht-主体宽度)/2+主体宽度+左边距,左边距可以设为正数,也可以为负数,如果为负数时的绝对值 等于 主体宽度+elem.offsetWidht,那么元素就刚好浮动在页面主体的左边,设置为0时,刚好浮动在页面主体的右边
但是万恶的ie6不支持css中fixed属性,好在ie6可以通过expresion表达式来解决,万事大吉
具体看代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="gb2312" /> 
<title>左右浮动元素</title> 
<style type="text/css"> 
html{_background-image:url(about:blank);_background-attachment:fixed;/*针对ie6,解决窗口滚动时的抖动*/} 
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; 
/*针对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="https://3water.com/" title="三水点靠木" target="_blank">三水点靠木</a> 
</div> 
</div> 
<script language="javascript"> 
window.onload = function(){ 
/* 
---------------------------------- 
定义一个浏览器左右浮动元素相对于页面主体宽度的位置的函数 
---------------------------------- 
*/ 
function setScrollDivPos(elemId_str,main_width,m_left){ 
//自定义一个获取元素的函数 
$ = function(id){return document.getElementById(id);}; 
//获取浏览器在标准模式和混杂模式的视口大小 
var c_width = document.documentElement.clientWidth || document.body.clientWidth; 
var c_height = document.documentElement.clientHeight || document.body.clientHeight; 
//获取浏览器滚动时顶部被隐藏的像素大小 
//var s_top = document.documentElement.scrollTop || document.body.scrollTop; 
//获取浏览器视口宽度减去页面主题宽度的一半 
var half_width = (c_width - main_width)/2; 
//获取浏览器视口高度的一半 
var half_height = c_height/2; 
//获取元素的高度 
var elem_height = $(elemId_str).offsetHeight; 
//获取元素相对于页面主体的(左、上)相对位置 
var pos_left = main_width + half_width + m_left + "px"; 
var pos_top = (c_height - elem_height)/2 + "px"; 
//获取浏览器顶部的滚动大小 
//var s_top = document.documentElement.scrollTop || document.body.scrollTop; 
//对元素进行定位布局 
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的元素 在页面主题宽度为990px的左侧 
//setScrollDivPos("pos-id",990,-1040); 
//定义id为pos-id的元素 在页面主题宽度为990px的右侧 
setScrollDivPos("pos-id",990,0); 
} 
</script> 
</body> 
</html>
Javascript 相关文章推荐
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
Mar 27 Javascript
javascript 写类方式之一
Jul 05 Javascript
9个javascript语法高亮插件 推荐
Jul 18 Javascript
推荐一个封装好的getElementsByClassName方法
Dec 02 Javascript
bootstrapValidator自定验证方法写法
Dec 01 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
Sep 18 Javascript
node实现爬虫的几种简易方式
Aug 22 Javascript
Vue可自定义tab组件用法实例
Oct 24 Javascript
js实现轮播图效果 z-index实现轮播图
Jan 17 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
Apr 13 Javascript
Vue实现购物小球抛物线的方法实例
Nov 22 Vue.js
video.js添加自定义组件的方法
Dec 09 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
Jan 21 #Javascript
面向对象的Javascript之一(初识Javascript)
Jan 20 #Javascript
MooBox 基于Mootools的对话框插件
Jan 20 #Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
Jan 20 #Javascript
json的前台操作和后台操作实现代码
Jan 20 #Javascript
Prototype源码浅析 Enumerable部分(二)
Jan 18 #Javascript
JS中的public和private对象,即static修饰符
Jan 18 #Javascript
You might like
php调用mysql存储过程
2007/02/14 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
php实现读取超大文件的方法
2014/07/28 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
jQuery前端开发35个小技巧
2016/05/24 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
手把手教你python实现SVM算法
2017/12/27 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
浅析使用Python搭建http服务器
2019/10/27 Python
python如何删除列为空的行
2020/07/17 Python
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
高三自我鉴定
2013/10/23 职场文书
技校毕业生的自我评价
2013/12/27 职场文书
早读课迟到检讨书
2014/09/25 职场文书
社区服务活动报告
2015/02/05 职场文书
公司放假通知范文
2015/04/14 职场文书
为什么不建议在go项目中使用init()
2021/04/12 Golang
python中opencv实现图片文本倾斜校正
2021/06/11 Python
MySQL的索引你了解吗
2022/03/13 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL