用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两行代码按指定格式输出日期时间
Oct 21 Javascript
最好用的省市二级联动 原生js实现你值得拥有
Sep 22 Javascript
原生js代码实现图片放大境效果
Oct 30 Javascript
微信小程序 网络请求(GET请求)详解
Nov 16 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
React Router基础使用
Jan 17 Javascript
微信小程序获取微信运动步数的实例代码
Jul 20 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 Javascript
微信小程序实现左侧滑栏过程解析
Aug 26 Javascript
jQuery实现倒计时功能完整示例
Jun 01 jQuery
Vue的自定义组件不能使用click方法的解决
Jul 28 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
Sep 24 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轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
Python创建系统目录的方法
2015/03/11 Python
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
解析Python编程中的包结构
2015/10/25 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
itchat接口使用示例
2017/10/23 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
python datetime中strptime用法详解
2019/08/29 Python
深入了解Python在HDA中的应用
2019/09/05 Python
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
消防器材管理制度
2014/01/28 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
新闻学专业求职信
2014/07/28 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
爱心捐助活动总结
2015/05/09 职场文书
高中化学教学反思
2016/02/22 职场文书
60句有关成长的名言
2019/09/04 职场文书
导游词之上海豫园
2019/10/24 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
Python 中的Sympy详细使用
2021/08/07 Python