IE'de arka plan boyutunu nasıl çalıştırabilirim?


188

CSS stilini oluşturmanın bilinen bir yolu var mı background-sizeIE'de ?


1
Hangi etkiyi elde etmeye çalışıyorsunuz?
ZippyV

@ZippV Yaklaşık 250 piksel genişliğinde bir div var. ancak arka plan resmi 300 piksel genişliğindedir. Arka plan görüntüsünün tamamen sığmasını istiyorum (arka plan boyutu:% 100), bu yüzden kesilmiyor. Daha sonra :hoveryakınlaştırma yanılsaması yaratmak için arka plan boyutunun tam 300 piksel genişliğe (arka plan boyutu: otomatik) değişmesini istiyorum
JD Isaacks

1
Aynı efekti bir img etiketi kullanarak da elde edebilirsiniz. Üstünde bir şeye ihtiyacınız varsa, z-endeksini kullanın.
ZippyV

1
@John, Dan'ın geçici çözümü sizin için işe yaradıysa kabul edilen cevabı değiştirmeyi düşünün!
Pekka

@ZippyV IMG etiketi bazen gereksiz yan etkilere sahiptir, örneğin seçilebilir veya sağ tıklanabilir. Bunlar bazen iyi, bazen değil.
peterh - Monica

Yanıtlar:


312

Biraz geç, ama bu da yararlı olabilir. Uygulayabileceğiniz IE 5.5+ için bir IE filtresi vardır:

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

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

Ancak, bu tüm görüntüyü ayrılan alana sığacak şekilde ölçeklendirir, bu nedenle bir hareketli grafik kullanıyorsanız bu sorunlara neden olabilir.

Özellikler: AlphaImageLoader Filtre @microsoft


12
Acaba MS neden sadece CSS kullanarak bu işlevselliği uygulamadı. Çok teşekkürler!
Martin Andersson

2
Hangi IE sürümleri bunu destekliyor?
ᆼ ᆺ ᆼ

8
Bunu tanımladığımız öğenin içinde bağlantılar ve düğmeler kullanıyorsanız, bu bağlantılar ve düğmeler çalışmaz. Herkes bunu düzeltmek için bir yöntem biliyor mu?
rubyprince

2
Ben position: relative; z-index: 999böyle divs içinde giriş, a, düğme eklemek zorunda
rubyprince

10
Ölçek yöntemi bu oranı korumaz. Bu nedenle, öğenizin görüntünüzle aynı orana sahip olması en iyisidir.
Yves Van Broekhoven

45

Oluşturduğum jquery.backgroundSize.js : "kapak" ve son çare bir IE8 olarak kullanılabilecek bir 1.5K jquery eklentisi değerleri "içeren". Göz at demo .


12
Jquery.backgroundSize.js belgelerine göre, eklenti kullanımdan kaldırılmıştır ve bunun yerine arka plan boyutunda çoklu dolgu önerirler .
VOIDHand

Güncellenmiş sürüm ile çalışmaz background-position: fixed.
Ryan Burney

@VOIDHand Hem filtre hem de çoklu dolgu benim için çalışmadı, başarı için jquery.backgroundSize kullandım
Chris Marisic

21

Bu yazı sayesinde, çapraz tarayıcı mutluluğu için tam css:

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

Bu kod parçası üzerinde çalıştığımdan beri çok uzun sürdü, ancak daha fazla tarayıcı uyumluluğu için eklemek istiyorum Daha fazla tarayıcı uyumluluğu için bunu CSS'ime ekledim:

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

@ Gaurav123 dene-webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover;
honk31

5
Bu, ie8'imi arka plan resmini iki kez görüntüleyecek şekilde yapar - biri ölçeklendirilmiş boyutlarla ve ikincisi büyük boyutlu olmayan arka plan.
arekk

ie7: Tamam görünüyor, ancak artık bağlantıları tıklayamıyor. (Neden ie7? Govt sitelerinin güncellenmesi çok yavaş)
Robbie Matthews

5

Daha sonra bile, ama bu da yararlı olabilir. Arka plan boyutu için bir çoklu dolgu olarak kullanabileceğiniz jQuery-backstretch-plugin var: cover. Ben jQuery ile css-background-url özelliği kapmak ve jQuery-backstretch eklentisine beslemek mümkün (ve oldukça basit) olmalıdır. Modernizr ile arka plan boyutu desteğini test etmek ve bu eklentiyi yedek olarak kullanmak iyi bir uygulamadır.

Backstretch eklentisi burada SO'da belirtilmiştir . JQuery-backstretch-plugin-site burada .

Benzer şekilde, durumunuzda (arka plan boyutu:% 100) ve IE8'de arka plan boyutu çalışmasını sağlayan bir jQuery eklentisi veya komut dosyası yapabilirsiniz. Sorunuzu cevaplamak için: Evet bir yol var ama atm tak ve çalıştır çözümü yoktur (yani kendiniz kodlama yapmanız gerekir).

(sorumluluk reddi: Arka gerdirme eklentisini ayrıntılı olarak incelemedim ama arka plan boyutu ile aynı gibi görünüyor: kapak)


5

Bunun için iyi bir çoklu dolgu var: louisremi / background-size-polyfill

Belgeleri alıntılamak için:

IE için gereken mime türünü gönderecek .htaccess ile birlikte backgroundsize.min.htc dosyasını web sitenize yükleyin (yalnızca Apache - nginx, düğüm ve IIS'de yerleşiktir).

CSS'nizde arka plan boyutu kullandığınız her yere, bu dosyaya bir referans ekleyin.

.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);
}

Bu çoklu dolgu sadece işe yarıyor. arka plan boyutu: IE8'de kapak veya içerir. Kargaşa yok, karışıklık yok.
jimlongo

bu yaklaşım hem containve cover. Bir ağ paketinde aktarılacağı için çok kötü değil 5.7KB içerir.
SMMousavi

2

IE11 Windows 7'de bu benim için çalıştı,

background-size: 100% 100%;


0

Aşağıdaki komut dosyası ile denedim -

.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;
}

Benim için çalıştı!


hangi versiyon için?
nihiser
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.