ฉันจะทำให้ขนาดพื้นหลังทำงานใน IE ได้อย่างไร


188

มีวิธีใดที่รู้จักกันในการทำให้ CSS style background-sizeทำงานใน IE


1
คุณพยายามจะได้ผลอะไร
ZippyV

@ZippV ฉันมี div ที่มีความกว้างประมาณ 250 พิกเซล แต่ภาพพื้นหลังมีความกว้าง 300px ฉันต้องการให้ภาพพื้นหลังมีขนาดพอดี (ขนาดพื้นหลัง: 100%) ดังนั้นจึงไม่ถูกตัดออก จากนั้น:hoverฉันต้องการให้ขนาดพื้นหลังเปลี่ยนเป็นความกว้าง 300px เต็มรูปแบบ (ขนาดพื้นหลัง: อัตโนมัติ) เพื่อสร้างภาพลวงตาของการซูม
JD Isaacks

1
คุณสามารถใช้เอฟเฟกต์เดียวกันได้โดยใช้แท็ก img หากคุณต้องการอะไรที่อยู่ด้านบนของมันให้ใช้ดัชนี z
ZippyV

1
@John พิจารณาเปลี่ยนคำตอบที่ยอมรับถ้าการแก้ปัญหาของ Dan เหมาะสำหรับคุณ
Pekka

@ZippyV แท็ก IMG บางครั้งมีผลข้างเคียงที่ไม่จำเป็นเช่นสามารถเลือกหรือคลิกขวาได้ บางครั้งก็โอเค แต่บางครั้งก็ไม่เป็นเช่นนั้น
peterh - Reinstate Monica

คำตอบ:


312

สายไปหน่อย แต่มันก็มีประโยชน์เช่นกัน มีตัวกรอง IE สำหรับ IE 5.5+ ซึ่งคุณสามารถใช้:

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='images/logo.gif',
sizingMethod='scale');

-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='images/logo.gif',
sizingMethod='scale')";

อย่างไรก็ตามการปรับขนาดภาพทั้งหมดให้พอดีกับพื้นที่ที่จัดสรรดังนั้นหากคุณใช้สไปรต์นี่อาจทำให้เกิดปัญหา

ข้อมูลจำเพาะ: AlphaImageLoader Filter @microsoft


12
ฉันสงสัยว่าทำไม MS ไม่เพียง แต่ใช้ฟังก์ชั่นการทำงานนั้นด้วย CSS ขอบคุณมาก!
Martin Andersson

2
โปรดสนับสนุน IE เวอร์ชันใด
ᆼᆺᆼ

8
หากคุณใช้ลิงก์และปุ่มภายในองค์ประกอบที่เรากำหนดไว้ลิงก์และปุ่มเหล่านี้จะไม่ทำงาน ไม่มีใครรู้วิธีการแก้ไขปัญหานี้หรือไม่?
rubyprince

2
ฉันต้องเพิ่มposition: relative; z-index: 999การป้อนข้อมูลปุ่มภายในปุ่ม divs
rubyprince

10
วิธีการปรับขนาดนั้นไม่ได้รักษาอัตราส่วนไว้ดังนั้นมันดีที่สุดที่องค์ประกอบของคุณจะมีอัตราส่วนเดียวกันกับภาพของคุณ
Yves Van Broekhoven

45

ฉันสร้างjquery.backgroundSize.js : ปลั๊กอิน jquery 1.5K ที่สามารถใช้เป็นทางเลือก IE8 ทางเลือกสำหรับ "ปก" และ "บรรจุ" ค่า มีลักษณะที่มีการสาธิต


12
อ้างอิงจากเอกสารของ jquery.backgroundSize.js ปลั๊กอินนั้นเลิกใช้แล้วและแนะนำให้ใช้background-size-polyfillแทน
VOIDHand

เวอร์ชันที่อัปเดตไม่สามารถใช้งานbackground-position: fixedได้
Ryan Burney

@VOID ทั้งตัวกรองและตัวกรองไม่ทำงานสำหรับฉันฉันใช้ jquery.backgroundSize เพื่อความสำเร็จ
Chris Marisic

21

ขอบคุณโพสต์นี้ css เต็มรูปแบบของฉันสำหรับความสุขข้ามเบราว์เซอร์คือ:

<style>
    .backgroundpic {
        background-image: url('img/home.jpg');
        background-size: cover;
        filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
        src='img/home.jpg',
        sizingMethod='scale');
    }
