Jak umieścić obraz w DIV z CSS?


97

Chciałbym mieć wszystkie moje obrazy w CSS (jedyny sposób, w jaki wiem, to umieścić je jako obrazy tła).

Ale problem w tym rozwiązaniu polega na tym, że nigdy nie możesz pozwolić, aby element div przyjął rozmiar obrazu.

Więc moje pytanie brzmi: jaki jest najlepszy sposób, aby mieć odpowiednik <div><img src="..." /></div>w CSS?


6
Tła nie są alternatywą: tła muszą być używane, jeśli obrazy nie są istotne dla zrozumienia treści, w przeciwnym razie powinny być tak samo regularne<img>
Fabrizio Calderan

Poza ręcznym ustaleniem rozmiaru obrazu i nadaniem tego samego elementu div, myślę, że nie możesz.
Jawad

Właściwy sposób: <img>jeśli obraz jest odpowiedni, <div>z tłem, jeśli obraz jest tylko przyjemny dla oka. Jeśli rozmiar obrazu jest zmienny i ważny, należy użyć <img>. Dlaczego chcesz używać tła?
Alessandro Pezzato

Odpowiedzi:


134

Ta odpowiedź Jaapa :

<div class="image"></div>

oraz w CSS:

div.image {
   content:url(http://placehold.it/350x150);
}​

możesz spróbować pod tym linkiem: http://jsfiddle.net/XAh2d/

to jest link do zawartości css http://css-tricks.com/css-content/

Zostało to przetestowane w Chrome, Firefox i Safari. (Jestem na Macu, więc jak ktoś ma wynik na IE to powiedz żebym to dodał)


Nie oznacza to, że divrozmiar obrazu jest taki sam, jak prosiłeś. Zobacz, co się stanie, jeśli dodasz obramowanie do div: jsfiddle.net/XAh2d/6 Nic, ponieważ div ma rozmiar 0x0 i jest ukryty za obrazem.
Alessandro Pezzato

powinieneś usunąć: przed, zredagowałem moją odpowiedź. sprawdź tutaj jsfiddle.net/2pFhc
Dany Y

2
@DanyY hej, powiedziałeś, że zaktualizowałeś swoje skrzypce, ale widzę tam tylko zielone ramki: jsfiddle.net/2pFhc dlaczego?
Sharikov Vladislav

3
To nie zadziałało dla mnie w przeglądarce Firefox 55. Potrzebujesz decyzji w przeglądarce. Działa z przed | po.
Marselo Bonagi

1
działa u mnie na FF i chrome z :: before i display: flex; => jsfiddle.net/q0vL1m7v/1
Catweazle

21

możesz to zrobić:

<div class="picture1">&nbsp;</div>

i umieść to w swoim pliku css:

div.picture1 {
   width:100px; /*width of your image*/
   height:100px; /*height of your image*/
   background-image:url('yourimage.file');
   margin:0; /* If you want no margin */
   padding:0; /*if your want to padding */
}

w przeciwnym razie użyj ich jako zwykłych


Starałem się unikać stałych rozmiarów.
Dany Y

Jeśli starasz się unikać stałych rozmiarów, najłatwiej jest użyć zwykłego imgtagu. Co próbujesz przez to osiągnąć? Może istnieje inne programowe rozwiązanie, takie jak pobranie rozmiaru obrazu przez PHP getimagesize, a następnie wyświetlenie odpowiedniego tagu stylei lub imgdla tego określonego obrazu.
JudeJitsu

5

Potraktuj to jako przykładowy kod. Zastąp wysokość i szerokość obrazu wymiarami obrazu.

<div style="background:yourimage.jpg no-repeat;height:imageheight px;width:imagewidth px">
</div>

Działa, ale pytanie dotyczyło "CSS"
Michael Biermann

Może nie powinno.
jasonleonhard

5

Z Javascript / Jquery:

  • załaduj obraz z ukrytym img
  • po załadowaniu obrazu uzyskaj szerokość i wysokość
  • dynamicznie twórz divi ustaw szerokość, wysokość i tło
  • zdejmij oryginał img

      $(document).ready(function() {
        var image = $("<img>");
        var div = $("<div>")
        image.load(function() {
          div.css({
            "width": this.width,
            "height": this.height,
            "background-image": "url(" + this.src + ")"
          });
          $("#container").append(div);
        });
        image.attr("src", "test0.png");
      });
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.