ฉันจะรีเซ็ตหรือแทนที่ตัวกรอง IE CSS ได้อย่างไร


89

ฉันใช้คุณสมบัติ 'ตัวกรอง' MS ที่เป็นกรรมสิทธิ์เพื่อพยายามสร้างสิ่งที่ไม่น่าเกลียดเทียบเท่ากับ css3 text-shadow และ box-shadow

ฉันทำได้ดีจริงๆจนกระทั่งฉันประสบปัญหานี้ ดูเหมือนว่าเมื่อฉันใช้ตัวกรองกับ div ภายใน div อื่นซึ่งมีตัวกรองเอฟเฟกต์ตัวกรองจะรวมเข้ากับวัตถุลูก

ฉันได้ลองใช้ตัวกรอง: ไม่มี; ทำการรีเซ็ต แต่ไม่มีความสุข ฉันได้ลองใช้รูปแบบต่างๆของไวยากรณ์เช่น "-ms-filter: 'progid: ... Glow ()'", "filter: progid: ... Glow ()", "filter: Glow ()" ฯลฯ ..

การทดสอบใน IE8


8
สิ่งนี้ใช้ได้กับฉัน:filter:;
Web_Designer

1
กรอง:; ใช้ไม่ได้กับพรีโปรเซสเซอร์ lessphp css ตัวกรอง: -; ไม่ว่า
David Meister

ใช้filter: ;. สิ่งนี้ฉันเดาว่าจะบังคับให้ IE ลบคุณสมบัติทั้งหมดออกด้วยกันเนื่องจากไม่ใช่ค่าที่ถูกต้อง
ภูมิสิงหล

3
ฉันต้องใช้ SCSS filter:none;เพื่อหลีกเลี่ยงข้อผิดพลาดทางไวยากรณ์
Nic Barbier

คำตอบ:


95

มีการเปิดใช้งานแอตทริบิวต์บูลีนซึ่งคุณสามารถตั้งค่าเป็นเท็จหรือจริง http://msdn.microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx

ตัวอย่าง:

-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)";

1
ขอขอบคุณ! สิ่งนี้ได้ผลสำหรับฉันสองคน ฉันมีรูปแบบพื้นหลังที่น่ารำคาญซึ่งจะไม่หายไปและหาไม่ได้ไม่ว่าฉันจะพยายามแค่ไหนก็ตาม
racl101

ขอบคุณ! ฟิลเตอร์ไล่ระดับสีสำหรับปุ่มเล่นได้ไม่ดีนักจากการที่มีปุ่มบางปุ่มที่มีภาพพื้นหลัง - ฟิลเตอร์จะอยู่เหนือรูปภาพ ...
อดัม

ทำงานอย่างมีเสน่ห์! ขอขอบคุณ!
Bogdan

20

คุณสมบัติ -ms-filter เป็นรายการ CSS ที่ไม่เป็นมาตรฐานเฉพาะเบราว์เซอร์และด้วยเหตุนี้จึงกำหนดให้พารามิเตอร์ถูกล้อมรอบด้วยเครื่องหมายคำพูด So -ms-filter: "none" จะทำงานได้ดี


16

ลองสิ่งนี้:

กรอง: -;


ทำงานให้ฉันใน IE7 ในขณะที่ -ms-filter: "progid: DXImageTransform.Microsoft.gradient (enable = false)"; ไม่ได้ Thx
Simon Arnold

@SimonArnold "-ms-filter" รองรับเฉพาะ IE8 ขึ้นไป IE7 รองรับแอตทริบิวต์ "filter" เท่านั้น ดูmsdn.microsoft.com/en-us/library/ie/ms530752(v=vs.85).aspx
vee

6

ฉันประสบความสำเร็จบางอย่างจากการวางตำแหน่งเด็กแบบสัมบูรณ์หรือญาติ สิ่งนี้ดูเหมือนจะไม่ได้ผลก่อนหน้านี้แม้ว่ามันอาจจะพังอีกครั้งเมื่อฉันซับซ้อนขึ้น

ฉันคิดว่าเมื่อผู้ปกครองใช้ตัวกรองแล้วเด็ก ๆ ทุกคนก็จะกลายเป็นพื้นผิว Directx ภายใน คุณยังคงสามารถเลือกข้อความได้ แต่มันล่าช้า ฉันคิดว่าการเลือกข้อความเป็นการแฮ็กที่ทำให้ตัวอักษรแต่ละตัวมีพื้นผิวแยกกัน มันเป็นเรื่องยุ่งเหยิงซึ่งอธิบายได้ไกลว่าทำไมเบราว์เซอร์โดยทั่วไปและตัวกรองโดยเฉพาะจึงมีปัญหามาก


6

หากคุณใช้ HTML5 คุณอาจต้องการไปตามเส้นทางการใช้งาน

<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="ie6 oldie"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="ie7 oldie"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="ie8 oldie"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<html lang="en" class="gtie9 modern">
<!--<![endif]-->

และใน CSS ของคุณใช้สิ่งต่างๆเช่น:

.ie9 .element {filter: none; }


0

ฉันพบวิธีที่ดีที่สุดคือ display: inline-block (ใช้ white-space: nowrap กับคอนเทนเนอร์) แต่ดูเหมือนว่าจะทำงานได้ไม่ดีกับ IE7 และต่ำกว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.