Czy można ustawić src
wartość atrybutu w CSS? Obecnie to, co robię, to:
<img src="pathTo/myImage.jpg"/>
i chcę, żeby to było coś takiego
<img class="myClass" />
.myClass {
some-src-property: url("pathTo/myImage.jpg");
Chcę to zrobić bez użycia właściwości background
lub background-image:
w CSS.
getPropertyValue("--src")
: jsfiddle.net/CustomElementsExamples/vjfpu3a2Odpowiedzi:
Zastosowanie
content:url("image.jpg")
.W pełni działające rozwiązanie ( Live Demo):
Testowane i działające:
Testowane i nie działa:
źródło
content
doimg
, zmienia swoje zachowanie. Obraz zaczyna ignorować atrybuty rozmiaru, aw przeglądarce Chrome / Safari traci opcje menu kontekstowego, takie jak „Zapisz obraz”. To dlatego, że przypisanie docontent
skutecznego nawróconychimg
z pustym zastąpiony elementem do czegoś podobnego<span><img></span>
.Istnieje rozwiązanie, które dzisiaj odkryłem (działa w IE6 +, FF, Opera, Chrome):
Jak to działa:
background-size
na przykład:background-size:cover;
który pasuje do twojego obrazu w przydzielonej przestrzeni.Działa również w przypadku obrazów wejściowych, które można kliknąć.
Zobacz prezentację na żywo: http://www.audenaerde.org/csstricks.html#imagereplacecss
Cieszyć się!
źródło
src
atrybut, jest to technika, której potrzebujesz. +1 - bardzo mi pomogłoZbiór możliwych metod ustawiania obrazów z CSS
CSS 2 „s
:after
Pseudoelement lub nowszy składni::after
z CSS 3 wraz zcontent:
właściwości:Pierwsza rekomendacja W3C: Kaskadowe arkusze stylów, poziom 2 Specyfikacja CSS2 12 maja 1998
Najnowsza rekomendacja W3C: Selektory Poziom 3 Rekomendacja W3C 29 września 2011
Ta metoda dodaje treść tuż po zawartości drzewa dokumentu elementu.
Uwaga: niektóre przeglądarki eksperymentalnie renderują
content
właściwość bezpośrednio na niektórych selektorach elementów, ignorując nawet najnowsze zalecenia W3C, które definiują:Składnia CSS2 (kompatybilna z przyszłością):
Selektor CSS3:
Domyślne renderowanie: Rozmiar oryginału (nie zależy od wyraźnej deklaracji rozmiaru)
ale nawet w momencie pisania tego tekstu zachowanie ze
<IMG>
znacznikiem wciąż nie jest zdefiniowane i chociaż można go używać w zhakowany i niezgodny ze standardami sposób , nie zaleca się używania z nim<img>
!Świetna metoda kandydacka, patrz wnioski ...
CSS1 „s
background-image:
nieruchomości:Pierwsza rekomendacja W3C: Cascading Style Sheets, poziom 1 17 grudnia 1996
Ta właściwość istnieje od początku CSS, ale mimo to zasługuje na chwalebną wzmiankę.
Domyślny rendering: Rozmiar oryginału (nie można go skalować, tylko pozycjonować)
Jednakże ,
CSS3 „s
background-size:
nieruchomość poprawiła na nim, pozwalając wiele opcji skalowania:Najnowszy status W3C: Rekomendacje dla kandydatów CSS Tła i granice Moduł Poziom 3 9 września 2014 r
Ale nawet w przypadku tej właściwości zależy to od wielkości pojemnika.
Nadal dobra metoda kandydująca, patrz wnioski ...
CSS2 „s
list-style:
nieruchomość wraz zdisplay: list-item
:Pierwsza rekomendacja W3C: Kaskadowe arkusze stylów, specyfikacja CSS2 poziomu 2, 12 maja 1998 r
list-style-image:
ustawia obraz, który będzie używany jako znacznik elementu listy (punktor)display: list-item
- Ta wartość powoduje, że element (np.<li>
W HTML) generuje pole bloku głównego i pole znacznika.Stenografia CSS: (
<list-style-type> <list-style-position> <list-style-image>
)Domyślne renderowanie: Rozmiar oryginału (nie zależy od wyraźnej deklaracji rozmiaru)
Ograniczenia:
Ta metoda jest również nieodpowiednia dla
<img>
tagu, ponieważ nie można dokonać konwersji między typami elementów, a oto ograniczony, niezgodny hack , który nie działa w Chrome.Dobra metoda kandydacka, patrz wnioski ...
CSS3 „s
border-image:
nieruchomość zalecenie :Najnowszy status W3C: Rekomendacje dla kandydatów CSS Tła i granice Moduł Poziom 3 9 września 2014 r
Tło typu metoda, która opiera się na określenie rozmiarów w dość osobliwy sposób (nie zdefiniowane dla tego przypadku użycia) i zastępczych właściwościach granicznych tej pory (np.
border: solid
):Ten przykład ilustruje kompozycję obrazu jedynie jako dekorację w prawym dolnym rogu :
Nadal nie można zmienić wykonania
<img>
„s tagsrc
(ale tutaj jest hack ), zamiast tego możemy go ozdobić:Pokaż fragment kodu
Dobra metoda kandydująca do rozważenia po rozpowszechnieniu standardów.
CSS3 „s
element()
zapis projekt pracy warto wspomnieć również:Użyjemy wyrenderowanej zawartości jednego z dwóch ukrytych obrazów, aby zmienić tło obrazu w
#img1
oparciu o Selektor ID za pomocą CSS:Uwagi: Jest eksperymentalny i działa tylko z
-moz
prefiksem w Firefoksie i tylko nadbackground
lubbackground-image
właściwościami, wymaga także określonych rozmiarów.Wnioski
Powiedziawszy to, przyjrzyjmy się tagom HTML odpowiednim do wyświetlania obrazu:
<li>
Elementem [HTML4.01 +]Idealne zastosowanie
list-style-image
zdisplay: list-item
metodą.<li>
Element może być pusta, umożliwia przepływ treści i to nawet wolno pominąć</li>
znacznik końcowy.Pokaż fragment kodu
Ograniczenia: trudne do stylu (
width:
lubfloat:
może pomóc)<figure>
Elementem [HTML5 +]Element jest prawidłowy bez treści, ale zaleca się, aby zawierał
<figcaption>
.Domyślne renderowanie: element jest wyrównany do prawej, z dopełnieniem zarówno do lewej, jak i prawej strony!
<object>
Elementem [HTML4 +]Ten
data
atrybut jest wymagany i może mieć poprawny typ MIME jako wartość!Uwaga: sztuczką w użyciu
<object>
tagu z CSS byłoby ustawienie niestandardowego prawidłowego typu MimeType,x-image/x
po którym nie ma danych (wartość nie zawiera danych po wymaganym przecinku,
)Domyślny rendering: 300 x 150 pikseli, ale rozmiar można określić w HTML lub CSS.
<SVG>
tagPotrzebuje przeglądarki obsługującej SVG i zawiera
<image>
element do obrazów rastrowych<canvas>
Elementem [HTML5 +].<input>
Element otype="image"
Ograniczenia:
które Chrome podąża i wyświetla pusty kwadrat 4x4px, gdy nie ma tekstu
Częściowe rozwiązanie, zestaw
value=" "
:Uważaj również na nadchodzący
<picture>
element w HTML5.1 , obecnie działający projekt .źródło
Użyłem pustego rozwiązania div, z tym CSS:
HTML:
źródło
Znalazłem lepszy sposób niż proponowane rozwiązania, ale rzeczywiście wykorzystuje on obraz tła. Metoda zgodna (nie można potwierdzić dla IE6) Kredyty: http://www.kryogenix.org/code/browser/lir/
CSS:
Stary obraz nie jest widoczny, a nowy jest widziany zgodnie z oczekiwaniami.
Poniższe schludne rozwiązanie działa tylko w przypadku pakietu WebKit
źródło
content
właściwość dotyczy tylko klas pseudo:before
i:after
. Ponadto, jeśli musisz obsługiwać IE7 lub wcześniejsze, myślę, żecontent
wsparcie nie istnieje. Mimo to bardzo kuszące.content
Właściwość dotyczy wszystkich elementów. http://www.w3.org/TR/css3-content/#contentOni mają rację. IMG jest elementem treści, a CSS dotyczy projektowania. Ale co powiesz na to, kiedy użyjesz niektórych elementów treści lub właściwości do celów projektowych? Mam IMG na moich stronach internetowych, które muszą się zmienić, jeśli zmienię styl (CSS).
Jest to rozwiązanie do definiowania prezentacji IMG (tak naprawdę nie obrazu) w stylu CSS.
To działa jak urok :)
źródło
background*
Oto bardzo dobre rozwiązanie -> http://css-tricks.com/replace-the-image-in-an-img-with-css/
Pro (s) i Con (s):
(+) działa z wektorem obraz, który ma względną szerokość / wysokość (coś że RobAu „s odpowiedź nie handle)
(+) jest cross przeglądarki (działa również dla IE8 +)
(+) używa tylko CSS. Nie trzeba więc modyfikować img src (lub jeśli nie masz dostępu / nie chcesz zmieniać już istniejącego atrybutu img src).
(-) przepraszam, używa atrybutu css w tle :)
źródło
Możesz zdefiniować 2 obrazy w kodzie HTML i użyć,
display: none;
aby zdecydować, który będzie widoczny.źródło
background-image
nie było opcji. Chciałemimg
tagi do celów SEO. Twoja odpowiedź jest taka prosta, elegancka i rozwiązuje wszystkie moje przeszkody! Brawo! Ponadto użytkownik nie musi pobierać obu obrazów. Ponadto mogę dodać dowolną liczbę zdjęć.Nie, nie możesz ustawić atrybutu src obrazu za pomocą CSS. Najbliżej można dostać, jak mówisz,
background
lubbackground-image
. I tak nie poleciłbym tego robić, ponieważ byłoby to trochę nielogiczne.Dostępne jest jednak rozwiązanie CSS3, jeśli przeglądarki, na które celujesz, mogą z niego korzystać. Użyj
content:url
zgodnie z opisem w odpowiedzi Paceriera . Możesz znaleźć inne rozwiązania dla różnych przeglądarek w innych odpowiedziach poniżej.źródło
Umieść kilka obrazów w kontenerze „kontrolującym” i zamiast tego zmień klasę kontenera. W CSS dodaj reguły zarządzania widocznością obrazów w zależności od klasy kontenera. To da taki sam efekt, jak zmiana
img src
właściwości pojedynczego obrazu.HTML:
CSS:
Zauważ, że wstępnie załaduje wszystkie obrazy, tak jak w CSS
backround-image
, ale w przeciwieństwie do zmianyimg src
za pomocą JS.źródło
Alternatywny sposób
źródło
Niektóre dane zostawiłbym w HTML, ale lepiej zdefiniować src w CSS:
źródło
O ile mi wiadomo, NIE MOŻESZ. CSS dotyczy stylu, a src obrazu to treść.
źródło
Powtórzenie wcześniejszego rozwiązania i podkreślenie czystego wdrożenia CSS tutaj jest moją odpowiedzią.
Rozwiązanie Pure CSS jest potrzebne w przypadkach, gdy pozyskujesz zawartość z innej witryny, a zatem nie masz kontroli nad dostarczanym HTML. W moim przypadku próbuję usunąć branding licencjonowanych treści źródłowych, aby licencjobiorca nie musiał reklamować się w firmie, od której kupuje treści. Dlatego usuwam ich logo, zachowując wszystko inne. Powinienem zauważyć, że jest to zgodne z umową mojego klienta, aby to zrobić.
źródło
Wiem, że to naprawdę stare pytanie, jednak żadne odpowiedzi nie uzasadniają, dlaczego nigdy nie można tego zrobić. Chociaż możesz „robić” to, czego szukasz, nie możesz tego robić w prawidłowy sposób. Aby mieć prawidłowy znacznik img, musi mieć atrybuty src i alt.
Tak więc każda z odpowiedzi dających sposób na zrobienie tego z tagiem img, który nie używa atrybutu src, promuje użycie nieprawidłowego kodu.
W skrócie: tego, czego szukasz, nie można legalnie wykonać w ramach struktury składni.
Źródło: W3 Validator
źródło
Albo możesz to zrobić, co znalazłem na stronie interweb.
https://robau.wordpress.com/2012/04/20/override-image-src-in-css/
Skutecznie ukrywa obraz i wypełnia tło. Och, co za hack, ale jeśli chcesz tag IMG z tekstem alternatywnym i tłem, które można skalować bez użycia JavaScript?
W projekcie, nad którym teraz pracuję, stworzyłem szablon gałązki bloku bohatera
źródło
Jeśli nie chcesz ustawiać właściwości tła, nie możesz ustawić atrybutu src obrazu przy użyciu tylko CSS.
Alternatywnie możesz użyć JavaScript, aby zrobić coś takiego.
źródło
Za pomocą CSS nie da się tego zrobić. Ale jeśli używasz JQuery, coś takiego wystarczy:
źródło
Możesz to przekonwertować za pomocą JS:
źródło
Jeśli próbujesz dynamicznie dodać obraz do przycisku na podstawie kontekstu swojego projektu, możesz użyć? odwołać się do źródła na podstawie wyniku. Tutaj używam projektu mvvm, aby moja wartość Model.Phases [0] określała, czy chcę, aby mój przycisk był zapełniany obrazami żarówki włączanej lub wyłączanej na podstawie wartości fazy światła.
Nie jestem pewien, czy to pomaga. Używam JqueryUI, Blueprint i CSS. Definicja klasy powinna umożliwiać stylizację przycisku na podstawie tego, co chcesz.
źródło
Dodałbym to: obraz tła można również ustawić za pomocą
background-position: x y;
(x poziomo i pionowo). (..) Moja sprawa, CSS:źródło
Kod HTML:
Kod CSS:
Studiowałem HTML po szkole przez kilka dni i chciałem wiedzieć, jak to zrobić. Znajdź tło, a następnie połącz 2 i 2 razem. Działa to w 100% sprawdziłem, jeśli nie, upewnij się, że wypełniłeś niezbędne rzeczy !!! Musimy określić wysokość, ponieważ bez niej nie byłoby nic !!! Zostawię tę podstawową powłokę, którą możesz dodać.
Przykład:
PS Tak, jestem użytkownikiem Linuksa;)
źródło
Każda metoda oparta na
background
lubbackground-image
prawdopodobnie zawiedzie, gdy użytkownik wydrukuje dokument z „drukowaniem kolorów i obrazów tła ” wyłączonym . Co jest niestety typową domyślną przeglądarką.Jedyną metodą przyjazną do wydruku i zgodną z wieloma przeglądarkami jest ta zaproponowana przez Bronx.
źródło
Ładowanie IMG src z definicji CSS przy użyciu nowoczesnych właściwości CSS
src
definicja na <IMG> wyzwala funkcję onerror handler: loadIMGJSFiddle: https://jsfiddle.net/CustomElementsExamples/vjfpu3a2/
Powiązane odpowiedzi SO: WCPROPS
źródło
Wystarczy użyć HTML5 :)
źródło