</style>

มันนานมากแล้วที่ฉันทำงานเกี่ยวกับโค้ดชิ้นนี้ แต่ฉันต้องการเพิ่มความเข้ากันได้ของเบราว์เซอร์เพิ่มเติมฉันได้เพิ่มสิ่งนี้ลงใน CSS เพื่อความเข้ากันได้ของเบราว์เซอร์เพิ่มเติม:

-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;

@ Gaurav123 ลอง-webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover;
honk31

5
นี่ทำให้ ie8 ของฉันแสดงภาพพื้นหลังสองครั้ง - อันที่มีขนาดที่ปรับและอันที่สองคือพื้นหลังที่ไม่ใหญ่
arekk

ie7: ดูตกลง แต่ไม่สามารถคลิกที่ลิงก์อีกต่อไป (ทำไม ie7? เว็บไซต์ของรัฐบาลมีการอัปเดตช้ามาก)
Robbie Matthews

5

แม้ในภายหลัง แต่สิ่งนี้ก็มีประโยชน์เช่นกัน มี jQuery-backstretch-plugin ที่คุณสามารถใช้เป็น polyfill สำหรับขนาดพื้นหลัง: ปก ฉันคิดว่ามันจะต้องเป็นไปได้ (และค่อนข้างง่าย) ในการคว้าคุณสมบัติ css-background-url ด้วย jQuery และให้อาหารกับปลั๊กอิน jQuery-backstretch แนวปฏิบัติที่ดีคือการทดสอบพื้นหลังขนาดสนับสนุนด้วย modernizr และใช้ปลั๊กอินนี้เป็นทางเลือก

The-ปลั๊กอินลู่วิ่งที่ถูกกล่าวถึงในดังนั้นที่นี่ได้โดยง่าย jQuery-ลู่วิ่งปลั๊กอินสถานที่คือที่นี่

ในทำนองเดียวกันคุณสามารถสร้าง jQuery-plugin หรือสคริปต์ที่ทำให้ขนาดพื้นหลังทำงานในสถานการณ์ของคุณ (ขนาดพื้นหลัง: 100%) และใน IE8- ดังนั้นเพื่อตอบคำถามของคุณ: ใช่มีวิธี แต่ atm ไม่มีวิธีแบบ plug-and-play (เช่นคุณต้องทำการเข้ารหัสด้วยตัวเอง)

(ข้อจำกัดความรับผิดชอบ: ฉันไม่ได้ตรวจสอบ backstretch-plugin อย่างละเอียด แต่ดูเหมือนว่าจะเหมือนกับขนาดพื้นหลัง: ปก)


5

มี polyfill ที่ดีสำหรับสิ่งนั้น: louisremi / background-size-polyfill

ในการอ้างถึงเอกสาร:

อัปโหลด backgroundize.min.htc ไปยังเว็บไซต์ของคุณพร้อมกับ. htaccess ที่จะส่ง mime-type ที่ IE ต้องการ (Apache เท่านั้น - สร้างขึ้นใน nginx, node และ IIS)

ทุกที่ที่คุณใช้ขนาดพื้นหลังใน CSS ของคุณเพิ่มการอ้างอิงไปยังไฟล์นี้

.selector { 
    background-size: cover;
    /* The url is relative to the document, not to the css file! */
    /* Prefer absolute urls to avoid confusion. */
    -ms-behavior: url(/backgroundsize.min.htc);
}

polyfill นี้ใช้งานได้ ขนาดพื้นหลัง: ครอบคลุมหรือมีอยู่ใน IE8 ไม่มีความวุ่นวายไม่มีความยุ่งยาก
jimlongo

วิธีการนี้สนับสนุนทั้งและcontain coverมันมี 5.7KB ไม่เลวมากเพราะมันจะถ่ายโอนในหนึ่งแพ็คเก็ตเครือข่าย
SMMousavi


0

คุณสามารถใช้ไฟล์นี้ ( https://github.com/louisremi/background-size-polyfill “ polyfill ขนาดพื้นหลัง”) สำหรับ IE8 ที่ใช้งานง่ายมาก:

.selector {
background-size: cover;
-ms-behavior: url(/backgroundsize.min.htc);
}

0

ฉันลองด้วยสคริปต์ต่อไปนี้ -

.selector { 
background-image: url("img/image.jpg");
background-size: 100%;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-repeat: no-repeat;
}

มันใช้งานได้สำหรับฉัน!


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