我遇到了一些非常奇怪的事情!IE正在丢失ClearType
我有一个div,我隐藏与JS(jQuery)。 像这样:
$('#myDiv').hide();
然后当我做一个淡入这样的:
$("#myDiv").fadeIn('slow');
则文本丢失的ClearType在IE浏览器而不是在FF。如果我使用的是切换到淡入淡出的状态,那么一切都很好。
IE是什么,并有任何解决方案,因为它看起来很可怕。 (我对你也许在这一点上理解的ClearType)
我遇到了一些非常奇怪的事情!IE正在丢失ClearType
我有一个div,我隐藏与JS(jQuery)。 像这样:
$('#myDiv').hide();
然后当我做一个淡入这样的:
$("#myDiv").fadeIn('slow');
则文本丢失的ClearType在IE浏览器而不是在FF。如果我使用的是切换到淡入淡出的状态,那么一切都很好。
IE是什么,并有任何解决方案,因为它看起来很可怕。 (我对你也许在这一点上理解的ClearType)
关于这个问题的快速搜索显示如下:
jQuery fadeIn/fadeOut IE cleartype glitch
这个问题似乎是CSS的“过滤器”的属性不会被自动删除。 最简单的解决方案这个问题会被手动删除它:
$('#myDiv').fadeIn('slow', function() {
this.style.removeAttribute('filter');
});
如上博客文章解释说,这是一个相当混乱的解决方案。从博客文章
摘录,包括清洁的解决方案这个问题:
这意味着,每一次我们 要褪色的元素,我们需要 去除过滤器属性, 使我们的代码看起来凌乱。
一个简单的,更优雅的解决方案将是 经由 的jQuery的插件接口的自定义功能 以包裹.fadeIn()和 .fadeOut()函数。该代码将与 完全相同,但不是直接调用 淡入淡出的函数,我们将其称为 包装器。像这样:
$('#node').customFadeOut('slow', function() {
//no more fiddling with attributes here
});
那么,你是如何得到这个工作?只要 包含以下代码, 包含用于 添加功能的jQuery库。
(function($) {
$.fn.customFadeIn = function(speed, callback) {
$(this).fadeIn(speed, function() {
if(jQuery.browser.msie)
$(this).get(0).style.removeAttribute('filter');
if(callback != undefined)
callback();
});
};
$.fn.customFadeOut = function(speed, callback) {
$(this).fadeOut(speed, function() {
if(jQuery.browser.msie)
$(this).get(0).style.removeAttribute('filter');
if(callback != undefined)
callback();
});
};
})(jQuery);
当褪色适用于IE浏览器,它是(至少通过jQuery)的dxtransform类,这将使其失去任何抗锯齿效果,直到将它它的不透明度又回到了一个。
我读过Firefox 2中使用自己的文字渲染引擎,只要不透明度应用(至少在Mac)。这有时看起来很奇怪。
我这个CSS打击这(和它似乎并没有在所有影响性能)
body {
-moz-opacity: 0.99;
}
在IE这可能工作过。哦,但你需要使用IE的专有filter
属性。
一种方法是在div(通常)白色上设置背景色。
确定这里是我有史以来最糟糕的解决方案:
<head>
<script>
$(function() {
$(document.body).fadeIn(0);
});
</script>
</head>
<body>
<script>
$(document.body).hide();
</script>
body text
</body>
立即藏起了身体,并在当文件完成消除它。然后,你基本上禁用cleartype。
哦和请不要任何人做这个。或者如果它真的似乎对你有意义,那么测试它。只记得在整个DOM被加载之前你什么也看不到。我也看到了一些奇怪的图形故障。
我设法拉了一个'通用'的解决方案。 的removeAttribute如果不透明度为0和1之间,所以我的两分钱溶液如下不起作用:
将这个代码只是jQuery的动画方法定义的第一行之后(jquery.xxxjs)
animate: function(prop, speed, easing, callback) {
var optall = jQuery.speed(speed, easing, callback);
/*
* IE rendering anti-aliasing text fix.
*/
// fix START
var old_complete_callback = optall.complete;
optall = jQuery.extend(optall, {complete: function(){
if (jQuery.browser.msie) {
var alpha = $(this).css('opacity');
if(alpha == 1 || alpha == 0) {
this.style.removeAttribute('filter');
}
}
if (jQuery.isFunction(old_complete_callback)) {
old_complete_callback.call(this);
}
}
});
// fix END
...
希望这会有所帮助...
我设法拉了一个'通用'的解决方案。如果不透明度为0和1之间,所以我的两分钱溶液的removeAttribute如下不起作用:
将这个代码只是jQuery的动画方法定义的第一行之后(jquery.xxxjs)
animate: function(prop, speed, easing, callback) {
var optall = jQuery.speed(speed, easing, callback);
/*
* IE rendering anti-aliasing text fix.
*/
// fix START
var old_complete_callback = optall.complete;
optall = jQuery.extend(optall, {complete: function(){
if (jQuery.browser.msie) {
var alpha = $(this).css('opacity');
if(alpha == 1 || alpha == 0) {
this.style.removeAttribute('filter');
}
}
if (jQuery.isFunction(old_complete_callback)) {
old_complete_callback.call(this);
}
}});
// fix END
...
希望这将有助于...
grr为什么他们不能把这个标准淡入。只是确认它不在1.3.1(至少不需要额外配置),所以可能不存在 – 2009-01-26 11:42:59
即使使用此解决方案,在我看来它仍然看起来非常糟糕。其显而易见的是有一个小故障。尽可能尝试淡出彩色框并让文本瞬间显示 – 2009-01-26 12:07:08