2010-01-19 49 views
6

Tôi đang làm việc trên một trang web có HTML/CSS/jQuery đang cố gắng hoạt động như một trang web Flash. Tôi đã phải sử dụng @ phông chữ mặt để có được phông chữ mong muốn để làm việc. Các khách hàng muốn phai trong văn bản và nội dung quá (vì vậy nó trông giống như các tập tin Flash). Vấn đề là, phông chữ trông lởm chởm và xấu xí trong Internet Explorer.Sử dụng jQuery làm mờ hiệu ứng mờ đục CSS và phông chữ cho phép hiển thị phông chữ rất xấu của Internet Explorer?

CSS của tôi cho các mặt chữ trông như thế này:

@font-face { 
font-family: 'SansumiRegular'; 
src: url('../fonts/Sansumi-Bold.eot'); 
src: local('Sansumi Regular'), local('Sansumi-Bold'), url('../fonts/Sansumi-Bold.ttf') format('truetype');} 

... được tạo ra từ: http://www.fontsquirrel.com/fontface/generator

Các jQuery cho phai trong công cụ này là như thế này:

$('#site').css({opacity: '0.0'}); 
... preloads the images with jQuery, and at callback do fade... 
$('#site').animate({opacity: '1.0'}, 1000); 

Về cơ bản, không có cách nào xung quanh thực tế là tôi cần phải sử dụng phông chữ cụ thể đó (không phải phông chữ web chuẩn) và tôi phải sử dụng một số loại kỹ thuật phai cho nó để 'trông giống như Flash tập tin'.

Điều này tất cả sẽ rất tuyệt vời trong Firefox, Safari, Chrome ... Nhưng trong IE có vẻ rác - tất cả lởm chởm và hầu như không thể đọc được. Sau khi nhìn xung quanh, tôi tìm thấy plugin jQuery này có nghĩa là xử lý các vấn đề ClearType trong IE: http://allcreatives.net/2009/12/05/jquery-plugin-ie-font-face-cleartype-fix/

