Opacity CSS không hoạt động trong IE8


143

Tôi đang sử dụng CSS để chỉ ra văn bản kích hoạt cho phần trượt xuống của jQuery: tức là khi bạn di chuột qua văn bản kích hoạt, con trỏ thay đổi thành một con trỏ và độ mờ của văn bản kích hoạt bị giảm để chỉ ra rằng văn bản có hành động nhấp chuột .

Điều này hoạt động tốt trong Firefox và Chrome, nhưng trong IE8, độ mờ không thay đổi.

Tôi đã thử nhiều cài đặt CSS mà không thành công.

Ví dụ

HTML:

<h3 class="slidedownTrigger">This is the trigger text</h3>

CSS:

.slidedownTrigger
{
    cursor: pointer;
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
    filter: alpha(opacity=75);
    -khtml-opacity: 0.75;
    -moz-opacity: 0.75;
    opacity: 0.75;
}

Điều gì ngăn IE thay đổi độ mờ đục? Lưu ý: Tôi đã thử điều này trên nhiều yếu tố khác nhau, hoán đổi thứ tự các câu lệnh CSS và chỉ sử dụng các câu lệnh IE. Tôi cũng đã thử sử dụng

-ms-filter: "alpha(opacity=75)";

nhưng không thành công.

Tôi đã hết mọi thứ để cố gắng để sửa đổi độ mờ hoạt động trong IE8.

Có ý kiến ​​gì không?


Tôi nghĩ câu hỏi liên quan / trùng lặp này có câu trả lời của bạn. stackoverflow.com/questions/859000/opacity-in-web-pages
Jeff Martin

Tôi thấy câu hỏi đó - rắc rối là câu trả lời: <br> <br> & nbsp; & nbsp; bộ lọc: alpha (độ mờ = 50); / * nhà thám hiểm internet / <br> & nbsp; & nbsp; độ mờ đục: 0,5; / fx, safari, opera, chrome * / <br> & nbsp; & nbsp; -ms-filter: "progid: DXImageTransform.Microsoft.Alpha (opacity = 50)"; / * IE8 * / <br> <br> không hoạt động đối với tôi (Tôi chỉ thử lại lần nữa để kiểm tra lại). Tôi đã áp dụng nó cho một h3 màu đen và đậm. Trong Firefox và Chrome, cài đặt độ mờ chuyển sang tiêu đề màu xám, như bạn mong đợi, nhưng trong IE8, nó vẫn có màu đen.

Rất tiếc - không nhận ra rằng bạn không được sử dụng HTML trong các nhận xét - nhưng tôi nghĩ bạn có thể thấy những gì tôi đang cố gắng nói

Nếu bạn thử những phong cách trên chỉ là một div màu rắn, chúng có hoạt động không? có thể có một số CSS khác đang xảy ra xung đột.
Jeff Martin

Đẹp một. Có - khi tôi thực hiện một div đơn giản, hãy cho nó chiều cao và chiều rộng và màu nền của màu đỏ, với các cài đặt độ mờ đó, nó hoạt động trong IE8. Nó đi ra bán đục. Tôi đang đấu tranh để xem vấn đề là gì mặc dù. Tôi không sửa đổi độ mờ đục của bất kỳ thứ gì khác trong biểu định kiểu, vì vậy tôi không thể nghĩ những gì có thể xung đột với nó chỉ dành cho IE.

Câu trả lời:


65

Không biết điều này có áp dụng cho 8 hay không, nhưng trong lịch sử IE không áp dụng một số kiểu cho các thành phần không "có bố cục".

xem: http://www.satzansatz.de/cssd/onhavinglayout.html


9
IE không áp dụng một số kiểu cho các thành phần không "có bố cục".
Azeem.Butt

4
Tuyệt quá! Cảm ơn. Đó là vấn đề. Các yếu tố tôi đã cố gắng điều chỉnh độ mờ cho (ví dụ h3) không "có bố cục". Khi tôi đưa cho họ một ít, độ mờ đục đã hoạt động. Tất cả tôi đã làm là thêm chiều rộng: 100%; đến h3. Cám ơn đã chỉ tôi hướng đi đúng. Tuy nhiên, có vẻ điên (nếu không có lỗi) rằng Internet Explorer thực hiện việc này.

51
IE không áp dụng nhiều kiểu cho nhiều phần tử.
danwellman

1
@danwellman và sau đó nó cũng có rất nhiều thứ "vui vẻ" khác. Yay
dudewad

Điều thú vị là, IE7 không cần bố trí ”bố cục. Tôi đang sử dụng hình nền phản hồi trên phần tử có chiều cao bằng 0 padding-bottom: 100%và trong IE8, độ mờ không có hiệu lực cho đến khi tôi đặt chiều cao rõ ràng. IE7 không cần điều này.
Kout

158

Thiết lập những thứ này (chính xác như tôi đã viết) đã phục vụ tôi khi tôi cần:

-moz-opacity: 0.70;
opacity:.70;
filter: alpha(opacity=70);

6
Cảm ơn, tôi tin rằng "bộ lọc: alpha (opacity = 70);" dành cho IE <8. Tuy nhiên, nó không hoạt động (đối với tôi) trong IE8 (tôi mới kiểm tra). -moz-opacity hiện không còn nhiều hạn chế, và opacity là cách làm tiêu chuẩn - vì vậy, một cách tự nhiên, Microsoft đã không sử dụng cách làm đó (cách quá dễ dàng).

15
Chỉ cần đặt "độ mờ" và "bộ lọc" như bạn mô tả là đủ để nó hoạt động với tôi trong cả FF4 và IE8. -moz-opacity là không cần thiết.
quỷ dữ

