Bir arka plan resmini tüm HTML öğesini kaplayacak şekilde nasıl uzatırım?


90

Tüm genişliğini ve yüksekliğini uzatmak için bir HTML öğesinin (gövde, div, vb.) Arka plan görüntüsünü almaya çalışıyorum.

Pek şansım yok. Mümkün mü yoksa arka plan görüntüsü olmanın dışında başka bir yolla mı yapmalıyım?

Mevcut css'im:

body {
    background-position: left top;
    background-image: url(_images/home.jpg);
    background-repeat: no-repeat;
}

Şimdiden teşekkürler.

Düzenleme: Cebrail'in önerisinde CSS'yi korumaya istekli değilim, bu yüzden bunun yerine sayfanın düzenini değiştiriyorum. Ama bu en iyi cevap gibi görünüyor, ben de öyle işaretliyorum.


Elbette, bunu dinamik olarak yapmak için JavaScript kullanabilirsiniz, ancak bu muhtemelen gabriel1836'nın bağlantısı tarafından önerilen CSS hacklerinden daha kötü olacaktır.
Jason Bunting

Görüntünün en boy oranını korumak için "background-size: cover;" veya "background-size: include;". Bu değerleri IE8'de
Louis-Rémi

Yanıtlar:


196
<style>
    { margin: 0; padding: 0; }

    html { 
        background: url('images/yourimage.jpg') no-repeat center center fixed; 
        -webkit-background-size: cover;
        -moz-background-size: cover;
        -o-background-size: cover;
        background-size: cover;
    }
</style>

Bu aynı zamanda html öğeleri veya css dosyalarında stil etiketleri olarak da çalışır.
Nathan

2
bu şimdiye kadarki en iyi çözüm.
AFD

1
Kapak ile% 100% 100 arasındaki fark nedir?
Pacerier

4
% 100% 100 orijinal görüntünün en boy oranını korumaz. 'kapak', içsel en boy oranını (varsa) korurken, hem genişliği hem de yüksekliği arka plan konumlandırma alanını tamamen kaplayacak şekilde en küçük boyuta ölçeklendirir. İçsel en boy oranını (varsa) korurken, hem genişliği hem de yüksekliği arka plan konumlandırma alanına sığacak şekilde en büyük boyutta görüntüyü ölçeklemek için 'kapsama'yı da kullanabilirsiniz.
Mike737

"-webkit-background-size: kapak;" geçerli bir CSS3 özelliği değil.
VoidKing


9

Kısacası şunu deneyebilirsiniz ...

<div data-role="page" style="background:url('backgrnd.png'); background-repeat: no-repeat; background-size: 100% 100%;" >

Birkaç css ve js kullandığım yerde ...

<link rel="stylesheet" href="css/jquery.mobile-1.0.1.min.css" />
<script src="js/jquery-1.7.1.min.js"></script>
<script src="js/jquery.mobile-1.0.1.min.js"></script>

Ve benim için iyi çalışıyor.


En boy oranını korumak istemeyenler için!
BillyNair

6

Bir arka plan resmini uzatmanın mümkün olduğundan emin değilim. Tüm hedef tarayıcılarınızda bunun mümkün olmadığını veya güvenilir olmadığını fark ederseniz, z-endeksi daha düşük ve konumu mutlak olarak ayarlanmış uzatılmış bir img etiketi kullanmayı deneyebilirsiniz, böylece üstte diğer içerik görünür.

Ne yaptığınızı bize bildirin.

Düzenleme: Önerdiğim temelde gabriel'in bağlantısında olan şey. Öyleyse dene :)


1
Bu tekniği en az on yıl önce çalışırken gördüm. Şimdi hala işe yaramayacağını hayal edemiyorum.
eyelidlessness

5

@PhiLho yanıtını genişletmek için, çok büyük bir resmi (veya herhangi bir boyuttaki resmi) bir sayfada ortalayabilirsiniz:

{ 
background-image: url(_images/home.jpg);
background-repeat:no-repeat;
background-position:center; 
}

