2009-07-20 17 views
109

Za pomocą przeglądarki Firefox można powiększyć całą stronę internetową, naciskając po prostu: CTRL+. To, co robi, to proporcjonalnie powiększać całą stronę (czcionki, obrazy itp.).Jak skalować całą stronę za pomocą CSS?

Jak mogę zreplikować tę samą funkcjonalność za pomocą samego CSS?

Czy istnieje coś takiego jak page-size: 150% (co zwiększyłoby całkowite części strony przez x%?)

+7

Funkcja powiększania strony w przeglądarce Firefox pojawia się we wszystkich nowoczesnych przeglądarkach - replikacja wydaje się raczej bezcelowa. – Quentin

+1

Zgadzam się z Davidem. Wydaje się, że nie ma sensu replikować tego, ponieważ przeglądarki mają teraz wbudowaną funkcję ... – user

+4

, co w rzeczywistości byłoby niezwykle przydatną funkcją na urządzenia mobilne. Wiele telefonów zwiększa teraz swój PPI bez uwzględniania różnicy (oczywiście oprócz iPhone4). –

Odpowiedz

16

Jeśli Twój CSS jest skonstruowany całkowicie wokół ex lub em jednostek, to może być to możliwe i wykonalne. Wystarczy zadeklarować font-size: 150% w swoim stylu dla body lub html. Powoduje to proporcjonalne skalowanie każdej długości. Nie można jednak przeskalować obrazów w ten sposób, o ile nie uzyskają odpowiedniego stylu.

Ale to jest bardzo duże jeśli na większości witryn, w każdym razie.

+2

Zmieniłoby to tylko rozmiar moich czcionek. CTRL + również propozycja poszerza ustalone szerokości, wysokości i rozmiary obrazów. –

+2

Wiem, ale jest tak blisko, jak można uzyskać z czystym CSS. Zmieniają się nie tylko twoje czcionki, ale wszystko, gdzie wymiary są określone jako wielokrotność rozmiaru czcionki. Czyli wszystko, gdzie używasz jednostek '%',' em' lub 'ex'. – Joey

+1

To po prostu nie jest poprawne. Przetestowałem wymienione poniżej rozwiązanie (właściwości zoom + -moz-transform) i działa ono na FF3.5, IE6 +, Safari i Opera. Skaluje zarówno obrazy, jak i tekst. Możesz skalować strony w CSS. –

150

Możesz być w stanie korzystać z CSS zoom nieruchomości - obsługiwany w IE 5.5+, Opera, Safari 4 i Chrome

Can I use: css Zoom

Firefox jest jedynym dużym przeglądarka nie obsługuje powiększyć (bugzilla item here), ale możesz użyć "proprietary" -moz-transform property in Firefox 3.5.

Więc można użyć:

div.zoomed { 
    zoom: 3; 
    -moz-transform: scale(3); 
    -moz-transform-origin: 0 0; 
} 
+1

Zastrzeżona właściwość zoom jest obsługiwana tylko przez IE. http://reference.sitepoint.com/css/zoom#compatibilitysection – Quentin

+12

David, ten odnośnik jest bardzo nieaktualny - spójrz na listę wersji przeglądarki, którą wymienia. CSS Zoom jest obsługiwany we wszystkich głównych przeglądarkach z wyjątkiem Firefoksa. I nie jest bardziej zastrzeżona niż jakikolwiek z -moz- rozszerzeń CSS. –

+3

Uwaga: Myślę, że inne proponowane rozwiązania - takie jak skalowanie oparte na em i% - są bardziej "czyste", ale niekoniecznie są praktyczne w większości układów stron internetowych, chyba że zbudowałeś je od zera. –

5

Johannes Jak mówi - nie wystarczy rep komentować bezpośrednio na jego odpowiedź - można rzeczywiście to zrobić tak długo jak „wymiary wszystkich elementów są określone jako wielokrotność rozmiaru czcionki, czyli wszystkiego, gdzie użyłeś%, em lub ex jednostek ". Chociaż myślę, że% zależy od elementu zawierającego element, a nie od rozmiaru czcionki.

A normalnie nie używałbyś tych względnych jednostek dla obrazów, ponieważ składają się one z pikseli, ale istnieje pewna sztuczka, która czyni to bardziej praktycznym.