... nhưng tôi có cảm giác nó mờ dần trong đó gây ra vấn đề với phông chữ. Có lẽ đó là thực tế là IE không thực sự hỗ trợ lệnh CSS opacity? ... nhưng nó làm mờ đi tất cả các trình duyệt IE? Tôi thậm chí đã thử một kỹ thuật tương đối chưa biết về việc áp dụng một màu nền đục (như #FFFFFF) cho các phần tử có văn bản trong mờ dần, nhưng điều này vẫn không có vẻ làm bất cứ điều gì.

Phải có vấn đề xung quanh vấn đề này? Ngoài vấn đề phông chữ nhỏ này, trang web đã hoàn tất!

+0

CẬP NHẬT: Vấn đề với cách hiển thị phông chữ 7 và 8 bằng phông chữ @. Tôi đã thử các kỹ thuật được giải thích trong liên kết trong câu hỏi của tôi và điều này vẫn không làm điều đó. Phông chữ hiển thị tốt trong IE6, không chỉ IE7 và IE8 mà làm cho tôi tin rằng đó là cách chúng hiển thị phông chữ. Không có gì để làm với sự phai mờ trong vấn đề ... Bất kỳ ai có ý tưởng nữa? – littlejim84

Trả lời

0

Vâng opactiy trong IE. đằng sau hậu trường jQ sử dụng điều khiển activeX để mô phỏng điều này nhưng điều đó dẫn đến những điều điên rồ khi được sử dụng kết hợp với png và loại trong suốt được đặt trên nó khi các phần tử được làm động.

5

Tôi gặp vấn đề tương tự khi phông chữ trông bị lởm chởm nếu tôi phai mờ trong phần tử. Tôi đã thử thiết lập nền và phát hiện ra rằng nó hoạt động nếu tôi thiết lập một nền mờ (như #fff) VÀ thiết lập opacity 0 bằng cách sử dụng jQuery.css(). Nếu tôi chỉ đặt độ mờ là 0 trong biểu định kiểu, thì nó sẽ không hoạt động. Tôi đã sử dụng fadeTo thay vì Animate.

Điều này làm việc trong IE8 cho tôi, tôi chưa thử IE7.

Hãy thử điều này trong stylesheet:

.fader { 
background: none repeat scroll 0 0 #fff; 
opacity: 0; 
} 

Và điều này trong JS:

$('.fader').css('opacity', '0').fadeTo(300, 1); 
+0

Câu chuyện có thật. Việc thêm màu nền sẽ khắc phục sự cố này. Tôi sử dụng jquery để chỉ áp dụng một màu nền nếu trình duyệt là IE8 hoặc thấp hơn để nó không làm hỏng thiết kế của trang web của tôi trong các trình duyệt khác có khả năng hơn. – wilsonpage

+0

Cuối cùng, ai đó đã tìm ra điều này. Đây là câu trả lời mà tôi đã chọn. Đã làm cho tôi. Ngoài ra, tất cả những gì tôi phải làm là áp dụng một nền thông qua CSS cho mục đang gặp sự cố - một thay đổi một dòng trong trường hợp của tôi. – Volomike

+0

Điều này cũng phù hợp với tôi. Tất cả những gì tôi cần làm là thêm màu nền cho phong cách css. Tôi không thể kế thừa hoặc làm cho nền trong suốt tuy nhiên và mong đợi các văn bản để mịn ra. Tôi đang sử dụng Jquery 1.3.5 để làm mờ văn bản trong và ngoài. Điều này có thể được sửa trong các phiên bản sau của Jquery. [link] (http://bugs.jquery.com/ticket/6841) –

3

Tôi có vấn đề này, thiết lập background-color rõ ràng trên các phần tử cố định vấn đề.

This link describes the problem

+0

Cảm ơn, điều này đã giải quyết được vấn đề của tôi. – ceejayoz

11

Như đã đề cập trong câu trả lời khác, jQuery sử dụng IE chỉ CSS tài sản filter cho opacity trong Internet Explorer. Đó là việc sử dụng thuộc tính này gây ra các vấn đề hiển thị văn bản.

Nếu bạn loại bỏ CSS filter khi hoạt hình của bạn được hoàn tất thì anti-aliasing vào văn bản sẽ được phục hồi:

$('#site').animate({opacity: '1.0'}, 1000, function() { 
    $(this).css('filter', 'none'); 
}); 

Nó vẫn sẽ trông lởm chởm trong khi các hình ảnh động đang diễn ra, nhưng nó có thể không được chú ý nếu hoạt ảnh nhanh.

(Đây là một jQuery lỗi đã biết và từ đó đã được cố định: http://dev.jquery.com/ticket/6652)

1

tôi phải vật lộn với vấn đề ClearType/opacity quá. Tôi phát hiện ra rằng nếu phần tử tôi muốn mờ dần có một bộ nền màu đồng nhất (thuộc tính màu nền css), văn bản sẽ hiển thị chính xác trong - và sau khi mờ dần. Vì vậy, nếu bạn không cần một nền trong suốt cho văn bản, bạn có thể sử dụng cách giải quyết này. Testet chỉ trong IE7.

+0

Điều này làm việc cho tôi trong IE8 –

1

Trong khi đợi phiên bản tương lai của jQuery, hãy thêm mã này trước khi tập lệnh của bạn đảm bảo rằng jQuery loại bỏ thuộc tính bộ lọc ở cuối bất kỳ hoạt ảnh mờ nào. (Via http://dev.jquery.com/ticket/6652)

Điều này đã xóa các phông chữ xấu xí đối với tôi.

if ($.cssHooks.opacity.set) { 
    $.cssHooks.opacity.defaultSet = $.cssHooks.opacity.set 
    $.cssHooks.opacity.set = function(elem, value) { 
    $.cssHooks.opacity.defaultSet(elem, value) 
    if (!elem.style.filter.replace(/\ *(alpha\(opacity=100\))?/, '')) 
     elem.style.removeAttribute('filter') 
    } 
} 
Các vấn đề liên quan