Vücudun tarayıcı yüksekliğinin% 100'üne sahip olmasını sağlayın


844

Vücudun tarayıcı yüksekliğinin% 100'üne sahip olmasını istiyorum. Bunu CSS kullanarak yapabilir miyim?

Ayarlamayı denedim height: 100%, ama çalışmıyor.

Bir sayfa için tarayıcı penceresinin tamamını dolduracak bir arka plan rengi ayarlamak istiyorum, ancak sayfada çok az içerik varsa, altta çirkin beyaz bir çubuk alıyorum.


Yanıtlar:


1091

Html öğesinin yüksekliğini de% 100 olarak ayarlamayı deneyin.

html, 
body {
    height: 100%;
}

Gövde, dinamik özelliğin nasıl ölçekleneceği konusunda üst öğesine (HTML) bakar, bu nedenle HTML öğesinin yüksekliğinin de ayarlanması gerekir.

Bununla birlikte, vücut içeriğinin muhtemelen dinamik olarak değişmesi gerekecektir. Minimum yüksekliği% 100'e ayarlamak bu hedefi gerçekleştirecektir.

html {
  height: 100%;
}
body {
  min-height: 100%;
}

6
teşekkürler, bu kısa sayfalarda beyaz çubuğu kaldırmak gibi görünüyor, ama şimdi tarayıcı penceresinin yüksekliğini aşan sayfalarda altta 20 piksel beyaz çubuk olsun: |
bodyofheat

48
tamam öğrendim! html, body {min-height: 100%;}: D
bodyofheat eklersem işe yarar

12
Not: body {min-height}sürümü kullanırsanız, .body-child{height: 100%}hile kullanamazsınız .
Salman A

14
En iyi cevap CSS3 ile, vh-> body { height: 100vh }- burada cevabı kontrol edin stackoverflow.com/a/25829844/2680216
Adriano Resende

2
@bFunc Bu krom sorunum var. html {height: 100%;} body {height: auto} işi yapın.
GBMan

217

Her iki ayar alternatif olarak htmlve bodykarşı eleman yüksekliklerine 100%, ayrıca görünüm penceresi-yüzdelik uzunlukları kullanabilirsiniz.

5.1.2. Görünüm yüzdesi uzunlukları: 'vw', 'vh', 'vmin', 'vmax' birimleri

Görünüm yüzdesi uzunlukları, ilk içeren bloğun boyutuna göredir. İlk içeren bloğun yüksekliği veya genişliği değiştirildiğinde, bunlar uygun şekilde ölçeklenir.

Bu örnekte, 100vhgörünümün yüksekliği olan - değerini kullanabilirsiniz .

Buraya Örnek

body {
  height: 100vh;
  padding: 0;
}
body {
  min-height: 100vh;
  padding: 0;
}

Bu, çoğu modern tarayıcıda desteklenir - destek burada bulunabilir .


4
Bunun çok basit olmasının yanı sıra, yeni uygulamaları benimsememiz de iyi.
Pan Wangperawong

3
@niaster kesinlikle katılıyorum. Bu yanıtı da gönderdiğimden beri tarayıcı desteği zaten gelişti :)
Josh Crozier

1
@incarnate Evet .. çok kötü değil :) OP'nin çevrimiçi olduğu son kez 7/11/11 (sorunun sorulduğu tarih ..) olduğu anlaşılıyor.
Josh Crozier

18
Eski uygulama işe yaradığında neden "yeni uygulamaları benimsemeye" başlamamız gerektiğinden emin değilim. Bunu yapmanın bir avantajı yoktur: kod daha küçük değildir ve daha iyi performans göstermez ve hala vw / vh'yi desteklemeyen tarayıcılar vardır.
cimmanon

3
Chrome kullanıcı aracısı stil sayfası varsayılan olarak gövdeye 8 piksellik bir kenar boşluğu ekler (diğer tarayıcılardan emin değilim), bu yüzden margin: 0;sağda kalıcı bir dikey kaydırma çubuğundan kaçınmak için de eklemek zorunda kaldım .
Andy Raddatz

121

Bir arka plan resminiz varsa, bunun yerine bunu ayarlamak istersiniz:

html{
  height: 100%;
}
body {
  min-height: 100%;
}

Bu, içerik görünüm penceresinden daha uzun olduğunda gövde etiketinizin büyümeye devam etmesine ve arka plan görüntüsünün aşağı kaydırmaya başladığınız sırada arka plan görüntüsünün tekrarlanmasına / kaydırılmasına devam etmesini sağlar.

IE6'yı desteklemeniz gerekiyorsa, height:100%vücut için kama yapmanın bir yolunu bulmanız gerektiğini unutmayın , IE6 yine de heightgibi davranır min-height.


