gpt4 book ai didi

html - 由于不透明过滤器,IE8 div 溢出不可见(切断)

转载 作者:行者123 更新时间:2023-11-28 00:25:37 25 4
gpt4 key购买 nike

我使用 jQuery 并在 div 中淡入淡出。在所有浏览器上运行良好,但 IE8(我怀疑其他 IE 版本也是如此)将切断溢出外部 divdiv 当它们的不透明度设置为 过滤器:alpha(不透明度=100)。如果您将以下内容复制并粘贴到文件中并使用 IE8 加载该文件,您会看到蓝色方 block 被截断,因为它溢出了其外部 div

<html>
<head>
<style>
.outer {
filter: alpha(opacity=100);
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 150px;
border: 2px solid #f00;
background-color: #700;
}
.inner {
position: absolute;
top: 100px;
left: 50px;
width: 100px;
height: 100px;
border: 2px solid #00f;
background-color: #007;
}
</style>
</head>
<body>
<div class="outer">
<div class="inner"></div>
</div>
</body>

我怎样才能让它在允许内部 div 溢出的情况下工作(是的,我已经尝试过 overflow: visible)并且我可以使用 jQuery 的不透明度动画机制?

最佳答案

在您的示例中,它是 Doctype 或缺少 Doctype 导致它在 IE8 中中断,但总的来说这是 IE 过滤器的问题,并且 hasLayout 即使在 IE7 中仍然会出现适当的 Doctype。虽然不确定你到底想制作什么动画,但我已经为你的 OP 中的示例想出了一个解决方法

关键是不要定位 outer div,如果需要,将它包裹在另一个 div 中,“place-holds”该位置。我发现的另一件事是 IE 也可以在 inner div 上使用不透明度过滤器,但你可能不会在你的真实代码中

这里有一些变通代码:

CSS

#wrap{ position: absolute; top: 30px; left:150px}

.outer {
filter: alpha(opacity=50);
opacity: 0.5;
width: 200px;
height: 150px;
border: 2px solid #f00;
background-color: #700;
}

.inner {
position: absolute;
filter: alpha(opacity=50);
top: 100px;
left: 50px;
width: 100px;
height: 100px;
border: 2px solid #00f;
background-color: #007;
}

button {position: absolute; left: 0px; width: 100px;}

HTML

<button>Toggle Fade</button>
<div id="wrap">
<div class="outer">
<div class="inner"></div>
</div>
</div>

jQuery

$(document).ready(function() {

$('button').click(function(e) {
$('.outer, .inner').fadeToggle("slow", "linear");
});

});

如果切换未同时应用于内部 div,则动画在 IE 中会相当不稳定,它会平滑地淡出外部 div,但内部 div 会立即显示/隐藏

其他浏览器不需要 inner 上的不透明度,因为它们正确地继承了它。所以在那个浏览器上,是否需要 inner 上的过滤器取决于你/p>

关于html - 由于不透明过滤器,IE8 div 溢出不可见(切断),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com