用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 相关文章推荐
JavaScript字符串String和Array操作的有趣方法
Dec 18 Javascript
javascript两种function的定义介绍及区别说明
May 02 Javascript
HTML,CSS,JavaScript速查表推荐
Dec 02 Javascript
JS实现的竖向折叠菜单代码
Oct 21 Javascript
跟我学习javascript的var预解析与函数声明提升
Nov 16 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
Jul 12 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
Jul 18 Javascript
微信小程序如何使用globalData的方法
Jun 06 Javascript
js的Object.assign用法示例分析
Mar 05 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
Apr 26 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
Aug 22 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
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
一看就懂:jsonp详解
2015/06/01 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
Python实现把数字转换成中文
2015/06/29 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
Sanic框架应用部署方法详解
2018/07/18 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
教师学习培训邀请函
2014/02/04 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
学生检讨书怎么写
2014/10/09 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
工程合作意向书范本
2015/05/09 职场文书