Ayrıca vücudun hemen altında küresel bir flexbox olduğunda da çalışır (gövde> # flexbox-wrapper)
justnorris

2
İçerik tek bir ekrandan daha uzun sürdüğü için kabul edilen cevap büyümeyeceğinden bu doğru cevaptır.
SimplGy

Çok teşekkür ederim, Angry Dan, sitemin altındaki çirkin beyaz boşluk gitti!
Boris Burkov

Tabii ki, bu soru yöneltildiği için, görüş noktası tabanlı boyutlar bir Şey oldu. Şimdi yapabilirsinizbody{min-height: 100vh}
Angry Dan

Ayrıca body { height: auto; }, FireFox'ta kaydırma çubuklarının gösterilmemesi gerekir. bunun dışında mükemmel çalışır.
16:15 de Torxed

82

Kenar boşluklarını gövde üzerinde tutmak ve kaydırma çubukları istemiyorsanız aşağıdaki css'yi kullanın:

html { height:100%; }
body { position:absolute; top:0; bottom:0; right:0; left:0; }

Ayar body {min-height:100%} size kaydırma çubukları verecektir.

Demoyu http://jsbin.com/aCaDahEK/2/edit?html,output adresinde görebilirsiniz .


7
Sadece çalışan cevap için teşekkür ederim :) 'mutlak' işe yaradığını varsayalım
Dmitry Matveev

Kaydırma çubukları olmadan Firefox'ta benim için iyi çalışıyor, teşekkür ederim. Kabul edilen cevap vermez.
Andrew

@Andrew Gariptir, bu FireFox'ta kaydırma çubukları verir. Bununla birlikte, kabul edilen cevaba ihtiyacınız olan şey height: auto;, bodykaydırma çubuklarının şimdi ortaya çıkması için de yan tümcedir.
16:13 de Torxed

@Torxed Yine de FireFox'ta kaydırma çubukları alıyorum. Otomatik ayarı yüksekliğe eklemek benim için işe yaramadı :(
Travis Crum

Chrome 56.0.2924.87 (64 bit) sürümünde bu benim için çalışmadı.
Ryan


24

Çeşitli senaryoları test ettikten sonra, bunun en iyi çözüm olduğuna inanıyorum:

html {
    width: 100%;
    height: 100%;
    display: table;
}

body {
    width: 100%;
    display: table-cell;
}

html, body {
    margin: 0px;
    padding: 0px;
}

İçeriği taşarsa htmlve bodyöğelerinin otomatik olarak genişlemesi dinamiktir . Bunu Firefox, Chrome ve IE 11'in en son sürümünde test ettim.

Burada tam keman bakın (orada masa nefret edenler için, her zaman bir div kullanmak için değiştirebilirsiniz):

https://jsfiddle.net/71yp4rh1/9/


Bununla birlikte, burada yayınlanan cevaplarla ilgili birkaç sorun var .

html, body {
    height: 100%;
}

Yukarıdaki CSS'nin kullanılması, içerikleri burada gösterildiği gibi taşarsa html ve gövde öğesinin otomatik olarak genişlememesine neden olur:

https://jsfiddle.net/9vyy620m/4/

Kaydırırken tekrarlayan arka planı fark ettiniz mi? Bunun nedeni, alt tablonun taşması nedeniyle gövde elemanının yüksekliğinin ARTIK OLMADIĞINDIR. Neden diğer blok elemanlar gibi genişlemiyor? Emin değilim. Bence tarayıcılar bunu yanlış ele alıyor.

html {
    height: 100%;
}

body {
    min-height: 100%;
}

Yukarıda gösterildiği gibi vücutta% 100'lük bir minimum yükseklik ayarlamak başka sorunlara neden olur. Bunu yaparsanız, alt div veya tablonun burada gösterildiği gibi yüzde yükseklik alacağını belirtemezsiniz:

https://jsfiddle.net/aq74v2v7/4/

Umarım bu birine yardımcı olur. Bence tarayıcılar bunu yanlış yapıyor. Çocuklarının taşması durumunda vücudun yüksekliğinin otomatik olarak daha büyük büyümesini ayarlamasını beklerdim. Ancak,% 100 yükseklik ve% 100 genişlik kullandığınızda bu görünmüyor.


3
Bu sayfada yüksek oyu alan tüm cevapları denedim, ancak hiçbiri işe yaramadı. Bunu yaptı!
Ryan

