所以我喜欢它,当我的应用程序在Firefox中工作得很好,但后来我在IE中打开它... ...不,请再试一次。
我遇到的问题是我使用JavaScript将{CSS显示属性设置为none
或table-cell
。
我最初使用的是display: block
,但Firefox在没有table-cell
属性的情况下渲染它很奇怪。
如果不在JavaScript中添加黑客来测试IE,我很乐意这样做。有什么建议吗?
感谢。
答案 0 :(得分:48)
我用jQuery解决了这个问题:
$(document).ready(function(){
if ($.browser.msie && $.browser.version == 7)
{
$(".tablecell").wrap("<td />");
$(".tablerow").wrap("<tr />");
$(".table").wrapInner("<table />");
}
});
上面的脚本假设你有使用样式的div,如:
<style>
.table { display: table; }
.tablerow { display: table-row; }
.tablecell { display: table-cell; }
</style>
答案 1 :(得分:31)
解决此问题的一种好方法是将display
值设置为''
:
<script type="text/javascript">
<!--
function toggle( elemntId ) {
if (document.getElementById( elemntId ).style.display != 'none') {
document.getElementById( elemntId ).style.display = 'none';
} else {
document.getElementById( elemntId ).style.display = '';
}
return true;
}
//-->
</script>
空值会导致样式恢复为默认值。此解决方案适用于所有主流浏览器。
答案 2 :(得分:9)
我遇到了同样的问题并使用了
*float: left;
“*”表示仅限IE
答案 3 :(得分:4)
好吧,IE7 does not have display: table(-cell/-row)
所以你必须想出其他的东西或做浏览器定位(我同意,这是糟糕的黑客)。作为一个快速修复(我不知道你想要实现什么,外观方面)你可以尝试display: inline-block
并看看它是什么样的。
也许找出办法display: block
并解决“Firefox渲染奇怪”的问题?你能准确地描述一下奇怪渲染的意思吗?
答案 4 :(得分:4)
您永远不需要Javascript来测试IE,请使用conditional comments。
您可以查看解决方案these guys,以便在IE中处理类似表格的显示。
答案 5 :(得分:4)
使用inline-block适用于此类内容。不,IE 6和IE 7在技术上没有显示:inline-block,但您可以使用以下样式复制行为:
div.show-ib {
display: inline-block;
*zoom: 1;
*display: inline;
}
关键是'zoom:1'切换元素上的'hasLayout'属性,这会改变浏览器呈现块级元素的方式。内联块的唯一问题是你不能有小于4px的余量。
答案 6 :(得分:3)
我已经使用CSS超过十年了,我从来没有机会使用display:table-cell,而且我唯一使用条件注释的时候是隐藏IE6的高级效果。
我怀疑采用不同的方法可以通过内在的跨浏览器方式解决您的问题。您是否可以打开一个单独的问题来描述您尝试实现的效果,并发布当前在Firefox中使用的HTML和CSS?
答案 7 :(得分:1)
用户eyelidless的条件评论的代码示例,亲切地发布
“[if lt IE 8]”仅在浏览器IE低于IE8时才有效,因为IE8做得正确。通过条件注释,IE7可以很好地横向排列DIV ... HTML:
<div class="container">
<!--[if lt IE 8 ]><table><tr><![endif]-->
<!--[if lt IE 8 ]><td><![endif]-->
<div class="link"><a href="en.html">English</a></div>
<!--[if lt IE 8 ]></td><![endif]-->
<!--[if lt IE 8 ]><td><![endif]-->
<div tabindex="0" class="thumb"><img src="pictures\pic.jpg" /></div>
<!--[if lt IE 8 ]></td><![endif]-->
<!--[if lt IE 8 ]><td><![endif]-->
<div class="link"><a href="de.html">Deutsch</a></div>
<!--[if lt IE 8 ]></td><![endif]-->
<!--[if lt IE 8 ]></tr></table><![endif]-->
</div>
我的CSS
.link {
display:table-cell;
vertical-align:middle;
}
div.container {
margin: 0 auto;
display:table;
}
.thumb {
display:table-cell;
float: left;
text-align: center;
}
IE 8和9与FireFox一样使用CSS。使用Table和TD&amp; amp; IE7看起来是相同的。 TR标签。在某些页面上,IE 8只有20%的时间工作,所以我使用[if lt IE 9]
这也有助于消除IE7无法处理的垂直对齐问题。
答案 8 :(得分:0)
IE7也不支持display:inline-block;
。在zoom: 1; *display: inline;
display:table-cell;