用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数_javascript技巧

首先这个元素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="http://www.jb51.net/" 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>

时间: 2024-10-31 10:15:51

用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数_javascript技巧的相关文章

基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑_javascript技巧

当需要实现如下图操作,点击服务评分,出现一个服务评分窗口用来填入相关表单信息   可是这会让我们打开服务评分界面时还可以点击body主界面中的购物车等链接,这是不对的,因此我们可以使用层叠样式表来指定外围的div的z-index低于当前服务评分表单页面,不能被点击,如下: /* 定义一个div用于覆盖整个页面,这个div的z-index大于body,小于服务评分div */ #temp{ background-color: #000; opacity: 0.3; width: 100%; hei

js 调整select 位置的函数_javascript技巧

 //   排序:向上移动      function   Up()      ...{        var   sel=document.getElementById("selectCheck");  //获取select      var   nIndex   =   sel.selectedIndex;   //需要进行操作的select 项的索引      var   nLen   =   sel.length;   //select 总共项目数      if   ((nL

js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版_javascript技巧

网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offsetWidth   (包括边线的宽);网页可见区域高: document.body.offsetHeight  (包括边线的宽);网页正文全文宽: document.body.scrollWidth;网页正文全文高: document.body.scrollHeight;网页被卷去的高: documen

web 开发 jsp-Chrome 浏览器中&amp;amp;lt;body&amp;amp;gt;标签宽度与实际宽度不一致?

问题描述 Chrome 浏览器中<body>标签宽度与实际宽度不一致? 同样代码,在开发机A上面用Chrome浏览器测试显示body 的width 为1403.3333740234375px; 但其实际width应该为1623px,在代码中没有任何样式改变其width属性:而且换了自己的电脑,也是Chrome浏览器测试显示body 的width和实际width值也是一致的,所以 我在想 是否是因为我不小心动了google浏览器的某项设置造成的 ? 求教,是否由朋友也遇着过这种情形?查了一下,也

js document.getElementsByClassName的使用介绍与自定义函数_javascript技巧

getElementsByClassName()是HTML5 新增的DOM API.IE8以下不支持搜索. getElementByClassName()函数的使用方法: 使用JavaScript访问DOM的一个重大问题是,此过程需要一种通过元素类名称来选择类的类函数,对DOMContentReady,这种类函数的缺失导致开发人员需要自己编写自定义脚本业执行上述任务,许多这个类脚本都是围绕着getElementByClassName()建立的,这种解决方法在HTML5中被标准化,另外,这种方法还

100个不能错过的实用JS自定义函数_javascript技巧

1.原生JavaScript实现字符串长度截取 复制代码 代码如下: function cutstr(str, len) {    var temp;    var icount = 0;    var patrn = /[^\x00-\xff]/;    var strre = "";    for (var i = 0; i < str.length; i++) {        if (icount < len - 1) {            temp = str

js时间日期格式化封装函数_javascript技巧

js虽然提供了各种获取时间Date对象的不同属性方法,如:getDate 方法 | getDay 方法 | getFullYear 方法 | getHours 方法 ... ... 等等,但是却没有像java那样提供一个方法来供用户来根据自身提供的模板(pattern),来格式化指定时间对象,所以自己就封装了一个小方法,只供大家闲来调侃-.-,有好的建议还望慷慨指荐哦. 用到知识点: arguments:该对象代表正在执行的函数和调用它的函数的参数.不可显式创建,虽然有length属性,且能像数

IE6/7/8中Option元素未设value时Select将获取空字符串_javascript技巧

如下 复制代码 代码如下: <!DOCTYPE HTML> <html> <head> <title>IE6/7/8中Option元素未设value时Select将获取空字符串</title> </head> <body> <select onchange="alert(this.value)"> <option>one</option> <option>

JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法_javascript技巧

今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时都是正常的,但是在"08","09"就会返回0 (这种现象出现在ie内核的浏览器中,如360浏览器就会出现这种错误)(谷歌,火狐不受影响) . 查阅资料得知着这种现象原因: 大神的解释: 01--07自然没有问题,但是09,08都是不合格的八进制形式,所以被按照0处理了