Bu cevap kabul edilen cevap olmalıdır. Bu height: 100vhda bir çözüm değil. Üst kabınızın 100vhyüksek olarak ayarlanması 100vwve kabın kaydırma çubukları varsa sorunlara neden olabilir; bu durumda olması gerekenden daha büyük olur (ve kaydırma çubuklarının gereksiz yere görünmesine neden olabilir). height: 100vhKonteyner ekranında kendisinden daha büyük olurdu ve doküman gövdesine gereksiz dikey kaydırma yapacak yeni Android cihazlar (Android 9 ile örneğin Xiaomi Mi 9), bizim için de yol açtığı sorunları.
jtompl

21

Gerçekten kullandığım her CSS dosyasının başlangıcında kullandığım şey şudur:

html, body{
    margin: 0;

    padding: 0;

    min-width: 100%;
    width: 100%;
    max-width: 100%;

    min-height: 100%;
    height: 100%;
    max-height: 100%;
}

0 kenar boşluğu, HTML ve BODY öğelerinin tarayıcı tarafından solunda veya sağında biraz boşluk kalacak şekilde otomatik olarak konumlandırılmamasını sağlar.

0 dolgusu, HTML ve BODY öğelerinin tarayıcı varsayılanları nedeniyle içindeki her şeyi otomatik olarak aşağı veya sağa itmemesini sağlar.

Genişlik ve yükseklik değişkenleri, tarayıcının, otomatik olarak belirlenmiş bir kenar boşluğuna veya dolguya sahip olması beklentisiyle yeniden boyutlandırılmamasını sağlamak için% 100'e ayarlanmıştır; muhtemelen onlara ihtiyacım yok.

Ben ilk HTML ve CSS birkaç yıl önce yayınlanmaya başladığında yaptığı gibi bu çözüm de demektir,, ilk vermek zorunda kalmazsınız <div>a margin:-8px;bu tarayıcı penceresinin köşesinde sığacak yapmak.


Göndermeden önce, diğer tam ekran CSS projeme baktım ve kullandığım tek body{margin:0;}şeyin üzerinde çalıştığım 2 yıl boyunca iyi çalışan hiçbir şey olmadığını gördüm.

Umarım bu ayrıntılı cevap yardımcı olur ve acınızı hissediyorum. Gözlerimde, tarayıcıların vücut / html öğelerinin solunda ve bazen üst tarafında görünmez bir sınır oluşturması aptalca.


width: 100%Vücut ve html elemanlarının olası amacı nedir açıklayabilir misiniz ? Evet, anlıyorum, pratik açıdan body { margin: 0; }çoğu durumda yeterli olmalı. Sadece daha iyi anlamak istiyorum.
john cj

21

Hızlı güncelleme

html, body{
    min-height:100%;
    overflow:auto;
}

Günümüzün CSS'siyle daha iyi bir çözüm

html, body{ 
  min-height: 100vh;
  overflow: auto;
}

2
Bu mevcut cevaplardan farklı bir şey nasıl sunuyor?
cimmanon

3
Başkalarını da denedim, ama benim için çalışmadı. Bu işe yaradı, bu yüzden muhtaç birine çözüm olabilir. @cimmanon
Jayant Varshney

Bunun benim için diğer yüksek oy cevapları dışında işe yaradığını söylemeliyim. overflow: autoİşte sihri yapın. Btw Chrome kullanıyorum.
SkuraZZ

Yalnızca taşan içeriğin yüksekliği yeniden boyutlandırmasına izin veren seçenek (buldum).
Daniel Sharp

6

Buraya:

html,body{
    height:100%;
}

body{
  margin:0;
  padding:0
  background:blue;
}

4

Gerekirse JS'yi de kullanabilirsiniz

var winHeight = window.innerHeight    || 
document.documentElement.clientHeight || 
document.body.clientHeight;

var pageHeight = $('body').height();
if (pageHeight < winHeight) {
    $('.main-content,').css('min-height',winHeight)
}

Ancak bunun için jQuery kütüphanesi ve JavaScript'te yazmak gibi gerekenden daha fazla şey eklemeniz gerekirken, bu CSS'de yapılabilir.
Ön Uç Geliştirici

3

Deneyin

<html style="width:100%; height:100%; margin: 0; padding: 0;">
<body style="overflow:hidden; width:100%; height:100%; margin:0; padding:0;">

2
width: 100%Vücut ve html elemanlarının olası amacı nedir açıklayabilir misiniz ? Evet, anlıyorum, pratik açıdan body { margin: 0; }çoğu durumda yeterli olmalı. Sadece daha iyi anlamak istiyorum.
john cj

3

Lütfen bunu kontrol edin:

* {margin: 0; padding: 0;}    
html, body { width: 100%; height: 100%;}

