Duyarlı css arka plan resimleri


197

Bir web sitesi (g-floors.eu) var ve (css içeriği için bir bg-görüntü tanımladım) arka plan da duyarlı yapmak istiyorum. Ne yazık ki, aklıma gelen tek bir şey dışında bunun nasıl yapılacağı hakkında hiçbir fikrim yok ama oldukça geçici bir çözüm. Birden fazla görüntü oluşturma ve sonra görüntüleri değiştirmek için css ekran boyutunu kullanma, ancak bunu başarmak için daha pratik bir yol olup olmadığını bilmek istiyorum.

Temel olarak elde etmek istediğim şey, görüntünün (filigranlı 'G') görüntünün daha azını görüntülemeden otomatik olarak yeniden boyutlandırılmasıdır. Tabii ki mümkünse

bağlantı: g-floors.eu

Şimdiye kadar sahip olduğum kod (içerik bölümü)

#content {
  background-image: url('../images/bg.png');
  background-repeat: no-repeat;
  position: relative;
  width: 85%;
  height: 610px;
  margin-left: auto;
  margin-right: auto;
}

7
Bu bağlantıya bir bakın, aradığınız şey bu olabilir mi? css-tricks.com/perfect-full-page-background-image
Christofer Vilander

Christofer Vilander'in yayınladığı bu çözümün seçilen yanıttan daha iyi bir çözüm olduğunu hissediyorum.
CU3ED

Sadece sitenin neden Şubat 2015 itibariyle sorduğunuz bu yeniden boyutlandırma özelliğini uygulamadığını merak ediyor musunuz? Bununla ilgili bir sorun mu vardı?
LegendLength

Yanıtlar:


371

Aynı görüntünün tarayıcı penceresinin boyutuna göre ölçeklendirilmesini istiyorsanız:

background-image:url('../images/bg.png');
background-repeat:no-repeat;
background-size:contain;
background-position:center;

Genişlik, yükseklik veya kenar boşluklarını ayarlamayın.

DÜZENLEME: Genişlik, yükseklik veya kenar boşluğu ayarlamama ile ilgili önceki satır, OP'nin pencere boyutuyla ölçeklendirme hakkındaki orijinal sorusunu ifade eder. Diğer kullanım durumlarında, gerekirse genişlik / yükseklik / kenar boşlukları ayarlamak isteyebilirsiniz.


3
Genişliği otomatik olarak yeniden boyutlandırmak ve yüksekliğin sabitlenmesine izin vermek de mümkün müdür?
jochemke

3
Evet, görüntünün yüksekliğini piksel olarak ve genişliği yüzde olarak ayarlayabilirsiniz, ancak görüntü deforme olur. Hoş görünmeyecek.
Andrei Volgin

2
Bir vektör biçimi kullanıyorsanız çok daha küçük bir resim kullanabilirsiniz: en.m.wikipedia.org/wiki/Scalable_Vector_Graphics
Andrei Volgin

9
Ne? Genişliği ve kabın yüksekliğini ayarlama görüntüyü hiç göstermez.
kar

3
(1) Orijinal soru, tarayıcı penceresi boyutuna göre ölçeklendirme ile ilgilidir. (2) divKendi yüksekliklerini kendi içeriklerinden almak veya bir flexbox modelinde kullanılabilir alan almak gibi öğeler. Açık bir genişlik / yükseklik olmadan kabın hiç gösterilmeyeceğini söylemek. Açıkçası, arka plan resmiyle boş bir div görüntülemek istiyorsanız, yüksekliği ve muhtemelen genişliği ayarlamanız gerekir, ancak en boy oranı tam olarak aynı değilse, görüntünün yalnızca bir kısmını görürsünüz. görüntünün kendisi.
Andrei Volgin

70

Bu kod ile arka plan resminiz merkeze gidin ve div boyutunuz ne olursa olsun boyutu düzeltin, küçük, büyük, normal boyutlar için iyi, herkes için en iyisi, arka plan boyutumun veya div boyutumun değişebileceği projelerim için kullanıyorum

background-repeat:no-repeat;
-webkit-background-size:cover;
-moz-background-size:cover;
-o-background-size:cover;
background-size:cover;
background-position:center;

800x1280 piksel ekran boyutunda, görüntü kutunun sağ tarafında kesilir. Diğer tüm boyutlar iyi görünüyor.
Mugé

52

Bunu dene :

background-image: url(_images/bg.png);
background-repeat: no-repeat;
background-position: center center;
background-attachment: fixed;
background-size: cover;

33

CSS:

background-size: 100%;

Hile yapmalı! :)


27
Bu, tarayıcı penceresi en boy oranına göre görüntüyü tamamen deforme edecektir. Asla yapma.
Andrei Volgin

8
Sadece gelecekteki referans için, aslında bu şekilde kötü görünmeyecek. arka plan boyutu:% 100% 100 olurdu, ancak yalnızca x'i% 100 olarak bildirmek, korkunç görünmesini engeller. Test örneği: codepen.io/howlermiller/pen/syduB
Timothy Miller

1
"bozuk" görünmeyecek, ancak kaptan küçükse görüntüyü amaçlanan oranların ötesine
uzatacaktır

1
Kabul edilen cevap da öyle. OP bu sorunu sormadı, sadece güzel bir şekilde yeniden boyutlandırmanın mümkün olup olmadığını sormadı.
Timothy Miller

1
Bu çözüm sorunumu çözdü. +1
JPeG

22

İşte kullandığım duyarlı arka plan görüntüsü için sass mixin. Herhangi bir blockeleman için çalışır . Tabii ki aynı düz CSS'de çalışabilir, sadece paddingmanuel olarak hesaplamanız gerekir.

