用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 相关文章推荐
新老版本juqery获取radio对象的方法
Mar 01 Javascript
js 复制或插入Html的实现方法小结
May 19 Javascript
ajax提交表单实现网页无刷新注册示例
May 08 Javascript
js实现正方形颜色从下往上升的效果
Aug 04 Javascript
EasyUI中的dataGrid的行内编辑
Jun 22 Javascript
微信小程序实现图片放大预览功能
Oct 22 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
Sep 03 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 Javascript
解决vue scoped html样式无效的问题
Oct 24 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
Nov 02 Javascript
JS+CSS实现过渡特效
Jan 02 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
Codeigniter注册登录代码示例
2014/06/12 PHP
深入理解PHP中的count函数
2016/05/31 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
javascript一些不错的函数脚本代码
2008/09/10 Javascript
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
python基于openpyxl生成excel文件
2020/12/23 Python
数组越界问题
2015/10/21 面试题
汽车运用工程毕业生自荐信
2013/10/29 职场文书
大学生职业生涯规划书范文
2014/01/04 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
创先争优一句话承诺
2014/05/29 职场文书
孔庙导游词
2015/02/04 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
德劲DE1105机评
2022/04/05 无线电
Java实现带图形界面的聊天程序
2022/06/10 Java/Android