2010-12-31 17 views
6

Mam podstawowy układ strony z nagłówkiem o szerokości 100% i stopką. Między nimi mam dużą grafikę.Automatyczne zmienianie rozmiaru obrazu na podstawie wymiarów okna przeglądarki

Chciałbym, aby grafika zmieniała się dynamicznie w zależności od wielkości okna.

Wolę nie używać lampy błyskowej i zastanawiałem się, czy istnieje prosty sposób, aby to zrobić za pomocą jquery/javascript.

Nie jestem ekspertem od jquery/javascript, więc zastanawiałem się, jak się do tego podejść, że istnieje komponent, który już to robi.

+1

Użyj procentu, który najprawdopodobniej pomoże ci, jak Babiker wspomniał o – Ramilol

Odpowiedz

1
img.thespecialimage { 
    min-height : 100%; 
    min-width : 100%; 
    max-height : 100%; 
    max-width : 100%; 
} 
+0

Gabriel, spróbuję tego. Czy wiesz, czy to będzie działać we wszystkich przeglądarkach? – Dkong

+0

W zależności od środowiska (i jeśli chcesz używać CSS3), pomocne może być prawidłowe skalowanie: http://robertnyman.com/css3/background-size/background-size.html – Xenethyl

+0

@Xenethyl powinieneś opublikować to jako Odpowiedź, ja to przegłosuję. @Dkong możesz znaleźć dziwaczność w IE5 i może trochę w IE6, ale to powinno działać wszędzie indziej. – Gabriel

4

Ustaw pojemnikach szerokość obrazu w procentach jak w width:{amount}%;, a następnie ustawić szerokość obrazka w procentach również. W ten sposób pojemnik z obrazem rozszerza się wraz ze wzrostem obrazu, a przynajmniej tak się stanie, ponieważ obraz rozszerza się wraz z ekspansją kontenera. Nie musisz koniecznie ustawiać szerokości obrazu na 100%, ale cokolwiek z tobą ustawisz, zależy od szerokości kontenera.

+2

+1 za wykorzystanie procentów – Ramilol

+0

@Ramilol - Dzięki. – Babiker

+0

Alternatywnie, ustaw 'height: ...%'. Będzie to procentowa wysokość pozycjonowanego rodzica. Jeśli ustawisz tylko szerokość lub wysokość, druga zostanie obliczona dla Ciebie na podstawie współczynnika kształtu obrazu. – Phrogz

2

Jeśli chcesz polegać na CSS3 i wyświetlać obraz jako tło w elemencie, rozważ użycie opcji background-size. Przejście tej trasy umożliwia zmianę rozmiaru obrazu przy zachowaniu jego proporcji.

Here's a quick example of background-size.

Może to oczywiście być wykonane ręcznie, jeśli monitorowanie rozmiaru okna za pomocą JS i zmieniać się odpowiednio. Jeśli jesteś zainteresowany tą trasą, daj nam znać. Zalecałbym używanie czystego rozwiązania CSS do czegoś tak banalnego, jeśli to możliwe, aby nie zrazić użytkowników z wyłączonym JS.

7
<style> 
.wrapper {width:58.536585%; /*960/1640 = .58536585*/ margin:0 auto;} 
.resize {width:100%; height:auto;} 
</style>  

<div class="wrapper"> 
    <img class="resize" src="image.jpg" /> 
</div> 

Spowoduje to zmianę rozmiaru obrazu w celu dopasowania go do pojemnika i utrzymanie proporcji na miejscu. Jeśli ustawisz pojemnik na procent, wszystko się skaluje.

szerokość wrapper = 960 podzielone przez szerokość ekranu = 1640px

Jeśli chcesz całą witrynę, aby reagować trzeba zrobić matematyki całą drogę w dół. podziel dziecko przez jego rodzica. Mam nadzieję że to pomoże!

Powiązane problemy