Jeśli zdefiniujesz body{font-size: 62.5%};, wtedy 1em będzie równe 10px. O ile mi wiadomo, działa to we wszystkich głównych przeglądarkach.

Następnie można określić swoje (na przykład) obrazy kwadratowe o rozmiarach 100 pikseli za pomocą width: 10em; height: 10em; i zakładając, że skalowanie przeglądarki Firefox jest ustawione domyślnie, obrazy będą miały naturalny rozmiar.

Utwórz body{font-size: 125%}; i wszystko - w tym obrazy - będzie miało podwójny rozmiar oryginalny.

+0

Nie rozumiem, jeśli powiem, że ciało {rozmiar czcionki: 62,5%; rozmiar czcionki: 125%} - jak by to zdefiniować 1em na 10px. Czy przeglądarka może po prostu zignorować pierwszą deklarację rozmiaru czcionki, a następnie po prostu zrobić 125% = 10px? –

+0

Czy nie * przeglądarka po prostu ... –

+0

Myślę, że źle zrozumiałeś. nie robiłbyś obu naraz w tym samym czasie. 62,5 x 2 = 125 ... aby pokazać, jak możesz skalować rzeczy, dostosowując wartość. –

-3

Myślę, że nie da się tego zrobić wyłącznie za pomocą CSS - może być konieczne, abyś miał brudną rękę za pomocą Javascript, aby upewnić się, że praca została wykonana prawidłowo.

+1

Myślę, że to prawda, jeśli chcesz, aby ekran był skalowany, aby wyglądał tak samo bez względu na to, czy jest wyświetlany na ekranie iPhone'a czy na ekranie stadionu 10000 x 10000. – Morri

+0

Tak, możemy użyć javascript do ustawienia stylów CSS, które skalują całą stronę lub czcionki odpowiednie do rozmiaru okna/wyświetlacza. –

1

Jon Tan zrobił to ze swoją witryną - http://jontangerine.com/ Wszystko razem z obrazami zostało zadeklarowane w ems. Wszystko. W ten sposób osiąga się pożądany efekt. Powiększenie tekstu i powiększenie ekranu dają prawie dokładnie taki sam wynik.

1

CSS nie będzie w stanie powiększyć na żądanie, ale jeśli łączysz CSS z JS, możesz zmienić niektóre wartości, aby strona wyglądała na większą. Jednak, jak już powiedziano, ta funkcja jest obecnie standardem w nowoczesnych przeglądarkach: nie trzeba jej replikować. W rzeczywistości, powielenie go spowolni twoją stronę internetową (więcej rzeczy do załadowania, więcej JS lub CSS do parsowania lub wykonania i zastosowania, itp.)

3

Z tym kodem 1em lub 100% będzie równe 1% wysokość ciała

document.body.style.fontSize = ((window.innerHeight/100)*6.25)+"%" 
49

jest to dość późno odpowiedź, ale można użyć

body { 
    transform: scale(1.1); 
    transform-origin: 0 0; 
    // add prefixed versions too. 
} 

aby powiększyć stronę o 110%. Chociaż istnieje styl zoom, Firefox nadal nie obsługuje go ze smutkiem.

Jest to również nieco inny niż zoom. W css transform działa jak zoom obrazu, więc będzie zwiększyć swoją stronę, ale nie powodują reflow itp


Edit aktualizowane pochodzenie przekształcenia.

+1

Dziękuję za to, ale potrzebne są pewne średniki między deklaracjami. Również, gdy próbowałem, strona przesunęła się w lewo, mijając lewy margines, tak aby lewa część strony nie była już widoczna. Dodanie różnych odpowiednich deklaracji "... transform-origin: 0 0" to naprawiło. –

+0

tak, powinienem wspomnieć, że treść jest obcięta za pomocą 'transform'. Dziękuję za komentarz. –

+0

Zgadzam się z @Dave Burton: używając 'transform-origin: 0 0;' robi to, co chcę. Na przykład, aby powiększyć stronę do 150%: 'transform: scale (1.5); transform-origin: 0 0; '. Uważam, że skądinąd dobra odpowiedź @kumar_harsh powinna zostać poprawiona. –

Powiązane problemy