当前位置: 首页 > 网络学院 > 网页制作基础教程 > WEB设计综合 > 跨浏览器的CSS固定定位

WEB设计综合
连接基础
HTML基础
CSS 基础
添加背景音乐
HTML中的脚本标签
水平线样式
CSS基础以及CSS代码
自定义404错误页
链接至外部样式表
文本和颜色
表格详述
图像详述
优化CSS样式表代码
CSS元素div ul dl dt ol简释
CSS元素的class与ID命名常用关键字
DIV布局SEO的影响
CSS中的相对定位与绝对定位
CSS选择符
CSS特殊选择符伪类的应用技巧
常用的CSS知识

WEB设计综合 中的 跨浏览器的CSS固定定位


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-03-01   浏览: 1313 ::
收藏到网摘: n/a

跨浏览器的CSS固定定位{position:fixed}

不知道您是否留意了,浏览本站时,浏览器右下角有一个标着top的黑色直角三角形,可以点击它返回到正在浏览的网页页眉。当滚动网页时,它的位置一直没有任何改变,您感觉它怎么样?这就是通过CSS的定位属性{position:fixed}来实现的,通过它可以让HTML元素脱离文档流固定在浏览器的某个位置。

  1. IE7FirefoxOpera,都支持CSS{position:fixed},所以很容易实现

  2. IE6不支持该属性,但是在使用!DOCTYPE 声明指定standards-compliant(标准)模式可以通过CSS hack实现

  3. 述声明下IE5IE5.5目前没有发现通过纯粹CSS能够解决的方案,但是可以通过IE特有的expressionCSS中实现(移动网页时固定元素 会动),这和常见浮动Logo广告利用Javascript实现原理是一样的,只不过可以直接写在CSS中比较简便的

  4. 利用IE独有的条件注释语句可以针对不同的IE版本精确设置,同时避免了这些代码被其他浏览器读到,个人认为比纯粹的CSS Hack好,如果你安装了多个IE(包括绿色版本),条件注释将会以最高版本的IE为标准。

实现代码如下

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">……
/*IE6
中利用容器对溢出内容的处理方式来实现的*/
……
{position:fixed}


代码演示1(单个IE,纯粹通过条件注释区分IE浏览器)

代码演示2(多个IE,通过条件注释+CSS hack区分IE浏览器,明显的比纯粹条件注释复杂且不易读,放上来主要是便于同个PC拥有多个IE浏览器朋友[一般应该做是web开发的]可以直接看到效果,下同。)

或许有人像我一样,在!DOCTYPE 声明是XHTML1.0 Strict或者是XHTML1.1时,喜欢在声明前面加上XML Prolog(如:),但此时IE7以下都处于quriks(兼容)模式,所以上述针对IE6Hack失效,这个时候你可以对IE6也通过expression来实现。

IE6处于quriks模式时,IE6IE5.5CSS解析方式几乎雷同,所以当看到《position:fixed for Internet Explorer》时,我找到了在quriks模式下IE6/IE5.5/IE5统一的CSS解决方案:

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
……
{position:fixed}

代码演示3(单个IE,纯粹通过条件注释区分IE浏览器)

代码演示4(多个IE,通过条件注释+CSS hack区分IE浏览器)

对比两个纯粹的CSS hack发现,两个原理似乎相同,在于html元素和body元素的应用和对CSS{position:fixed}的支持程度上,但是这实际上是一种Hack,基本上不具备通用性, 知道这个方法就可以了。需要提醒的是IE6 standards-compliant模式下HTML元素不管给它设置什么样的高度和宽度,它的大小都始终充满整个浏览器的可视区域,而IE5 以及 Quirks 模式下html元素和body元素所有宽高设置都会被忽略而保持充满浏览器的可视区域.

或许有人会想,现在可以引入了XML Prolog又能用纯CSS方法解决了IE7以下的问题,这下爽了,但是加上XML Prolog后突然发现IE6处于Quriks模式,以前在standards-compliant模式下的设计又变形了,呵呵,这就是咱们搞IE的下场。

评论 (0) All

登陆 | 还没注册?