css固定元素位置(fixed)
我们经常碰到的需求是希望页⾯某个元素固定在浏览器的⼀个位置,⽆论如何滚动滚动条,位置不变,就例如经常看到的弹出⼴告。⽅法⼀般是使⽤js控制,或者使⽤css。这⾥我写的是css的控制⽅法。
在IE7以上版本及firefox、opera、safari⾥,都⽀持css属性"position:fixed",它的作⽤就是将元素相对于窗⼝固定位置。代码如下
#ads{
position:fixed;
right:0;
bottom:0;
border:1px solid red;
width:300px;
height:250px;
}
我们定义⼀个#ads的id样式,并给他设了⾼度宽度,通过position:fixed以及right、bottom将元素定位在窗⼝右下⾓。
但是在IE6下,并不⽀持position:fixed属性,这个时候我们需要对IE6进⾏hack处理。解决的⽅案是使⽤ postion:absolute属性,它的作⽤⼤家都很熟悉,相对于⽗元素进⾏绝对定位,然后我们可以通过expression来改变#ads的top 值。
PS expression的定义:IE5及其以后版本⽀持在CSS中使⽤expression,⽤来把CSS属性和Javas cript 表达式关联起来,这⾥的CSS属性可以是元素固有的属性,也可以是⾃定义属性。就是说CSS属性后⾯可以是⼀段Javas cript表达式,CSS属性的值等于Javas cript表达式计算的结果。在表达式中可以直接引⽤元素⾃⾝的属性和⽅法,也可以使⽤其他浏览器对象。这个表达式就好像是在这个元素的⼀个成员函数中⼀样。
所以我们可以通过在css⾥计算javascript值来改变top值,代码如下:
#ads{
_position:absolute;
_top:expression(documentElement.scrollTop + documentElement.clientHeight-this.offsetHeight);
}
似乎⼀切都完美了,但是我们在IE6下运⾏的时候会发现,随着滚动条的移动,我们的这个#ads朋友他会抖动。解决⽅法也很简单,只要在body⾥加⼀点点的css,如下:
body{
background-image:url(about:blank);/* for IE6 */
background-attachment:fixed;/*必须*/
}
好啦,完⼯!!!!!!!!!!!!!!!!!!!!!!!!
有⽊有!!!!!!!!!!!!!!!!!!!!!!!!
PS:原本使⽤的是")",但是txt这个是不存在的,http请求报404错误,导致影响加载速度,参考了⽹上的⼀些写法,使⽤about:blank 可以达到相同⽬的。
原理据说是ie6不⽀持fixed ⽽其样式背景却⽀持fixed,通过背景来此消彼长消除抖动,望⼤⽜指教。
完整的代码:
body{
background-image:url(about:blank);/* for IE6 */
background-attachment:fixed;/*必须*/
}
css固定定位#ads{
width:300px;
height:250px;
position:fixed;
right:0;
bottom:0;
_position:absolute;
_top:expression(documentElement.scrollTop + documentElement.clientHeight-this.offsetHeight);
border:1px solid red;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。