Web sayfasının tamamını CSS ile nasıl ölçeklendirebilirim?


153

Firefox'u kullanarak, düğmesine basarak tüm web sayfasını büyütebilirsiniz CTRL +. Bunun yaptığı, tüm web sayfasını (yazı tipleri, resimler vb.) Orantılı olarak büyütmektir.

Sadece CSS kullanarak aynı işlevselliği nasıl çoğaltabilirim?

Gibi bir şey var mı page-size: 150%(sayfa bölümlerinin tamamını% x artıracak mı?)


7
Firefox'un sayfa yakınlaştırma özelliği her modern tarayıcıda görünür - çoğaltmak oldukça anlamsız görünür.
Quentin

1
David ile aynı fikirdeyim. Tarayıcılar şimdi gün bu özelliği yerleşik olduğundan bu çoğaltmak için anlamsız görünüyor ....
kullanıcı

5
bu aslında mobil cihazlar için inanılmaz kullanışlı bir özellik olacaktır. Pek çok telefon şimdi fark yaratmadan PPI'larını artırıyor (elbette iPhone4 dışında).
DA.

38
Onu kopyalamıyor. Gömülü bir div'de sayfa / öğe önizlemesi gibi bir şey için yararlı olabilir.
RichieHH

3
Sayfa tasarımcısı, sayfası için varsayılan bir yakınlaştırma ayarlayabilmelidir. Yaptığımda büyük bir sayfam var, ancak şimdi yüksek çözünürlüklü görüntüler nedeniyle küçük: lonniebest.com/CardTrick Sayfayı yeniden yapmak yerine, varsayılan olarak yakınlaştırmak istiyorum.
Lonnie Best

Yanıtlar:


182

zoomIE 5.5+, Opera ve Safari 4 ve Chrome'da desteklenen CSS özelliğini kullanabilirsiniz

Kullanabilir miyim: css Zoom

Firefox, Zoom'u ( burada bugzilla öğesi ) desteklemeyen tek büyük tarayıcıdır, ancak Firefox 3.5'te "tescilli" -moz-transform özelliğini kullanabilirsiniz .

Böylece şunları kullanabilirsiniz:

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

1
Özel zoom özelliği yalnızca IE tarafından desteklenir. reference.sitepoint.com/css/zoom#compatibilitysection
Quentin

15
David, bu referans çok güncel değil - listelediği tarayıcı sürümlerine bakın. CSS Zoom, Firefox hariç tüm geçerli büyük tarayıcılarda desteklenir. Ve herhangi bir -moz- CSS uzantısından daha özel değil.
Jon Galloway

3
Not: Em ve% tabanlı ölçekleme gibi önerilen diğer çözümlerin daha "saf" olduğunu, ancak bu şekilde sıfırdan oluşturmadığınız sürece çoğu web düzeninde pratik olması gerekmediğini düşünüyorum.
Jon Galloway

1
Opera 10b2'yi test ettim ve desteklemiyor gibi görünüyor. Firefox her gece garip davranır (yakınlaştırılmış parça kaybolur). IE5 / 6 buggy. Yalnızca WebKit'te iyi çalışır.
Kornel

2
teşekkürler jon, büyük bilgi! firefox -moz-transform ölçeğinde gerçekten işe yarıyor, ancak kullanım durumunuza bağlı olarak, öğenin konumunu -moz-transform-origin (cfr. developer.mozilla.org/En/CSS/-moz-transform) kullanarak düzeltmeniz gerekebilir. -origin )
futtta

81

Bu oldukça geç bir cevap, ama kullanabilirsiniz

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

% 110 büyütmek için zoomStil orada olmasına rağmen , Firefox hala ne yazık ki desteklemiyor.

Ayrıca, bu sizin zoom'unuzdan biraz farklıdır. css transformO ancak sayfanızı büyütmek böylece, bir görüntü yakınlaştırma gibi değil yeniden akıtma amaç vs. işleri


Düzenle , dönüşüm kaynağını güncelledi.


1
Bunun için teşekkürler, ancak bildirimler arasında bazı noktalı virgüllere ihtiyacınız var. Ayrıca, bunu denediğimde sayfanın sol kenar boşluğunu geçecek şekilde sola kaydığı, böylece sayfanın sol kısmı artık görünmeyecek şekilde değişti. Karşılık gelen çeşitli "... transform-origin: 0 0" bildirimlerinin eklenmesi bunu düzeltti.
Dave Burton

evet, içeriğin kırpıldığından bahsetmeliydim transform. Yorum için teşekkürler.
kumarharsh

1
@Dave Burton'a katılıyorum: kullanmak transform-origin: 0 0;istediğimi yapıyor. Örneğin,% 150 sayfayı yakınlaştırmak için: transform: scale(1.5); transform-origin: 0 0;. @Kumar_harsh'ın aksi takdirde iyi cevabının düzeltilmesi gerektiğine inanıyorum.
Kai Carver

@KaiCarver eğer bu yöntemi kullanmak, her zaman kırpma neden olacak. Hangi nokta için kullanırsanız kullanın transform-origin. Yazdıklarım hangi değerin kullanılacağına sadece bir örnek . Elbette transform-origin: 0 0, kullanım
çantanıza uygunsa

@AngularM davranışı göstermek için bir kod snippet'ini paylaşabilir misiniz? Bunun başka bir nedeni olduğundan eminim.
kumarharsh

18