Veya yeni yöntem Görüntüleme alanı yüksekliğini deneyin:

html, body { width: 100vw; height: 100vh;}

Viewport: Viewport'u kullandığınız ekran boyutu ne olursa olsun ekran içeriğinin tam boyuta geleceği anlamına geliyorsa.


Lütfen bu cevabı bulan diğer kişilerin anlayabilmesi için çözümünüzün bir açıklamasını ekleyin. Teşekkürler!
Shawn

width: 100%Vücut ve html elemanlarının olası amacı nedir açıklayabilir misiniz ?
john cj

1000 ila 9999 arasında sayıları olan 50 sütun ve 1000 satır içeren bir
tablom olduğunu varsayalım

3

Kendi CSS dosyanızı düzenleme ve yükseklik kurallarını kendiniz tanımlamak istemiyorsanız, en tipik CSS çerçeveleri de bu sorunu, sayfanın tamamını, diğer sorunların yanı sıra, görüntü boyutları.

Örneğin, Tacit CSS çerçevesi bu sorunu kutudan çıkarır; burada herhangi bir CSS kuralını ve sınıfını tanımlamanız gerekmez ve CSS dosyasını HTML'nize eklersiniz.


2
html {
    background: url(images/bg.jpg) no-repeat center center fixed; 
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
    min-height: 100%;
}
html body {
    min-height: 100%
}

Tüm büyük tarayıcılar için çalışır: FF, Chrome, Opera, IE9 +. Arka plan resimleri ve degradelerle çalışır. Kaydırma çubukları içerik gereksinimi olarak kullanılabilir.


2

Bunu kullanırdım

html, body{
      background: #E73;
      min-height: 100%;
      min-height: 100vh;
      overflow: auto; // <- this is needed when you resize the screen
    }
<html>
    <body>
    </body>
</html>

Tarayıcı kullanacak min-height: 100vhve bir şekilde tarayıcı biraz daha eski ise min-height: 100%, yedek olacaktır.

overflow: autoEğer vücut istiyorum ve html (örneğin bir cep boyutu) ekranını yeniden boyutlandırmak zaman kendi yüksekliğini genişletmek eğer gerekli



1

tüm cevaplar% 100 doğru ve iyi açıklanmıştır, ancak yanıt vermek için iyi ve çok basit bir şey yaptım.

burada eleman% 100 görüş portu alacaktır, ancak mobil görünüme gelince özellikle portre görünümünde (mobil) iyi görünmüyor, bu yüzden görüş portu küçüldüğünde eleman birbirini daraltacak ve üst üste gelecektir. burada biraz duyarlı hale getirmek için kod. umarım birisi bundan yardım alır.

<style>
.img_wrap{
      width:100%;
      background: #777;
}
.img_wrap img{
      display: block;  
      width: 100px;
      height: 100px;
      padding: 50px 0px;
      margin: 0 auto;
}
.img_wrap img:nth-child(2){
      padding-top: 0;
}
</style>

<div class="img_wrap">
  <img src="https://i.pinimg.com/originals/71/84/fc/7184fc63db0516a00e7d86900d957925.jpg" alt="">
  <img src="https://i.pinimg.com/originals/71/84/fc/7184fc63db0516a00e7d86900d957925.jpg" alt="">
</div>

<script>
   var windowHeight = $(window).height();
   var elementHeight = $('.img_wrap').height();

   if( elementHeight > windowHeight ){
       $('.img_wrap').css({height:elementHeight});
   }else{
       $('.img_wrap').css({height:windowHeight});
   }
</script>

işte JSfiddle Demo.


0

Burada Güncelleme

html
  {
    height:100%;
  }

body{
     min-height: 100%;
     position:absolute;
     margin:0;
     padding:0; 
}

-1

Alttaki fazladan boşluk hakkında: Sayfanız bir ASP.NET uygulaması mı? Eğer öyleyse, muhtemelen işaretlemenizde hemen hemen her şeyi sarar. Formu da şekillendirmeyi unutmayın. overflow:hidden;Forma eklemek , alttaki fazladan alanı kaldırabilir.


6
Taşma kullanmanızı önermiyorum: gerçekten iyi bir nedeniniz yoksa gizli. İşlerin neden taştığını öğrenin ve bunun yerine
taşmayacak

-1
@media all {
* {
    margin: 0;
    padding: 0;
}

html, body {
    width: 100%;
    height: 100%;
} }

width: 100%Vücut ve html elemanlarının olası amacı nedir açıklayabilir misiniz ? Evet, anlıyorum, pratik açıdan body { margin: 0; }çoğu durumda yeterli olmalı. Sadece daha iyi anlamak istiyorum.
john cj

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.