Veya görüntünün arka planıyla eşleşen bir arka plan rengine sahip daha küçük bir görüntü de kullanabilirsiniz (bu tek renk ise). Bu, amaçlarınıza uygun olabilir veya olmayabilir.

{ 
background-color: green;
background-image: url(_images/home.jpg);
background-repeat:no-repeat;
background-position:center; 
}

4

Ekranı yeniden boyutlandırırken arka plan resminizi uzatmanız gerekiyorsa ve daha eski tarayıcı sürümleriyle uyumluluğa ihtiyacınız yoksa bu işi yapacaktır:

body {
    background-image: url('../images/image.jpg');
    background-repeat: no-repeat;
    background-size: cover;
}

3

Büyük bir yatay görüntünüz varsa, buradaki bu örnek arka planı dikey modda yeniden boyutlandırır, böylece üstte görüntülenir ve altta boş bırakılır:

html, body {
    margin: 0;
    padding: 0;
    min-height: 100%;
}

body {
    background-image: url('myimage.jpg');
    background-position-x: center;
    background-position-y: bottom;
    background-repeat: no-repeat;
    background-attachment: scroll;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
}

@media screen and (orientation:portrait) {
    body {
        background-position-y: top;
        -webkit-background-size: contain;
        -moz-background-size: contain;
        -o-background-size: contain;
        background-size: contain;
    }
}

3

İstenen etkiyi elde etmek için çoğunlukla kullandığım aşağıdaki kod:

body {
    background-image: url('../images/bg.jpg');
    background-repeat: no-repeat;
    background-size: 100%;
}

3
İhtiyacın varbackground-size: 100% 100%;
Sablefoste

Hangi tarayıcıyı kullandığınızı bilmiyorum, Ama anlattıklarım benim için Firefox ve Chrome'da çalışıyor.
Badar

2
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;

0

Saf CSS'de yapamazsınız. Diğer tüm bileşenlerin ardında tüm sayfayı kaplayan bir görüntünün olması muhtemelen en iyi seçeneğinizdir (yukarıda verilen çözüm bu gibi görünüyor). Her neyse, şanslar yine de berbat görünecek. Ya sayfanın genişliğini sınırlamak için çoğu ekran çözünürlüğünü kaplayacak kadar büyük bir görüntüyü (örneğin 1600x1200'e kadar, üstü daha azdır), ya da sadece döşenen bir görüntüyü kullanmayı denerdim.


0

image {

background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
  padding: 0 3em 0 3em; 
margin: -1.5em -0.5em -0.5em -1em; 
  width: absolute;
  max-width: 100%; 

2
SO'ya hoş geldiniz! Daha iyi bir cevap yazmak için, neden işe yaradığına dair biraz mantık ekleyin ve kodu çalışırken gösterin. İyi bir cevap yazma hakkında da okuyabilirsiniz .
displacedtexan

0

Gövdedeki diğer tüm öğeleri kapsayan, gövdenin doğrudan alt öğesi (örneğin bg sınıf adıyla) olacak şekilde bir div oluşturun ve bunu CSS dosyasına ekleyin:

.bg {
    background-image: url('_images/home.jpg');//Put your appropriate image URL here
    background-size: 100% 100%; //You need to put 100% twice here to stretch width and height
}

Şu bağlantıya bakın: https://www.w3schools.com/css/css_rwd_images.asp Aşağıdaki yazan kısma ilerleyin:

  1. Arka plan boyutu özelliği "% 100% 100" olarak ayarlanırsa, arka plan resmi tüm içerik alanını kaplayacak şekilde genişler

Burada, nasıl yeniden boyutlandırdığınıza bakılmaksızın ekranın veya tarayıcının boyutuna uzanan 'img_flowers.jpg' dosyasını gösterir.


-1

Benim için çalışıyor

.page-bg {
  background: url("res://background");
  background-position: center center;
  background-repeat: no-repeat;
  background-size: 100% 100%;
}
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.