Chcę, aby mój obraz tła był rozciągany i skalowany w zależności od rozmiaru rzutni przeglądarki.
Widziałem kilka pytań dotyczących przepełnienia stosu, które wykonują zadanie, na przykład Rozciągnij i skaluj tło CSS . Działa dobrze, ale chcę umieścić obraz za pomocą background
, a nie z img
tagiem.
W tym jednym img
umieszczany jest tag, a następnie za pomocą CSS hołd dla img
tagu.
width:100%; height:100%;
Działa, ale to pytanie jest nieco stare i stwierdza, że w CSS 3 zmiana rozmiaru obrazu tła będzie działać całkiem dobrze. Próbowałem tego przykładu jako pierwszego , ale mi się nie udało.
Czy istnieje dobry sposób na zrobienie tego z background-image
deklaracją?
css
background
Fábio Antunes
źródło
źródło
Odpowiedzi:
CSS3 ma ładny mały atrybut o nazwie
background-size:cover
.Powoduje to skalowanie obrazu, dzięki czemu obszar tła jest całkowicie zakryty przez obraz tła, przy zachowaniu współczynnika kształtu. Cały obszar zostanie objęty. Jednak część obrazu może nie być widoczna, jeśli szerokość / wysokość obrazu o zmienionym rozmiarze jest zbyt duża.
źródło
background-size: 100vw 100vh;
sztuczka ładnie się sprawdza.background-size: cover; -ms-background-size: cover; -o-background-size: cover; -moz-background-size: cover; -webkit-background-size: cover;
background-size: 100% auto;
stackoverflow.com/questions/41025630/…Możesz użyć właściwości CSS3, aby zrobić to całkiem nieźle. Zmienia rozmiar na współczynnik, więc nie zniekształca obrazu (chociaż przeskalowuje małe obrazy). Pamiętaj, że nie jest jeszcze zaimplementowany we wszystkich przeglądarkach.
źródło
background-image
i dołącz powyższą właściwość. Jak wspomniano, obsługa przeglądarki nie jest jeszcze dobra i istnieją jej specyficzne wersje, tj.-webkit-background-size
itp. Zobacz moduł W3C CSS3: rozmiar tła i css3.info: rozmiar tłaauto
aby zachować proporcje.Używając kodu , o którym wspomniałem ...
HTML
CSS
Daje to pożądany efekt: przewija się tylko treść, a nie tło.
Obraz tła zmienia się w rzutnię przeglądarki dla dowolnego rozmiaru ekranu. Gdy treść nie pasuje do okna przeglądarki, a użytkownik musi przewinąć stronę, obraz tła pozostaje nieruchomy w oknie podczas przewijania zawartości.
Z CSS 3 wydaje się, że byłoby to o wiele łatwiejsze.
źródło
background : url("example.png");
), a następnie użycie atrybutu cssbackground-size:100%;
pod nim, miejmy nadzieję, że przeskalujemy obraz do szerokości ekranu. To nie zadziała, prawda? Jeśli chcesz umieścić obraz tła dla ciała, atrybut tagu obrazu powinien zostać dodany do znacznika body jak<body background="example.png">
. Następnie użyj css,background-size:100%;
aby go skalować.CSS:
źródło
html, body {...}
zamiastbody {...}
.rozciąga tło, aby wypełnić cały element na obu osiach.
źródło
Następująca część CSS powinna rozciągnąć obraz we wszystkich przeglądarkach.
Robię to dynamicznie dla każdej strony. Dlatego używam PHP do generowania własnego tagu HTML dla każdej strony. Wszystkie zdjęcia znajdują się w folderze „image” i kończą się na „Bg.jpg”.
Jeśli masz tylko jeden obraz tła dla wszystkich stron, możesz usunąć
$pic
zmienną, usunąć ukośniki odwrotne, dostosować ścieżki i umieścić ten kod w pliku CSS.Zostało to przetestowane w Internet Explorerze 9, Chrome 21 i Firefox 14.
źródło
-webkit-background-size
,-moz-background-size
i tak dalej. Zobacz developer.mozilla.org/en-US/docs/CSS/... Albo idziesz za tym to dalekowzroczny w nieruchomości skrótowym jakbackground: url(img/bg-home.jpg) no-repeat center center / cover fixed;
Możesz faktycznie osiągnąć taki sam efekt jak obraz tła za pomocą znacznika img. Musisz tylko ustawić jego indeks Z na niższy niż wszystko inne, ustawić pozycję: bezwzględną i użyć przezroczystego tła dla każdego pola na pierwszym planie.
źródło
Użyj tego CSS:
źródło
Wyjaśnia to sztuczki CSS: Idealny obraz w tle całej strony
Demo: https://css-tricks.com/examples/FullPageBackgroundImage/progressive.php
Kod:
źródło
Możesz dodać tę klasę do pliku CSS.
Działa w:
background-size
, ale nie słowa kluczowe)źródło
Aby odpowiednio skalować obrazy w oparciu o rozmiar pojemnika, użyj następujących opcji:
źródło
Używam tego i działa ze wszystkimi przeglądarkami:
źródło
Dzięki!
Ale to nie działa dla Google Chrome i Safari przeglądarek (rozciąganie pracowali, ale wysokość ze zdjęć było tylko 2 mm!) , Aż ktoś powiedział mi, czego brakuje:
Zmień to dla swojej
height:100%;
linii, daje:Tuż przed tym nowo dodanego kodu mam to w moich Drupal Tendu tematów
style.css
:Następnie muszę zrobić nowy blok w Drupal ze zdjęciem, dodając
class=stretch
:Po prostu kopiowanie obrazu za pomocą edytora w tym bloku Drupala nie działa; należy zmienić edytor na niesformatowany tekst.
źródło
Zgadzam się z obrazem w absolutnej div ze 100% szerokością i wysokością. Upewnij się, że ustawiłeś 100% szerokość i wysokość ciała w CSS, a marginesy i wypełnienie ustawiono na zero. Inną kwestią, którą znajdziesz przy tej metodzie, jest to, że podczas zaznaczania tekstu obszar zaznaczenia może czasami obejmować obraz tła, co ma niefortunny efekt, że cała strona ma wybrany stan. Możesz obejść ten problem, stosując
user-select:none
regułę CSS:Ponownie, Internet Explorer jest tutaj złym facetem, ponieważ nie rozpoznaje opcji wyboru użytkownika - nawet przeglądarka Internet Explorer 10 nie obsługuje jej, więc możesz użyć JavaScript, aby zapobiec wybraniu obrazu w tle (na przykład http : //www.felgall.com/jstip35.htm ) lub stosując metodę rozciągania tła CSS 3 .
Ponadto w przypadku SEO umieściłem obraz tła na dole strony, ale jeśli załadowanie obrazu tła trwa zbyt długo (tzn. Początkowo z białym tłem), możesz przejść na górę strony.
źródło
Chciałem wyśrodkować i przeskalować obraz tła, nie rozciągając go na całą stronę, i chciałem zachować proporcje obrazu. To zadziałało dla mnie dzięki odmianom sugerowanym w innych odpowiedziach:
OBRAZ WEJŚCIOWY: ------------------------
CSS ----------------------------------
źródło
Użyłem kombinacji właściwości background-X CSS, aby uzyskać idealny skalowany obraz tła.
Dzięki temu tło zawsze pokrywa całe okno przeglądarki i pozostaje wyśrodkowane podczas skalowania.
źródło
Użyj wtyczki Backstretch . Można nawet przesunąć kilka zdjęć. Działa również w kontenerach. W ten sposób na przykład można było pokryć tylko część tła obrazem tła.
Ponieważ nawet ja mogłem go uruchomić, dowodzi, że jest to łatwa w użyciu wtyczka :).
źródło
Jeśli chcesz, aby treść była wyśrodkowana poziomo, użyj kombinacji takiej jak ta:
To będzie pięknie wyglądać.
źródło
Użyj tego CSS:
background-size: 100% 100%
źródło
Za pomocą tej
border-image : yourimage
właściwości można przeskalować obraz do granicy. Nawet jeśli podasz obraz tła, zostanie na nim narysowany obraz obramowania.Ta
border-image
właściwość jest bardzo przydatna, jeśli arkusz stylów jest zaimplementowany w miejscu, które nie obsługuje CSS 3. Jeśli używasz Google Chrome lub Firefox, polecambackground-size:cover
samą właściwość.źródło
Czy chcesz to osiągnąć za pomocą jednego obrazu? Ponieważ w rzeczywistości można zrobić coś podobnego do rozciągającego się tła przy użyciu dwóch obrazów. Na przykład obrazy PNG .
Zrobiłem to już wcześniej i nie jest to takie trudne. Poza tym myślę, że rozciąganie zaszkodziłoby jakości tła. A jeśli dodasz ogromny obraz, spowolniłby powolne komputery i przeglądarki.
źródło
Poniższe działało dla mnie.
które działało, aby pokryć całe tło w różnych wymiarach
źródło