考虑以下几点..。
<!DOCTYPE>
<html>
<head>
<title></title>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
main{
width:500px;
height:500px;
margin:0 auto;
border:5px solid red;
display:none;
}
</style>
</head>
<body>
<main>
<h1>Test</h1>
</main>
</body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(document).ready(function () {
//load some external content then on callback...
$('main').show();
});
</script>
</html>除了IE8 (令人震惊的)之外,每个浏览器都工作得很好。如果您删除了display:none;,那么一切都很好,所以我假设这就是问题所在。但是为什么呢?
我想要实现的
<main>是我的包装器,它包含一个<nav>、<footer>和一个<div>,通过ajax调用将内容注入其中。当站点第一次加载登陆页内容并将其注入空的<div>内容持有者时,会出现轻微的尴尬闪烁。这不是什么大不了的事,但我想要一些更简单的东西,所以我在main样式定义中添加了一个show()或fadeIn(),并在内容加载后添加了一个show()或fadeIn(),以防止闪烁。起作用..。除了在IE8。这就好像<main>失去了由shiv定义的display,默认为inline。
我试过的东西
我已经将<main>标记替换为<div id="main">,这很好。但我正在尝试采用HTML5,并希望使用<main>标记。
我知道这是次要的,当我不明白原因时,我就会感到沮丧。
发布于 2013-09-25 19:53:42
不能完全归功于这个..。我工作的另一个开发人员是jQuery yoda.
默认情况下,jQuery似乎添加了一个css样式'display:inline;‘来标记元素。因为'main‘在IE中没有定义为已知元素(例如div),所以它默认为'inline’。一些解决办法可能是:
$('main').css('display','block');或用于褪色:
var $main = $('main');
$main.css('display','block').hide().show(600); //--not yet testedhttps://stackoverflow.com/questions/19013256
复制相似问题