当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > CSS浮动定位:引起文本重影的怪异问题

CSS样式表
base href 使用方法详解
html label标签的使用教程
使用CSS不用程序实现文字自动截断 用省略号代替
CSS hack实现 CSS完美兼容IE6/IE7/FF的通用方法
网页布局+纯CSS纵向下拉菜单 IE6/IE7兼容
CSS图片拼合生成器只需上传zip包即可
用iframe margin实现调用其他网页的某一区域的方法
用css alpha 滤镜 实现input file 样式美化代码
RGB 加成色 说明
为了防止乱码,请将用于页面编码的meta charset放到title的前面
DIV+CSS布局中不推荐使用的标签集合Dont Use These Tags
大家看了就明白了css样式中类class与标识id选择符的区别小结
DL.DT.DD实现左右的布局简单例子
css布局网页水平居中常用方法
使用CSS框架布局的缺点和优点小结
Web2.0下XHTML+CSS 设计需要注意的地方小结
table高级应用把表格进行到底(必看)
css强制换行 css强制不换行的css方法
Div CSS absolute与relative的区别小结
css实现文字垂直居中的代码

CSS样式表 中的 CSS浮动定位:引起文本重影的怪异问题


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

事物绝非十全十美总有强差人意的一面,之前针对浮动分析了其引起文本重影的怪异问题,而作为浮动布局的最佳搭档定位布局也存在一定的缺陷。

围绕着定位列出的种种问题,对某些情况只是作出了分析而暂时没有找到有解决方案,但既然知道问题所在,我们可以尽可能的采取其它措施避免这现象。

  1. position:relative;属性值导致overflow:hidden;失效。

     

    问题:在IE6/7中子级设置position:relative;属性值后,导致父级的overflow:hidden;失效。Demo1

    分析:与定位的层级关系有关,IE6/7解析为内容已经跳出文档流,以致父级误以为没有包含内容。

    解决方案:
    对于IE6可以为父级添加定位属性纠正问题,但IE7依然无效。

  2. overflow充当了position:relative的角色

     

    问题:在IE6或IE quirks模式中设定overflow:auto/hidden/scroll属性值后,元素显示效果相当于position:relative的相对定位效果。
    Demo2

    分析:在怪异模式与标准模式下的页面对CSS的解析会有一定的差异甚至是扭曲了其属性的作用,对这现象暂时还没有冲破的能力,也只能记录与回避了。

  3. 没有实渲染导致绝对定位的错误

     

    问题:在IE6中,子级元素绝对定位于父级元素时,当动态改变父级宽高时,子级位置没有发生变化。Demo3

    分析:估计是动态改变父级宽度时,IE6并没有实时对浏览器渲染。暂时没有CSS能解决这问题,但可尝试使用JS对改变改模块高度进行刷新解决这问题。

  4. IE6中position:relative;属性值无效

     

    问题:在IE6及以下版本,父级元素已设置position:relative;属性值,但子级绝对定位元素没有生效。Demo4

    分析:原因在于父级元素没有触发haslayout(相关资料请搜索On having layout),IE7及以上的高级浏览器则不存在这问题。

    解决方案:
    在父级元素中添加让其触发haslayout的CSS属性值。

  5. 奇数引起定位的1pxBUG

     

    问题:在IE6及以下版本,父级元素宽度高度为奇数时,子级元素绝对定位于(right:0;bottom:0;),会出现往内偏移1px的错误。Demo5

    分析:其真正原因还得问IE6的开发者了。但从例子中可以观察到左上角的子级元素显示正常,其原因为“盒子”拉伸扩展为上至下左至右,估计于此以至靠左边或顶部的位置不会发生移动的变化。