用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 相关文章推荐
DOM下的节点属性和操作小结
May 14 Javascript
js克隆对象、数组的常用方法介绍
Sep 26 Javascript
js编写一个简单的产品放大效果代码
Jun 27 Javascript
JS实现控制文本框的内容
Jul 10 Javascript
VUE中使用MUI方法
Feb 12 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
Apr 17 Javascript
从0到1搭建element后台框架优化篇(打包优化)
May 12 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
Mar 17 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
Jul 07 Javascript
JavaScript大数相加相乘的实现方法实例
Oct 18 Javascript
vue实现验证用户名是否可用
Jan 20 Vue.js
兼容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 判断变量类型实现代码
2009/10/23 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
解决layer图标icon不加载的问题
2019/09/04 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
Python获取央视节目单的实现代码
2015/07/25 Python
Python做文本按行去重的实现方法
2016/10/19 Python
python递归实现快速排序
2018/08/18 Python
Django开发的简易留言板案例详解
2018/12/04 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
Python 项目转化为so文件实例
2019/12/23 Python
python保留小数位的三种实现方法
2020/01/07 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
企划经理的岗位职责
2013/11/17 职场文书
2015年采购工作总结
2015/04/10 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python