Eğer CSS tamamen etrafında inşa edilmiştir exveya embirimler, o zaman bu mümkün ve uygulanabilir olabilir. Sadece font-size: 150%tarzınızı beyan etmeniz bodyveyahtml . Bu, diğer tüm uzunlukların orantılı olarak ölçeklenmesine neden olmalıdır. Yine de bir stil elde etmedikçe görüntüleri bu şekilde ölçekleyemezsiniz.

Ama bu çok büyüktür eğer zaten çoğu sitede.


3
Bu sadece yazı tiplerimin boyutunu değiştirir. CTRL + ayrıca sabit genişlikleri, yükseklikleri ve görüntü boyutlarını da genişletir.

2
Biliyorum, ama saf CSS ile alabileceğiniz kadar yakın. Ayrıca yalnızca yazı tipleriniz değil, boyutların yazı tipi boyutunun katı olarak belirtildiği her şey değişir. , Kullandığınız her şeyi Anlamı %, emya exbirimleri.
Joey

1
Bu doğru değil. Aşağıda listelediğim çözümü (zoom + -moz-transform özellikleri) test ettim ve FF3.5, IE6 +, Safari ve Opera'da çalışıyor. Metinlerin yanı sıra görüntüleri de ölçeklendirir. CSS'deki sayfaları ölçeklendirebilirsiniz.
Jon Galloway

6

Johannes'in dediği gibi - doğrudan cevabına yorum yapmak için yeterli temsilci değil - bunu, tüm öğelerin "" boyutları yazı tipi boyutunun katı olarak belirtildiği sürece yapabilirsiniz.%, Em veya ex kullandığınız her şey birimleri". Her ne kadar% yazı tipi boyutuna değil, içeren öğeye dayalı olduğunu düşünüyorum.

Ve piksellerden oluştuğu için normalde görüntüler için bu göreceli birimleri kullanmazsınız, ancak bunu daha pratik hale getiren bir hile vardır.

Eğer tanımlarsanız body{font-size: 62.5%};o zaman 1em 10px eşit olacaktır. Bildiğim kadarıyla bu tüm ana tarayıcılarda çalışır.

Ardından (ör.) 100 piksel kare resimlerinizi belirtebilirsiniz width: 10em; height: 10em;ve Firefox'un ölçeklendirmesinin varsayılan olarak ayarlandığını varsayarsak, resimler doğal boyutlarında olacaktır.

Marka body{font-size: 125%};ve resimler dahil olmak üzere her şey orijinal boyutunun iki katı olacaktır.


Gövde {font-size: 62.5%; font-size: 125%} - 1em'i 10 piksel olarak nasıl tanımlar? Tarayıcı ilk yazı tipi boyutu bildirimini yoksayabilir ve sonra% 125 = 10 piksel yapabilir mi?

Sanırım yanlış anladın. ikisini de aynı anda yapmazdın. 62.5 x2 = 125 ... değeri ayarlayarak işleri nasıl ölçeklendirebileceğinizi göstermek için.
Ape-inago

Evet. 'Gövde {font-size: 125%}' i ayarlamak için Javascript kullanırsanız tüm sayfa öğelerinin boyutu iki katına çıkacak 'demeliydim.
e100

3

Bu kod ile 1em veya% 100 vücut yüksekliğinin% 1'ine eşit olacaktır

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


1

Jon Tan bunu kendi sitesiyle yaptı - http://jontangerine.com/ Görüntüler dahil her şey EMS'de ilan edildi. Her şey. İstenilen etki bu şekilde elde edilir. Metin yakınlaştırma ve ekran yakınlaştırma neredeyse aynı sonucu verir.


1

CSS isteğe bağlı olarak yakınlaştırma yapamaz, ancak CSS'yi JS ile birleştirirseniz, bir sayfanın daha büyük görünmesini sağlamak için bazı değerleri değiştirebilirsiniz. Bununla birlikte, söylendiği gibi, bu özellik günümüzde modern tarayıcılarda standarttır: çoğaltmaya gerek yoktur. Aslında, çoğaltmak web sitenizi yavaşlatır (yüklenecek daha fazla şey, ayrıştırmak veya yürütmek ve uygulamak için daha fazla JS veya CSS, vb.)


Standart bir tarayıcı özelliğidir, ancak özelliği doğrudan siteye eklemek, (1) kullanıcının seçtiği tarayıcı ve (2) tarayıcıya özel talimatlarla uzmanlığına güvenmeniz gerekmediği anlamına gelir
Ags1

1

CSS özellikleri ile tüm sayfayı ölçekler aşağıdaki kodu var. Önemli olan yatay kaydırmayı önlemek için body.style.width değerini yakınlaştırmanın tersine ayarlamaktır. Ayrıca, belgenin sol üst köşesini pencerenin sol üst köşesinde tutmak için dönüştürme başlangıç ​​noktasını sol üst kısma ayarlamanız gerekir.

        var zoom = 1;
        var width = 100;

        function bigger() {
            zoom = zoom + 0.1;
            width = 100 / zoom;
            document.body.style.transformOrigin = "left top";
            document.body.style.transform = "scale(" + zoom + ")";
            document.body.style.width = width + "%";
        }
        function smaller() {
            zoom = zoom - 0.1;
            width = 100 / zoom;
            document.body.style.transformOrigin = "left top";
            document.body.style.transform = "scale(" + zoom + ")";
            document.body.style.width = width + "%";
        }
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.