1
@Gabriel McAdams: bộ lọc: alpha (opacity = 70); đã làm việc (nhưng chỉ trong IE 8)
Poonam Bhatt

@Gabriel Điều đó đã làm việc một điều trị! Tôi sẽ không gặp vấn đề về độ mờ đục trong IE 7/8!
MJCoder

1
Thông tin cụ thể hơn: Trên thực tế, nó là fadeIn trong phương pháp loại bỏ tính minh bạch.
tmorell

49

Bạn cần đặt Opacity trước cho các trình duyệt tuân thủ tiêu chuẩn, sau đó là các phiên bản IE khác nhau. Xem ví dụ:

nhưng mã opacity này không hoạt động trong eg8

.slidedownTrigger
{
    cursor: pointer;
    opacity: .75; /* Standards Compliant Browsers */
    filter: alpha(opacity=75); /* IE 7 and Earlier */
    /* Next 2 lines IE8 */
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=75);
}

Lưu ý rằng tôi đã loại bỏ -moz vì Firefox là trình duyệt Tuân thủ Tiêu chuẩn và dòng đó không còn cần thiết nữa. Ngoài ra, -khtml bị mất giá, vì vậy tôi cũng loại bỏ phong cách đó.

Hơn nữa, các bộ lọc của IE sẽ không xác thực các tiêu chuẩn w3c, vì vậy nếu bạn muốn trang của mình xác thực, hãy tách biểu định kiểu tiêu chuẩn của bạn khỏi biểu định kiểu IE bằng cách sử dụng câu lệnh if như dưới đây:

<!--[if IE]>
<link rel="stylesheet" type="text/css"  href="http://www.mysite.com/css/ie.css" />
<![endif]-->

Nếu bạn tách các quirks tức là, trang web của bạn sẽ xác nhận tốt.


3
Chỉ cần đặt "độ mờ" và "bộ lọc" như bạn mô tả là đủ để nó hoạt động với tôi trong cả FF4 và IE8. Phần có nhãn "/ * 2 dòng tiếp theo IE8 * /" là không cần thiết.
quỷ dữ

3
@demoncodemonkey: Đúng. Tất cả phụ thuộc vào phiên bản bạn đã cài đặt. Nếu bạn muốn tương thích tối đa, tôi đề nghị tất cả chúng.
Kevin Florida

Đúng, nhưng: "Để đảm bảo rằng người dùng của cả Internet Explorer 7 và 8 đều trải nghiệm bộ lọc, bạn có thể bao gồm cả hai cú pháp được liệt kê ở trên. Do đặc thù trong trình phân tích cú pháp của chúng tôi, trước tiên bạn cần bao gồm cú pháp được cập nhật trước cú pháp cũ hơn để bộ lọc hoạt động chính xác trong Chế độ xem tương thích (Đây là một lỗi đã biết và sẽ được khắc phục khi phát hành cuối cùng của IE8). Dưới đây là ví dụ về biểu định kiểu CSS: "(nguồn: link )
zrathen

@Kevin "Nếu bạn muốn tương thích tối đa, tôi đề nghị tất cả chúng". Vậy thì, bạn không nên loại bỏ -moz-opacity, phải không?
Ma quái

Báo giá không cần thiết cho bộ lọc -ms.
thdoan

17

Rõ ràng độ trong suốt alpha chỉ hoạt động trên các phần tử mức khối trong IE 8. Đặt hiển thị: khối.


17

Sử dụng display: inline-block;hoạt động trên IE8 để giải quyết vấn đề này.

FWIW, opacity: 0.75hoạt động trên tất cả các trình duyệt tuân thủ tiêu chuẩn.


5

CSS

Tôi đã từng sử dụng những điều sau đây từ CSS-Tricks :

.transparent_class {
  /* IE 8 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";

  /* IE 5-7 */
  filter: alpha(opacity=50);

  /* Netscape */
  -moz-opacity: 0.5;

  /* Safari 1.x */
  -khtml-opacity: 0.5;

  /* Good browsers */
  opacity: 0.5;
}

La bàn

Tuy nhiên, một giải pháp tốt hơn là sử dụng hỗn hợp Opacity La bàn , tất cả những gì bạn cần làm là @include opacity(0.1);và nó sẽ giải quyết mọi vấn đề về trình duyệt chéo cho bạn. Bạn có thể tìm thấy một ví dụ ở đây .



2

Không có câu trả lời nào ở trên làm việc cho tôi, vì vậy tôi chỉ đưa cho thẻ DIV của mình một hình nền trong suốt thay vào đó, nó hoạt động hoàn hảo cho tất cả các trình duyệt.


1

Mã này hoạt động

filter: alpha(opacity = 50); zoom:1;

Bạn cần thêm thuộc tính thu phóng để nó hoạt động :)


1

Bạn cũng có thể thêm một polyfil để cho phép sử dụng độ mờ tự nhiên trong IE6-8.

https://github.com/bladeSk/iNET-explorer-opacity-polyfill

Đây là một polyfil độc lập không yêu cầu jQuery hoặc các thư viện khác. Có một số lưu ý nhỏ mà nó không hoạt động trên các kiểu nội tuyến và đối với bất kỳ biểu định kiểu nào cần độ mờ polyfil, chúng phải tuân thủ chính sách bảo mật cùng nguồn gốc.

Cách sử dụng rất đơn giản

<!--[if lte IE 8]>
    <script src="jquery.ie-opacity-polyfill.js"></script>
<![endif]-->

<style>
    a.transparentLink { opacity: 0.5; }
</style>

<a class="transparentLink" href="#"> foo </a>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.