css固定元素位置(fixed)

标签: css 元素 位置 | 发表时间:2014-04-27 22:24 | 作者:xueshizhe
出处:http://www.iteye.com

我们经常碰到的需求是希望页面某个元素固定在浏览器的一个位置,无论如何滚动滚动条,位置不变,就例如经常看到的弹出广告。方法一般是使用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:原本使用的是"url(text.txt)",但是txt这个是不存在的,http请求报404错误,导致影响加载速度,参考了网上的一些写法,使用about:blank可以达到相同目的。

原理据说是ie6不支持fixed 而其样式背景却支持fixed,通过背景来此消彼长消除抖动,望大牛指教。

完整的代码:

body{
    background-image:url(about:blank); /* for IE6 */ 
    background-attachment:fixed; /*必须*/
}
#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;
}

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [css 元素 位置] 推荐:

css固定元素位置(fixed)

- - Web前端 - ITeye博客
我们经常碰到的需求是希望页面某个元素固定在浏览器的一个位置,无论如何滚动滚动条,位置不变,就例如经常看到的弹出广告. 方法一般是使用js控制,或者使用css. 在IE7以上版本及firefox、opera、safari里,都支持css属性"position:fixed",它的作用就是将元素相对于窗口固定位置.

一行CSS实现各种响应式元素 – Fluidity

- - 设计达人
FLUIDITY是一个极微小的 CSS样式表,压缩版只有一行代码,大小只有115个字节,它能实现图像、文本、Canvas、Table表格以及iFrame框架的响应式功能. 这个响应式非常适合用于一般企业站或文章内容上,如果需要表单、layout等支持就需要那些响应式框架了,但那些文件实现太大了,如Bootstrap就已经100KB+了,所以我觉得够用就好,下面一起来看看介绍.

获取 DOM 元素的绝对位置

- - Harttle Land
在操作页面滚动和动画时经常会获取 DOM 元素的绝对位置, 例如 本文 左侧的悬浮导航,当页面滚动到它以前会正常地渲染到文档流中, 当页面滚动超过了它的位置,就会始终悬浮在左侧. 本文会详述各种获取 DOM 元素绝对位置 的方法以及对应的兼容性. 关于如何获取 DOM 元素高度和滚动高度,请参考 视口的宽高与滚动高度 一文.

JS 和 CSS 的位置对其他资源加载顺序的影响

- - SegmentFault 最新的文章
克军做了一系列测试: js和css的顺序关系,给出了现象和结论,但未给出原因. JS 和 CSS 在页面中的位置,会影响其他资源(指 img 等非 js 和 css 资源)的加载顺序,究其原因,有三个值得注意的点:. JS 有可能会修改 DOM.典型的,可能会有. 这意味着,在当前 JS 加载和执行完成前,后续所有资源的下载有可能是没必要的.

计算文档中任意元素的绝对位置

- - 博客园_首页
  表单验证以及提示框需要跟随某些页面元素,面对的一个问题就是获取目标元素在页面中的绝对位置.

DOM元素在浏览器中的位置参数,如offset,ownerDocument

- - 浏览器 - 互联网 - ITeye博客
学习一下,好像有很多相关的参数. window.pageYOffset:Netscape属性,指的是滚动条顶部到网页顶部的距离. 2,getBoundingClientRect 获取元素位置. 对于文本对象,W3C提供了一个 TextRectangle 对象,这个对象是对文本区域的一个解释. 这里的文本区域只针对inline 元素,比如:a, span, em这类标签元素.

CSS图形

- GLORY - 酷壳 - CoolShell.cn
下面的示例展示了使用纯CSS制作的各种图形,你可以自由地修改文中的CSS代码. 经测试,IE9, Chrome, FF, Safari都可以正常显示. 五角星形 via Kit MacAllister. 心形 via Nicolas Gallagher. 无穷大 via Nicolas Gallagher.

用 Compass 寫 CSS

- Jay - Blog.XDite.net
最近在開發一個新產品,整體來說應該是接近寫完了,不過越接近完工,抓 IE 系列的 bug 就越是挫折. 朋友 @evenwu 就來洗我要不要換成 Compass,說這東西超神奇,超好用,還可以把 IE bug 殺光光. 其實之前就久仰 Compass 大名了,只是文件實在看起來太他媽的眼花繚亂,因為專案進度一直在跑,不太敢貿然換掉寫 CSS 的方式.

CSS 入门

- - 博客 - 伯乐在线
级联样式表非常简单,也就是 (X)HTML 网页之上的分层设计. 使样式表 “级联”,这样您就可以跨站点应用它 — 也就是说,将样式应用到网站,它就会自行应用到每个网页的每个元素. ●XHTML:可扩展 HTML. 对于网站,将数据与设计分离是一个重要的概念:数据使用 (X)HTML 发送到 浏览器,而设计使用 CSS 应用到该数据.

css 圆角

- - CSDN博客推荐文章
作者:kangquan2008 发表于2012-2-20 22:32:24 原文链接. 阅读:6 评论:0 查看评论.