用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 相关文章推荐
JQuery 1.4 中的Ajax问题
Jan 23 Javascript
javascript forEach通用循环遍历方法
Oct 11 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
Jan 09 Javascript
Bootstrap每天必学之日期控制
Mar 07 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
Sep 05 Javascript
js利用appendChild对标签进行排序的实现方法
Oct 16 Javascript
vue开发心得和技巧分享
Oct 27 Javascript
原生JS查找元素的方法(推荐)
Nov 22 Javascript
html5 canvas 详细使用教程
Jan 20 Javascript
jQuery extend()详解及简单实例
May 06 jQuery
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
小程序如何支持使用 async/await详解
Sep 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获取MySql新增记录ID值的3种方法
2014/06/24 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
node跨域请求方法小结
2017/08/25 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
深入理解Python中的super()方法
2017/11/20 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
python的Tqdm模块的使用
2018/01/10 Python
python 阶乘累加和的实例
2019/02/01 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
python通过链接抓取网站详解
2019/11/20 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
Java语言的优势
2015/01/10 面试题
校园广播稿100字
2014/10/06 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
vue3中的组件间通信
2021/03/31 Vue.js