文档章节

IE6和IE7下绝对定位position:absolute和margin的冲突问题解决

JavaSwing
 JavaSwing
发布于 2016/11/29 11:09
字数 521
阅读 7
收藏 0

绝对定位的Position:absoulte的元素,会让相邻的兄弟元素的margin-top失效。而如果去掉了兄弟元素的高度又会正常。

<div id="layer1" style="margin:20px; border:1px solid #F88; width:400px; ">
    <div id="layer2" style="position:absolute; background-color:#ccc;">Absolute (layer2)</div>
    <div id="layer3" style="margin:30px auto; width:200px; height:80px; background-color:#36F;">Normal Text Content
        (layer3)
    </div>

效果图:

image

image

image
从运行的效果图可以看到在chrome下是没有问题的,在IE7下就出现了,我开头所说的问题,FF也是没有问题的!

BUG主要有以下两个:1、Layer2在IE7下相邻的兄弟结点即Layer3的margin-top没有用了,2、layer2 无法靠左,距离左边的距离为layer1的第一个非绝对定义元素(layer3)的margin-left值。


解决的方案有以下几种:
1、添加代码:添加代码:<!–[if lte IE 7]>

<[endif]–>,这也是网上找到的能够完全解决问题的方法。即代码变为:

<div style=”margin:20px; border:1px solid #F88; width:400px; “> <div style=”position:absolute; background-color:#ccc;”>Absolute (layer2)</div> <!–[if lte IE 7]><div></div><![endif]–> <div style=”margin:30px auto; width:200px; height:80px; background-color:#36F;”>Normal Text Content (layer3)</div> </div>

2、外围元素加position:relative定义,绝对定义元素加left和top定义。此方法可以解决第二个bug,无法解决第一个bug。也有说法用padding-top替代margin-top的,但是有时可以这样,有时候毕竟不行的。

<div style=”margin:20px; border:1px solid #F88; width:400px; position:relative”> <div style=”position:absolute; background-color:#ccc; left:0; top:0;”>Absolute (layer2)</div> <div style=”margin:30px auto; width:200px; height:80px; background-color:#36F;”>Normal Text Content (layer3)</div> </div>

3、这是本文所要阐述的方法,相对来说比较完美一些。给绝对定义元素添加“background-color:#CCC; float:left; display:inline;”定义,背景色千万不可以去掉,如果没有背景色就加一个透明(background-color:transparent;)。即代码变为:

<div style=”margin:20px; border:1px solid #F88; width:400px;”> <div style=”position:absolute; background-color:#ccc; float:left; display:inline;”>Absolute (layer2)</div> <div style=”margin:30px auto; width:200px; height:80px; background-color:#36F;”>Normal Text Content (layer3)</div> </div>

参考:

http://www.jb51.net/css/74238.html

本文转载自:http://www.cnblogs.com/zxdBlog/p/5936804.html

JavaSwing
粉丝 21
博文 44
码字总数 8095
作品 0
杭州
程序员
私信 提问
【htc法:IE-CSS3】CSS3支持IE6、IE7、IE8

【htc法:IE-CSS3】CSS3支持IE6、IE7、IE8 摘要:IE-CSS3是提供一些CSS3标准新款式在即将到来的的Internet Explorer支持的脚本。 PS:IE6及IE7使用ie-css3.htc 能支持 box-sizing box-shadow ...

钟女士
2013/01/07
2.4K
2
常见浏览器的兼容问题

1 ie6.0横向margin加倍 产生因素:块属性、float、有横向margin。 解决方法:display:inline; 2 ie6.0下默认有行高 解决方法:overflow:hidden;或font-size:0;或line-height:xx px; 3 在...

effto
2016/09/04
51
0
IE下css bug集合-翻译自haslayout.net

概述 IE浏览器以不支持大量的css 属性出名,同时也因其支持的css属性中存在大量bug。 本页列举了IE下的一些问题,实例样本和一些我们已知的解决方法。 尽管我已经尽力按照它们本来的性质对它...

山哥
2012/06/15
81
0
IE6下z-index犯癫不起作用bug的初步研究[转]

by zhangxinxu from http://www.zhangxinxu.com 一、匆匆带过的概念 关于CSS中层级z-index的定义啊什么的不是本文的重点,不会花费过多篇幅详细讲述。这里就简单带过,z-index伴随着层的概念...

曾沙
2012/06/26
72
0
IE CSS Bug及解决方案参考手册

作为一名前端,我们通常要做的就是让页面在各系统A-Grade浏览器,甚至网站浏览份额0.1%以上的浏览器上良好显示。当然,还有性能问题。不过,今天要说的是样式的兼容问题。在IE/Mozilla/Webk...

solu
2011/01/06
376
0

没有更多内容

加载失败,请刷新页面

加载更多

Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部