`

IE6下position定位子元素溢出,父元素被撑开的解决思路。(转)

阅读更多

在一些被常规的页面布局当中,我们常常需要通过position定位HTML元素来实现我们想要的效果。但是在这个办法在IE6中常常会出现各种问题。例如,我们想让一个子元素溢出其父元素之外显示,而影响父元素本身和其他兄弟元素的样式,我们可以这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<style type="text/css">
body{ text-align:center;}
.father{ width:300px; height:300px; background:#96F; margin:0 auto; _overflow:hidden; }
.son{ width:400px; height:200px; background:#09F; position:relative; right:100px; top:0px;}
</style>
<body>
<div class="father">
	<div class="son">子元素</div>
    父元素
</div>
</body>
</html>

运用position:relative,在IE7+,chrome,firfox中能很好的实现溢出效果,如下图:

但是在IE6中,父元素却被子元素撑开了了,width值变成了400px; 在这个情况下,子元素right:100px属性作用使其向左移动100px,这点IE6和其他浏览器效果其实一样,由于被撑开,子元素右边出现了100PX和父元素之间的空隙。如下图:

所以,我们给父元素添加一个overflow:hidden属性,防止在IE6被子元素撑开,但是,在IE7+,chrome,firfox中溢出部分被hidden掉了,IE6却没有。因此我们还得出一个结论:IE6下父元素的overflow:hidden对于具有position:relative属性的子元素无效,但是可以防止被子元素撑开。所以,可以这样写父元素的hack:

1
.father{ width:300px; height:300px; background:#96F; margin:0 auto; _overflow:hidden; }

在verflow:hidden前加个只有IE6才能识别的下划线,就OK了。

分享到:
评论

相关推荐

    CSS让子容器超出父元素(子容器悬浮在父容器效果)

    前言 有时候,我们需要如下图这样一个悬浮效果需求: 实现 在标准的正常的情况下,只能使用 绝对定位 来完成。 第一步:父容器定位设置为 relative(相对.../*父元素&gt;相对定位*/ } #b{ width: 150px; height:50px;

    解决ie6的定位问题 position fiexed

    ### 解决IE6中的定位问题:Position Fixed 在早期的Web开发中,Internet Explorer 6(简称IE6)因其浏览器兼容性问题而臭名昭著。其中一个常见的问题是`position: fixed;`属性在IE6中不起作用。这使得开发者很难...

    一个VUE组件子元素scroll父元素容器不跟随滚动兼容PC移动端

    例如,设置`overflow: hidden`防止父元素内容溢出,以及设置`position: relative`或`absolute`来控制父元素的位置。 5. **使用库或插件**: 虽然可以手动实现这个功能,但为了提高效率和兼容性,也可以使用一些...

    html div没有被撑开的原因及解决办法

    如果`div`内部的子元素被设置了`position: absolute`,它会从正常文档流中移除,不再影响父元素的尺寸。因此,父`div`可能不会自动扩展以适应它。 **解决方案:** 1. 如果可能,避免使用绝对定位,或者尝试使用相对...

    详解CSS 子元素相对于父元素固定定位解决方案

    1. **祖先元素定位**:要使子元素相对于父元素绝对定位,父元素必须有定位属性(`position`),通常是`position: relative;`。这样,子元素就会相对于这个父元素定位,而不是相对于文档流。 2. **滚动条处理**:...

    浮动里的绝对定位元素在IE下被遮挡的解决方法

    标题“浮动里的绝对定位元素在IE下被遮挡的解决方法”指向的就是一个典型的问题,即在IE浏览器中,绝对定位的元素可能会被其他浮动元素遮挡。这个问题在其他现代浏览器中可能不存在,但对那些还需要支持IE的开发者来...

    HTML IE6 纯CSS 解决 position fixed 的问题

    为了解决IE6中的`position: fixed;`问题,我们可以采用以下几种方法: 1. **条件注释法**: 在HTML文档的头部,可以使用IE6特有的条件注释来引入一个专门为IE6定制的CSS文件,这样可以针对IE6浏览器提供特别的样式...

    IE6下的纯CSS完美position:fixed实现

    通常,这样的示例会包含一个演示页面,展示在IE6下如何正确显示固定定位元素。 总之,要在IE6下实现`position: fixed`效果,开发者需要依赖一些非标准的技术和工作-around。这篇博客可能提供了一个详细指南,帮助...

    绝对定位元素被遮挡的解决方法

    本文实例讲述了绝对定位元素被遮挡的解决方法。分享给大家供大家参考。具体方法如下: ie7下 绝对定位元素即使z-index值很高,如果其设置相对定位的父元素没有设置z-index值的话,其可能(这种可能性当然是布局存在...

    css子元素相对父元素进行定位的实现

    ### CSS子元素相对父元素进行定位的实现 #### 解决方案概述 在Web开发中,经常需要对页面中的元素进行精确的布局控制。CSS提供了多种定位机制,其中相对定位(`relative`)与绝对定位(`absolute`)是两种常用的...

    ie6下定位bug解决

    在其他现代浏览器中,CSS的`position`属性如`relative`、`absolute`和`fixed`能很好地实现元素的定位,但在IE6中,这些属性的处理方式却大不相同,导致开发者需要进行特殊的“hack”来解决这些问题。 首先,IE6不...

    IE overflow:hidden失效的解决方法

    overflow:hidden失效 当父元素的直接子元素或者下级子元素的样式拥有position:relative属性时,父元素的overflow:hidden属性就会失效。 我们在IE 6内发现子元素会超出父元素设定的高度,即使父元素设置了overflow:...

    解决IE6,IE7不能隐藏(overflow:hidden)绝对定位溢出的内容

    令人蛋疼的IE,IE6/IE7下父元素有相对/绝对定位时,子元素在IE6和IE7下overflow:hidden;失效。 情况一:(在parent上增加position:relative) 复制代码代码如下: &lt;style type=”text/css”&gt; .parent{ width:...

    IE6下fixed实现头部定位

    本资源旨在解决IE6下`fixed`定位的实现问题,帮助开发者绕过这个棘手的兼容性障碍。要理解这个问题,首先要了解`position: fixed`的正常行为:元素的位置基于视口,而不是文档流,这意味着它会保持在屏幕的特定位置...

    IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素

    具体表现为:当一个设置了`absolute`或`relative`定位的父元素被隐藏(通过设置`display:none`),然后其子元素也被隐藏,最后再重新显示这个父元素时,子元素在IE6/7及IE8/9/10的IE7模式中可能会意外地显示出来,...

    jQuery 子级元素在父级元素内滚动

    这个场景常见于创建滚动效果或者实现自定义滚动条,比如在滚动父元素时,子元素随着父元素的滚动保持可见或执行特定的动画。 首先,我们需要引入jQuery库,例如通过在HTML文件中引用`&lt;script src="jquery-1.5.js"&gt;...

    IE6不支持fixed解决方法

    ` 这个表达式是IE6特有的,它会动态地更新元素的垂直位置,使其相对于父元素的滚动条位置保持固定。 - `_left:expression(offsetParent.scrollLeft);` 类似地,这个表达式用于处理元素的水平位置。 如果需要让元素...

Global site tag (gtag.js) - Google Analytics