2011-11-18 9 views
9

Próbowałem automatycznie zmienić rozmiar obrazu za pomocą właściwości CSS max-width, ale to nie działa w IE7 i IE8. Czy istnieje sposób automatycznej zmiany rozmiaru obrazu za pomocą czystego CSS w IE7 i IE8?Jak automatycznie zmienić rozmiar obrazu w celu szybkiego projektowania z czystym css?

+0

Nanba ładny pytanie ....... – anglimasS

+0

'expression' są po prostu' javaScript' wewnątrz arkusza stylów, to won” t działa, jeśli użytkownik zmieni "ja" vaScript' down. Dlatego lepiej używać javaScript, aby zachować czystość arkusza stylów – steveyang

+0

Tak, steven, masz rację, myślę, że używanie javscript jest lepsze zamiast używania nieczystego css. – Viduthalai

Odpowiedz

2

spróbować czegoś takiego:

width: expression(document.body.clientWidth > 800 ? "800px" : "auto"); 

/* If page is wider than 800px then set width to 800px, otherwise set to auto */ 

Source (warto przyjrzeniu)

1

Większość web-deweloperów wiedzieć, że IE spadła w tyle w wyścigu o standardy i jest w stanie pokazać najnowszy i największe. Wiele właściwości CSS2 nie jest obsługiwanych. Niektóre bardziej użyteczne z nich to właściwości takie jak maksymalna szerokość, maksymalna wysokość, minimalna szerokość i na końcu minimalna wysokość. Spróbuj tego:

<html> 
<style> 
p { 
border:1px solid red; 
width:expression( 
    document.body.clientWidth > (500/12) * 
    parseInt(document.body.currentStyle.fontSize)? 
     "30em": 
     "auto"); 
} 
</style> 
<body> 
<p> 
[alot of text] 
</p> 
+0

Chociaż gardzę IE i/lub MS z różnych powodów, a jednym z nich jest to, że musiałem projektować prace dla IE6/7 :), nie sądzę, że IE10 "spadło w wyścigu o standardy". Oni są lub wrócą. – FelipeAls

2

Trzeba jednorazową pamięci podręcznej wyrażenie dla IE 6-7.

IMG { 
zoom:expression(
    function(t){ 
     t.runtimeStyle.zoom = 1; 
     var maxW = parseInt(t.currentStyle['max-width'], 10); 
     var maxH = parseInt(t.currentStyle['max-height'], 10); 
     if (t.scrollWidth > maxW && t.scrollWidth >= t.scrollHeight) { 
      t.style.width = maxW; 
     } else if (t.scrollHeight > maxH) { 
      t.style.height = maxH; 
     } 
    }(this) 
); 
} 

Przykład: http://kizu.ru/lib/ie/minmax.html JS plik źródłowy: http://kizu.ru/lib/ie/ie.js

Autor: Roman Komarov

14

Zastosowanie width: inherit; aby pracować w czystym CSS w IE8. (Patrz responsive-base.css.) Podobnie jak ten:

img { 
    width: inherit; /* This makes the next two lines work in IE8. */ 
    max-width: 100%; /* Add !important if needed. */ 
    height: auto; /* Add !important if needed. */ 
} 

Nie jestem pewien, czy to działa w IE7-proszę przetestować go i daj nam znać, jeśli testujesz IE7. Zanim zorientowali się technikę width: inherit używałem poniżej jQuery, więc można spróbować jeśli naprawdę potrzebują wsparcia w dół do IE7 i pierwszej techniki nie działa:

<!--[if lt IE 9]><script> 
jQuery(function($) { 
    $('img').each(function(){ 
     // .removeAttr supports SSVs in jQuery 1.7+ 
     $(this).removeAttr('width height'); 
    }); 
}); 
</script><![endif]--> 
+1

Uratowałeś mi życie. Dziękuję Ci! To działało idealnie w IE 8. Nie próbowałem w IE 7, ponieważ nie musimy tego wspierać. –

+0

@JeremyGlover Awesome, tak, wiedziałem, że musi być jakiś sposób - próbowałem wielu rzeczy i "szerokość: dziedziczenie" jest tym, co podstępem. – ryanve

2

nie działa IE 7 & 8 rozpoznać następujące:

#my-div img 
     { 
     max-width:100%; 
     _max-width:100%; 
     } 
0

Zastosowanie max-width: 100% z height:auto plus width:auto dla IE8:

img 
{ 
max-width: 100%; 
height: auto; 
} 

/* Media Query to filter IE8 */ 
@media \0screen 
    { 
    img 
    { 
    width: auto; 
    } 
    } 
0

Jak chcemy także wsparcie dla mediów queries..You można użyć następującego PolyFill dodać obsługę zapytań medialnych IE6-IE8

https://github.com/scottjehl/Respond (bardzo małe, po prostu 1-2kb minified i spakowane) następnie użyj następujące css:

@media screen and (min-width: 480px){ 
    img{ 
    max-width: 100%; 
    height: auto; 
    } 
} 
0

Przetestowałem go i działa na każdej przeglądarce

img{ 
    height: auto; 
    max-width: 100%; 
} 
Powiązane problemy