用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 获取元素位置的快速方法 getBoundingClientRect()
Nov 26 Javascript
JavaScript中继承的一些示例方法与属性参考
Aug 07 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
Jquery实现动态切换图片的方法
May 18 Javascript
JavaScript模拟数组合并concat
Mar 06 Javascript
javascript中call apply 与 bind方法详解
Mar 10 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
Apr 16 Javascript
详解ES6 Symbol 的用途
Oct 14 Javascript
配置eslint规范项目代码风格
Mar 11 Javascript
vue+elementUI实现图片上传功能
Aug 20 Javascript
浅析vue-router中params和query的区别
Dec 24 Javascript
JavaScript内置对象之Array的使用小结
May 12 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 5.0对象模型深度探索之对象复制
2008/03/27 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
php如何获取Http请求
2020/04/30 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
关于热爱祖国的演讲稿
2014/05/04 职场文书
英语教育专业自荐信
2014/05/29 职场文书
冰峪沟导游词
2015/02/09 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
三十年同学聚会感言
2015/07/30 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
Kubernetes控制节点的部署
2022/04/01 Servers