@mixin responsive-bg-image($image-width, $image-height) {
  background-size: 100%;
  height: 0;
  padding-bottom: percentage($image-height / $image-width);
  display: block;
}


.my-element {
  background: url("images/my-image.png") no-repeat;

  // substitute for your image dimensions
  @include responsive-bg-image(204, 81);
}

Örnek http://jsfiddle.net/XbEdW/1/


kemandaki kod (bir çerçeve kullanır) cevaptaki koddan farklıdır.
kar

14

Bu kolay bir =)

body {
    background-image: url(http://domains.com/photo.jpeg);
    background-position: center center;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: cover;
}

JsFiddle demosuna bir göz atın


13

İşte sahip olduğum en iyi yol.

#content   {
    background-image:url('smiley.gif');
    background-repeat:no-repeat;
    background-size:cover;
}

Kontrol edin W3schools'u

Daha Fazla Seçenek

background-size: auto|length|cover|contain|initial|inherit;

9

kullandım

#content {
  width: 100%;
  height: 500px;
  background-size: cover;
  background-position: center top;
}

gerçekten iyi çalıştı.


İhtiyacım olan kod bu! Teşekkürler :)) Ekranın% 100'ünde paralaks yapmaya çalışıyorum ama 200 piksel yükseklikte ve arka planın sadece üst kısmına ihtiyacım var ama tüm görüntünün oranlarını koruyorum.
thinklinux

8
#container {
    background-image: url("../images/layout/bg.png");
    background-repeat: no-repeat;
    background-size: 100% 100%;
    height: 100vh;
    margin: 3px auto 0;
    position: relative;
}

6

Alt resim yüksekliğine / genişliğine x 100 = dolgu altına% dolgu ekleyerek duyarlı web sitesi:

http://www.outsidethebracket.com/responsive-web-design-fluid-background-images/


Daha karmaşık yöntem:

http://voormedia.com/blog/2012/11/responsive-background-images-with-fixed-or-fluid-aspect-ratios


Ben en iyi olduğunu düşünüyorum sihirli güzel script görmek için arka plan eq Firefox Ctrl + M yeniden boyutlandırmaya çalışın:

http://www.minimit.com/demos/fullscreen-backgrounds-with-centered-content


4

Bunu kullanabilirsiniz. Test ettim ve% 100 doğru çalışıyor:

background-image:url('../images/bg.png'); 
background-repeat:no-repeat;
background-size:100%;
background-position:center;

Bu Ekran Boyutu Simülatöründe web sitenizi hızlı bir şekilde test edebilirsiniz: http://www.infobyip.com/testwebsiteresolution.php

Her değişiklik yaptığınızda önbelleğinizi temizleyin ve test etmek için Firefox'u kullanmayı tercih ederim.

Bir Resim formunu başka bir site / URL kullanmak ve beğenmemek istiyorsanız: background-image:url('../images/bg.png'); // Bu yapı, barındırılan sunucunuzdaki resmi kullanmaktır. Sonra şöyle kullanın: background-image: url(http://173.254.28.15/~brettedm/wp-content/uploads/Brett-Edmonds-Photography-14.jpg) ;

Zevk almak :)


4

En boy oranından bağımsız olarak görüntünün tamamının gösterilmesini istiyorsanız, şunu deneyin:

background-image:url('../images/bg.png');
background-repeat:no-repeat;
background-size:100% 100%;
background-position:center;

Bu, ekran boyutu ne olursa olsun görüntünün tamamını gösterir.


3
    <style> 
         * {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

#res_img {
  background: url("https://s15.postimg.org/ve2qzi01n/image_slider_1.jpg");
  width: 100%;
  height: 500px;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  background-position: center;
  border: 1px solid red;
}

@media screen and (min-width:300px) and (max-width:500px) {
  #res_img {
    width: 100%;
    height: 200px;
  }
}

    </style>

<div id="res_img">
</div>

3

Sadece iki satır kod, işe yarıyor.

#content {
  background-image: url('../images/bg.png');
  background-size: cover;
}

2

JQuery ile kare oranı için uyarlanabilir

var Height = $(window).height();
var Width = $(window).width();
var HW = Width/Height;

if(HW<1){
      $(".background").css("background-size","auto 100%");
    }
    else if(HW>1){
      $(".background").css("background-size","100% auto");
    }

2
background:url("img/content-bg.jpg") no-repeat;
background-position:center; 
background-size:cover;

veya

background-size:100%;

0

Bence, bunu yapmanın en iyi yolu şudur:

body {
    font-family: Arial,Verdana,sans-serif;
    background:url("/images/image.jpg") no-repeat fixed bottom right transparent;
}

Bu şekilde daha fazla bir şey yapmanıza gerek kalmaz ve oldukça basittir.

En azından benim için çalışıyor.

Umut ediyorum bu yardım eder.


0

Birini genişlik için diğerini yükseklik için iki ARGUMENTSbackground-size kullanmayı deneyin.

background-image:url('../images/bg.png'); 
background-repeat:no-repeat;
background-size: 100% 100%; // Here the first argument will be the width 
// and the second will be the height.
background-position:center;

0
background: url(/static/media/group3x.6bb50026.jpg);
background-size: contain;
background-repeat: no-repeat;
background-position: top;

position özelliği üst alt ve merkezi ihtiyacınıza göre hizalamak için kullanılabilir ve arka plan boyutu orta kırpma (kapak) veya tam görüntü (içerme veya% 100) için kullanılabilir

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.