用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 相关文章推荐
Dojo之路:如何利用Dojo实现Drag and Drop效果
Apr 10 Javascript
JQuery 小练习(实例代码)
Aug 07 Javascript
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
JavaScript中getUTCSeconds()方法的使用详解
Jun 11 Javascript
跨域请求的完美解决方法(JSONP, CORS)
Jun 12 Javascript
功能强大的Bootstrap组件(结合js)
Aug 03 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
Aug 08 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
vue-router实现tab标签页(单页面)详解
Oct 17 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
Vue 实现从文件中获取文本信息的方法详解
Oct 16 Javascript
微信小程序8种数据通信的方式小结
Feb 03 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
9个实用的PHP代码片段分享
2015/01/22 PHP
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
javascript常见操作汇总
2014/09/03 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
2020/02/11 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
python和shell获取文本内容的方法
2018/06/05 Python
python如何实现异步调用函数执行
2019/07/08 Python
在vscode中配置python环境过程解析
2019/09/28 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
Ruby如何定义一个类
2012/10/08 面试题
安全资料员岗位职责
2013/12/14 职场文书
职工运动会感言
2014/02/07 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
初三学生个人自我评定
2014/04/06 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
贫困生证明范文
2015/06/16 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
Python中的xlrd模块使用整理
2021/06/15 Python
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android