gpt4 book ai didi

javascript - 在 Internet Explorer 中,当父元素的兄弟元素被隐藏时,子元素不会在页面上移动

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

我正在创建一个支持 jQuery 的网页,其中包含指向外部站点的图像链接,用作浏览器主页。每组相关链接(开发、社交等)都包含在一个文件夹中,可以通过单击其标题展开或折叠该文件夹。这在 Firefox、Chrome 和 Safari 中运行良好。

Screenshot of working web page

在 Internet Explorer 中(惊喜!)我遇到了这种奇怪的行为。假设有三个垂直堆叠的文件夹。如果我折叠第一个文件夹,第二个和第三个文件夹及其内容将向上移动以填充空间,第二个文件夹的内容除外,它们在页面上保持相同的绝对位置。

我创建了该页面的精简版,其中包含显示问题所需的最低限度。在这里,我有名为“红色”、“绿色”和“蓝色”的文件夹,每个文件夹包含一个图像。

Screenshot of example page

如果我单击红色标题,蓝色图像及其文件夹将向上移动,但绿色图像仍保持在同一位置,现在位于蓝色图像的后面。

Screenshot of example page after clicking the read folder header

但是,如果我将文件夹标题和正文元素上的边框样式设置为“无”而不是“实心”,绿色图像将按预期随其他元素移动。

网页文件夹.html:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type='text/javascript' src='jquery-1.7.2.min.js'></script>
<script type='text/javascript' src='folder.js'></script>
<link rel='stylesheet' type='text/css' href='style.css'></link>
<title>Folder Example</title>
</head>
</html>

样式表style.css:

div.folder-header
{
background-color:#f0f0f0;
border-color:#e0e0e0;
border-width:1px;
cursor:pointer;
}

div.folder-body
{
background-color:#f8f8f8;
border-color:#e0e0e0;
border-width:1px;
}

div.link-viewport
{
position:relative;
}

img.link-image
{
position:absolute;
display:block;
border:none;
}

JavaScript 文件 layout.js:

$(document).ready(function()
{
var border = true;

var folder = function(title, src)
{
var section = $('<div>').appendTo('body');
var header = $('<div>').addClass('folder-header').text(title).appendTo(section);
var folder = $('<div>').addClass('folder-body').appendTo(section);
var viewport = $('<div>').addClass('link-viewport').css('width', 64).css('height', 64).appendTo(folder);
var image = $('<img>').addClass('link-image').attr('src', src).appendTo(viewport);

header.css('border-style', border ? 'solid' : 'none');
folder.css('border-style', border ? 'solid' : 'none');

header.click(function()
{
folder.toggle();
});
};

folder("Red", "red.png");
folder("Green", "green.png");
folder("Blue", "blue.png");
});

图像文件 red.png、green.png 和 blue.png:

Image file 1

Image file 2

Image file 3

非常感谢收到任何建议!

最佳答案

Accordion 似乎在 IE8+ 中工作,但我能够在使用 IE7 模式的 IE9 中看到问题(按 F12 打开 IE 开发工具 -> 浏览器模式 =“IE7”,文档模式 =“IE7 标准”)。我通过进行以下更改使其正常工作:

CSS:将 overflow: hidden; 添加到 div.folder-body 的规则集。

JS:删除第 18 行的 folder.toggle(); 并插入

if (folder.height()) { 
folder.hide();
folder.height(0); }
else {
folder.show();
folder.height(64);
}

虽然我不明白为什么!

这是 fiddle :http://jsfiddle.net/EhPk8/25/

关于javascript - 在 Internet Explorer 中,当父元素的兄弟元素被隐藏时,子元素不会在页面上移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12379133/

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