用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精度溢出解决方案
Dec 02 Javascript
JQuery之focus函数使用介绍
Aug 20 Javascript
JQuery1.8 判断元素是否绑定事件的方法
Jul 10 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
node.js中的fs.closeSync方法使用说明
Dec 17 Javascript
js时钟翻牌效果实现代码分享
Jul 31 Javascript
浅析javascript的return语句
Dec 15 Javascript
js实现无缝滚动特效
Dec 20 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
Jan 16 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
Jul 02 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 jQuery
兼容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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
javascript常用对话框小集
2013/09/13 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
Python Socket编程入门教程
2014/07/11 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
python使用thrift教程的方法示例
2019/03/21 Python
Django 重写用户模型的实现
2019/07/29 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
数控专业个人求职信范例
2013/11/29 职场文书
生日邀请函范文
2014/01/13 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书