Чи можна встановити еквівалент атрибута src тегу img у CSS?


531

Чи можна встановити srcзначення атрибуту в CSS? В даний час те, що я роблю, це:

<img src="pathTo/myImage.jpg"/>

і я хочу, щоб це було щось подібне

<img class="myClass" />
.myClass {
    some-src-property: url("pathTo/myImage.jpg");

Я хочу це зробити, не використовуючи властивості backgroundабо background-image:в CSS.


1
Це, мабуть, стане можливим у CSS3: w3.org/TR/css3-values/#attribute
graphicsdivine

7
Зараз це можливо. Перевірено на Chrome / Safari / Opera: stackoverflow.com/a/11484688/632951
Pacerier

2
Але FireFox 30.0, Internet Explorer 11.0 не підтримує
Laxmikant Dange

Це рішення CSS працювало для мене (у всіх браузерах): stackoverflow.com/a/19114098/448816 , за винятком я повинен додати: 'розмір фону: 100%;'.
mikhail-t

(2020) Ви можете це зробити за допомогою JS, getPropertyValue("--src")дивіться: jsfiddle.net/CustomElementsExamples/vjfpu3a2
Danny '365CSI' Engelman

Відповіді:


880

Використовуйте content:url("image.jpg").

Повне робоче рішення ( Live Demo):

<!doctype html>

<style>
.MyClass123{
	content:url("http://imgur.com/SZ8Cm.jpg");
}
</style>

<img class="MyClass123"/>

Випробувано та працює:

  • Chrome 14.0.835.163
  • Сафарі 4.0.5
  • Опера 10.6

Випробувано та не працює:

  • FireFox 40.0.2 (спостерігаючи за інструментами мережі розробників, ви можете бачити, що URL-адреса завантажується, але зображення не відображається)
  • Internet Explorer 11.0.9600.17905 (URL-адреса ніколи не завантажується)

7
@gotqn, поки лише Chrome Safari Opera.
Pacerier

36
@EricG, різні програми мають різні вимоги. Якщо воно не відповідає вашим вимогам, не використовуйте його. Якщо це так, використовуйте його.
Pacerier

4
Не працює IE10 - це не працює. Ми закидаємо IE7 (не будемо говорити про IE6). IE8 теж, якщо потрібно. Але IE9 - IE10 ... ні.
Рольф

11
Варто додати , що навіть в браузерах , які підтримують призначення contentна imgце змінює свою поведінку. Зображення починає ігнорувати атрибути розміру, а в Chrome / Safari воно втрачає параметри контекстного меню, наприклад "Зберегти зображення". Це тому, що присвоєння contentефективно перетворює imgз порожнього заміненого елемента на щось подібне <span><img></span>.
Ілля Стрельцин

3
без належної підтримки браузера я не вважаю це правильною відповіддю, вибачте.
emachine

183

Сьогодні я знайшов рішення (працює в IE6 +, FF, Opera, Chrome):

<img src='willbehidden.png' 
 style="width:0px; height:0px; padding: 8px; background: url(newimage.png);">

Як це працює:

  • Зображення зменшується до тих пір, поки його більше не видно по ширині та висоті.
  • Потім потрібно «скинути» розмір зображення за допомогою накладки. Цей дає зображення 16х16. Звичайно, ви можете використовувати набивання ліворуч / набивання зверху для створення прямокутних зображень.
  • Нарешті, нове зображення розміщується там, використовуючи фон.
  • Якщо нове фонове зображення занадто велике або занадто мало, я рекомендую використовувати, background-sizeнаприклад: background-size:cover;який вписує ваше зображення у відведений простір.

Він також працює для подання-введення зображень, вони залишаються доступними для натискання.

Дивіться демо-версію: http://www.audenaerde.org/csstricks.html#imagereplacecss

Насолоджуйтесь!


6
@RobAnu: Це працює досить добре - jsfiddle
TimPietrusky

9
Потрібно передати вам, що це захоплююче і розумне, але порожній DIV - це прямо-прямо.
Воломіке

11
В даному випадку це так. Однак є випадки, коли ви не можете керувати HTML і все ж хочете маніпулювати IMG. Там це рішення також буде працювати
RobAu

2
Якщо зображення має srcатрибут, це потрібна техніка. +1 - мені дуже допомогли
Джеймс Лонг

3
Не рейтинг за цією відповіддю, що може бути рішенням для деяких застосувань, але цей метод має обмеження. Ви не маєте контролю над розмірами візуалізації файлу зображення. При звичайному використанні ви можете керувати шириною зображення по висоті, якщо файл вказаний у джерелі. Але це в принципі нічим не відрізняється від діва з фоновим зображенням, де, якщо ваш div більше, ніж зображення, вам не пощастить.
TARKUS

113

Колекція можливих методів встановлення зображень із CSS


CSS2 «s:after псевдо-елемент або новий синтаксис ::afterз CSS3 разом з content:майном:

Перша рекомендація W3C: Каскадні таблиці стилів, рівень 2 Специфікація CSS2 12 травня 1998 р.
Остання рекомендація W3C: Вибірці 3 рівень Рекомендація W3C 29 вересня 2011 р.

Цей метод додає вміст відразу після вмісту дерева елемента документа.

Примітка: деякі браузери експериментально надають contentвластивість безпосередньо над деякими селекторами елементів, не зважаючи навіть на останню рекомендацію W3C, яка визначає:

Застосовується до: :beforeта :afterпсевдоелементів

Синтаксис CSS2 (сумісний вперед):

.myClass:after {
  content: url("somepicture.jpg");
}

CSS3 Selector:

.myClass::after {
  content: url("somepicture.jpg");
}

Відображення за замовчуванням: Розмір оригіналу (не залежить від явного оголошення розміру)

Ця специфікація не повністю визначає взаємодію: до та: після із заміненими елементами (наприклад, IMG в HTML). Це буде визначено більш детально в майбутній специфікації.

але навіть під час написання цього тексту поведінка з <IMG>тегом все ще не визначена, і хоча вона може використовуватися в зламаному та нестандартному вигляді , використання з <img>не рекомендується !

Чудовий метод кандидата, дивіться висновки ...



CSS1 «S background-image:власності:

Перша рекомендація W3C: Каскадні таблиці стилів, рівень 1 17 грудня 1996 року

Це властивість задає фонове зображення елемента. Під час встановлення фонового зображення слід також встановити колір тла, який буде використовуватися, коли зображення недоступне. Коли зображення доступне, воно накладається поверх кольору фону.

Цей об'єкт існує з початку CSS, але він заслуговує на славну згадку.

Відображення за замовчуванням: Розмір оригіналу (не можна масштабувати, розміщувати лише)

Однак ,

CSS3 «sbackground-size: власності на нього покращився, дозволяючи кілька варіантів масштабування:

Останній статус W3C: Рекомендація щодо кандидата CSS Фони та межі модуля 3 рівень 9 вересня 2014 року

[length> | <percentage> | auto ]{1,2} | cover | contain

Але навіть з цією властивістю це залежить від розміру контейнера.

Ще хороший метод кандидата, дивіться висновки ...



list-style:Власність CSS2 , а такожdisplay: list-item :

Перша рекомендація W3C: Каскадні таблиці стилів, рівень 2 Специфікація CSS2 12 травня 1998 року

list-style-image: властивість встановлює зображення, яке буде використовуватися як маркер елемента списку (куля)

Властивості списку описують основне візуальне форматування списків: вони дозволяють аркушам стилів визначати тип маркера ( зображення , гліф або число)

display: list-item- Це значення призводить до того, що елемент (наприклад, <li>у HTML) генерує головне блок-поле та поле маркера.

.myClass {
    display: list-item;
    list-style-position: inside;
    list-style-image: url("someimage.jpg");
}

Скорочений CSS: ( <list-style-type> <list-style-position> <list-style-image>)

.myClass {
    display: list-item;
    list-style: square inside url("someimage.jpg");
}

Відображення за замовчуванням: Розмір оригіналу (не залежить від явного оголошення розміру)

Обмеження:

  • Спадкування передасть значення "стилю списку" з елементів OL та UL в елементи LI. Це рекомендований спосіб вказати інформацію про стиль списку.

  • Вони не дозволяють авторам вказувати виразний стиль (кольори, шрифти, вирівнювання тощо) для маркера списку або коригувати його положення

Цей метод також не підходить для <img>тегу, оскільки перетворення не може бути здійснено між типами елементів, і ось обмежений невідповідний хак , який не працює в Chrome.

Хороший метод кандидата, дивіться висновки ...



CSS3 «S border-image:властивість рекомендації :

Останній статус W3C: Рекомендація щодо кандидата CSS Фони та межі модуля 3 рівень 9 вересня 2014 року

Фон типу метод , який заснований на визначення розмірів в досить своєрідній манері (не визначена для даного випадку використання) і резервного властивості кордонів до сих пір (наприклад. border: solid):

Зауважте, що, хоча вони ніколи не викликають механізм прокрутки, вихідні зображення все ще можуть бути вирізані предком або вікном перегляду.

Цей приклад ілюструє зображення, складене лише як прикраса в нижньому правому куті :

.myClass {
    border: solid;
    border-width: 0 480px 320px 0;
    border-image: url("http://i.imgur.com/uKnMvyp.jpg") 0 100% 100% 0;
}

Застосовується до: Усі елементи, крім внутрішніх елементів таблиці, коли border-collapse: collapse

Тим НЕ менше він не може змінити давав <img>тег «S src(але ось хак ), замість цього ми можемо прикрасити його:

Хороший метод кандидата, який слід врахувати після поширення стандартів.



CSS3 «сек element()нотація робочий проект варто згадати також:

Примітка. element()Функція відтворює лише зовнішній вигляд посилального елемента, а не власне вміст та його структуру.

<div id="img1"></div>

<img id="pic1" src="http://i.imgur.com/uKnMvyp.jpg" class="hide" alt="wolf">
<img id="pic2" src="http://i.imgur.com/TOUfCfL.jpg" class="hide" alt="cat">

Ми будемо використовувати відображений вміст одного з двох прихованих зображень для зміни фону зображення на #img1основі селектора ідентифікаторів за допомогою CSS:

#img1 {
    width: 480px; 
    height: 320px; 
    background: -moz-element(#pic1) no-repeat;
    background-size: 100% 100%;
}

.hide {display: none}

Примітки. Це експериментально і працює лише з -mozпрефіксом у Firefox і лише над backgroundабо background-imageвластивостями, а також потрібні вказані розміри.


Висновки

  1. Будь-яка смислова зміст або структурна інформація йде в HTML.
  2. Інформація про стилі та презентацію надходить у CSS.
  3. Для цілей SEO не ховайтесь змістовні зображення в CSS.
  4. Фонова графіка зазвичай вимикається під час друку.
  5. Користувацькі теги можна використовувати та стилізувати з CSS, але примітивні версії Internet Explorer не розуміють] ( IE не стилює теги HTML5 (з shiv) ) без вказівки Javascript або CSS .
  6. SPA-програми (Single Page Applications) за дизайном зазвичай містять зображення у фоновому режимі

Сказавши це, давайте вивчимо теги HTML, придатні для відображення зображення:

The <li>Елемент [HTML4.01 +]

Ідеальний футляр для list-style-imageсdisplay: list-item методом.

<li>Елемент, може бути порожнім, дозволяє зміст потоку , і це навіть дозволяється опускати </li>кінцевий тег.

Обмеження: важко стильно ( width:або float:може допомогти)

<figure>Елемент [HTML5 +]

Фігурний елемент являє собою деякий вміст потоку, необов'язково з підписом, який є самостійним (як повне речення) і, як правило, посилається як одна одиниця від основного потоку документа.

Елемент дійсний без вмісту, але рекомендується містити <figcaption>.

Таким чином, елемент може використовуватися для анотування ілюстрацій, діаграм, фотографій , списків кодів тощо.

Відображення за замовчуванням: елемент вирівнюється праворуч, з лівою та правою накладками!

<object>Елемент [HTML4 +]

Для включення зображень автори можуть використовувати елемент OBJECT або елемент IMG.

dataАтрибут є обов'язковим і може мати дійсний тип MIME в якості значення!

<object data="data:x-image/x,"></object>

Примітка. Трюком у використанні <object>тегу від CSS було б встановлення спеціального дійсного MimeType з x-image/xподальшим відсутністю даних (значення не має даних після потрібної коми ,)

Відображення за замовчуванням: 300 х 150 пікселів, але розмір можна вказати або в HTML, або в CSS.

<SVG>тег

Потрібен браузер, що підтримує SVG, і має <image>елемент для растрових зображень

<canvas>Елемент [HTML5 +].

В widthатрибутах по замовчуванням 300 , і heightатрибут по замовчуванням 150 .

The <input>елемент зtype="image"

Обмеження:

... очікується, що елемент з’явиться як кнопковий, що вказує на те, що елемент є кнопкою.

який Chrome дотримується і видає порожній квадрат 4х4 пікселів, коли немає тексту

Часткове рішення, встановити value=" ":

<input type="image" id="img1" value=" ">

Також слідкуйте за майбутнім <picture>елементом HTML5.1 , який зараз є робочим проектом .


(2020) Використовуйте властивості CSS: stackoverflow.com/questions/2182716 / ...
Денні 365CSI 'Engelman

Чудова відповідь, але показує повний провал Інтернету як платформи для забезпечення основних примітивів.
serraosays

26

Я використав порожнє рішення Div, за допомогою цього CSS:

#throbber {
    background-image: url(/Content/pictures/ajax-loader.gif);
    background-repeat: no-repeat;
    width: 48px;
    height: 48px;
    min-width: 48px;
    min-height: 48px;
}

HTML:

<div id="throbber"></div>

Що робити, якщо я хочу відобразити його в рядку? Додавання "display: inline" надає моєму розміру Div 0x0 ...
elsurudo

1
@elsurudo Використовуйте дисплей: вбудований блок, якщо ви хочете встановити ширину та висоту на вбудованому елементі
Ерін Драммонд,

1
Верхня відповідь не працює з Firefox, тому мені більше подобається ваша відповідь! І це ясно і не має хаків css.
Сергій Богданов

Якщо вам потрібно відобразити більше одного зображення, майте на увазі, що поле id технічно вважається унікальним, тому використання селектора класів CSS замість ідентифікатора є ідеальним.
mix3d

Зображення цього типу не надрукуються належним чином, якщо у налаштуваннях друку вимкнена фонова графіка.
posfan12

14

Я знайшов кращий спосіб, ніж пропоновані рішення, але він справді використовує фонове зображення. Сумісний метод (не вдається підтвердити для IE6) Кредити: http://www.kryogenix.org/code/browser/lir/

<img src="pathTo/myImage.jpg"/>

CSS:

img[src*="pathTo/myImage.jpg"] {

    background-image: url("mynewimg.jpg"); /* lets say 20x20 */
    width: 20px;

    display:inline-block;
    padding: 20px 0 0 0;
    height: 0px !important;

    /* for IE 5.5's bad box model */
    height /**/:20px;
}

Старе зображення не бачиться, а нове бачиться так, як очікувалося.


Наведене нижче акуратне рішення працює лише для вебкітів

img[src*="pathTo/myImage.jpg"] {

    /* note :) */
    content:'';
    display:inline-block;

    width: 20px;
    height: 20px;
    background-image: url("mynewimg.jpg"); /* lets say 20x20 */

}

Це акуратний трюк, але чи дійсно вони відповідають стандартам? Сторінка W3C говорить contentвластивість застосовується тільки до :beforeі :afterпсевдо класів. Крім того, якщо вам доведеться підтримувати IE7 або раніше, я вважаю, що contentпідтримка не існує. Все-таки дуже спокусливо.
jatrim

Ви маєте рацію, я щойно знайшов більш сумісний метод. Оновлення моєї публікації! А тепер проголосуйте за мене;) Ха-ха.
EricG

Оновлений підхід, безумовно, кращий, ніж той, що спирається на вміст. Дякуємо, що включили оригінальне посилання. Це було проникливим. Ви зауважите, що відповідь @ RobAu насправді дуже схожа на вашу оновлену версію.
jatrim

1
@jatrim contentВластивість стосується всіх елементів. http://www.w3.org/TR/css3-content/#content
XP1

13

Вони мають рацію. IMG - це елемент вмісту, а CSS - про дизайн. Але як щодо того, коли ви використовуєте деякі елементи вмісту або властивості для цілей дизайну? Я маю IMG на своїх веб-сторінках, які повинні змінюватися, якщо я зміню стиль (CSS).

Ну це рішення для визначення презентації IMG (насправді не зображення) у стилі CSS.

  1. створити 1х1 прозорий gif або png.
  2. Призначте цьому зображенню проспект "src" IMG.
  3. Визначте остаточну презентацію за допомогою "background-image" у стилі CSS.

Це працює як шарм :)


5
-1 Хоча ваша відповідь непогана, він конкретно зазначає, що не хоче використовувати їїbackground*
fresskoma

1
це трюк ... на мою думку, трюки будуть змінені браузерами ... і день вранці ви побачите пекло на своєму веб-сайті: D :)))
Махді Джазіні

11

Ось дуже вдале рішення -> http://css-tricks.com/replace-the-image-in-an-img-with-css/

Про (и) та Con (s):
(+) працює з вектором зображення , які мають відносну ширину / висоту (річ , що RobAu «s відповідь і не виконує жодних)
(+) є крос - браузер (працює також для IE8 +)
(+) він використовує тільки CSS. Тому не потрібно змінювати img src (або якщо у вас немає доступу / не хочете змінювати вже існуючий атрибут img src).
(-) вибачте, він використовує атрибут background css :)


Тепер це правильне рішення, працює для мене у всіх браузерах, дякую !! Також варто зазначити, що мені довелося додати: розмір фону: 100%; до класу css в рішенні вище, щоб зображення заміни відображалося належним чином.
mikhail-t

9

Ви можете визначити 2 зображення у вашому HTML-коді та використовувати, display: none;щоб визначити, яке з них буде видимим.


Я шукав далеко і широко рішення, яке було чутливим до Інтернету, але також підтримувало SEO. Я хотів використовувати медіа-запити в CSS, щоб змінити своє зображення залежно від використовуваного пристрою, але я хотів зберегти свій вміст у HTML. Оголошення джерел у CSS - це маршрут, який я не хотів взяти, тому background-imageне був варіант. Я хотів imgтеги для SEO. Ваша відповідь така проста, елегантна і вирішує всі мої перешкоди! браво! Також користувачеві не потрібно завантажувати обидва зображення. Крім того, я можу додати будь-яку кількість зображень.
Ксав'є

Кожна відповідь, яку я прочитав до цього часу, змусить мене або оголосити свої джерела в моєму таблицю стилів, або використовувати вбудований CSS у своїй розмітці. Жоден із яких я не був задоволений. Брудний код!
Ксав'є

7

Ні, ви не можете встановити атрибут src зображення за допомогою CSS. Найближчий ви можете отримати, як ви кажете, backgroundабо background-image. Я б не рекомендував робити це все одно, як це було б дещо нелогічно.

Однак вам доступне рішення CSS3, якщо веб-переглядачі, на які ви орієнтовані, зможете ним користуватися. Використовуйте, content:url як описано у відповіді Пачер'є . Ви можете знайти інші крос-браузерні рішення в інших відповідях нижче.


1
чому голосування "за"? ця відповідь точніша за прийняту відповідь.
harsimranb

1
Найкраща відповідь поки: ні, ви не можете зробити це з CSS.
Мілче Патерн

4

Помістіть кілька зображень у контейнер, що управляє, та замініть клас контейнера. У CSS додайте правила для управління видимістю зображень залежно від класу контейнера. Це призведе до того ж ефекту, що і зміна img srcвластивості одного зображення.

HTML:

<span id="light" class="red">
    <img class="red" src="red.png" />
    <img class="yellow" src="yellow.png" />
    <img class="green" src="green.png" />
</span>

CSS:

#light         { ... }
#light         *        { display: none; }     // all images are hidden
#light.red     .red     { display: inline; }   // show red image when #light is red
#light.yellow  .yellow  { display: inline; }   // .. or yellow
#light.green   .green   { display: inline; }   // .. or green

Зауважте, що воно буде попередньо завантажувати всі зображення, як у CSS backround-image, але на відміну від зміни img srcчерез JS.


3

Альтернативний спосіб

.myClass {
background: url('/img/loading_big.gif');
}
<div class="myClass"></div>

3

Деякі дані я залишу в HTML, але краще визначити src у CSS:

<img alt="Test Alt text" title="Title text" class="logo">

.logo {
    content:url('../images/logo.png');
}

2

Наскільки мені відомо, ВИ НЕ МОЖЕТЕ. CSS - це стиль, а src зображення - це вміст.


3
У наш час зображення часто зустрічаються просто для стилізації сторінки.
Лоренцо Полідорі

2
Мається на увазі, що може бути різниця між зображеннями, які використовуються як рамки, фони тощо, та тими, які насправді є частиною вмісту сторінки, тобто. діаграми, фотографії статей тощо
Rhys van der Waerden

1
ВИ МОЖЕТЕ, і є звичайні, дійсні випадки, коли ви цього хотіли б.
ryan0

2

Повторити попереднє рішення та підкреслити чисту реалізацію CSS тут - моя відповідь.

Чисте рішення CSS потрібне у випадках, коли ви шукаєте вміст з іншого сайту, і, таким чином, ви не маєте контролю над HTML, який постачається. У моєму випадку я намагаюся видалити брендування ліцензованого вихідного вмісту, щоб ліцензіат не мав реклами для компанії, у якої він купує контент. Тому я знімаю їх логотип, зберігаючи все інше. Слід зазначити, що це передбачено договором мого клієнта.

{ /* image size is 204x30 */
     width:0;
     height:0;
     padding-left:102px;
     padding-right:102px;
     padding-top:15px;
     padding-bottom:15px;
     background-image:url(http://sthstest/Style%20Library/StThomas/images/rhn_nav_logo2.gif);
}

2

Я знаю, що це дуже старе питання, однак жоден відповідь не дає належних міркувань, чому цього ніколи не можна зробити. Хоча ти можеш "робити" те, що шукаєш, ти не можеш це зробити належним чином. Щоб мати дійсний тег img, він повинен бути мати атрибути src та alt.

Тож будь-яка відповідь, яка дає спосіб це зробити за допомогою тегу img, який не використовує атрибут src, сприяє використанню недійсного коду.

Коротше кажучи: те, що ви шукаєте, не може бути законно виконано в структурі синтаксису.

Джерело: W3 Validator


2

Або ти міг би зробити це, що я виявив на інтерфейсі.

https://robau.wordpress.com/2012/04/20/override-image-src-in-css/

<img src="linkToImage.jpg" class="egg">
.egg {
  width: 100%;
  height: 0;
  padding: 0 0 200px 0;
  background-image: url(linkToImage.jpg);
  background-size: cover;
}

Настільки ефективно приховуючи зображення і забиваючи фон. О, який злом, але якщо ви хочете тег IMG з текстом alt та фоном, який можна масштабувати без використання JavaScript?

У проекті, над яким я зараз працюю, я створив шаблон з гілочки блоку героїв

<div class="hero">
  <img class="image" src="{{ bgImageSrc }}"
       alt="{{ altText }}" style="background-image: url({{ bgImageSrc }});">
</div>

1

Якщо ви не хочете встановлювати властивість фону, ви не можете встановити атрибут src зображення, використовуючи лише CSS.

Крім того, ви можете використовувати JavaScript, щоб зробити таке.


1

Використовуючи CSS, це неможливо зробити. Але, якщо ви використовуєте JQuery, щось подібне зробить трюк:

$("img.myClass").attr("src", "http://somwhere");

насправді, можна)) дивіться відповідь на це ж запитання тут: stackoverflow.com/questions/2182716/…
mikhail-t

1

Ви можете конвертувати його за допомогою JS:

$('.image-class').each(function(){
    var processing = $(this).attr('src');
    $(this).parent().css({'background-image':'url('+processing+')'});
    $(this).hide();
});

0

Якщо ви намагаєтесь додати зображення у кнопці динамічно, залежно від контексту проекту, можете скористатися? взяти для посилання на джерело на основі результату. Тут я використовую mvvm design, щоб дозволити моєму Model.Phases [0] визначати, чи хочу я, щоб моя кнопка була заповнена зображеннями лампочки або вимикалася на основі значення світлової фази.

Не впевнений, чи допоможе це. Я використовую JqueryUI, Blueprint та CSS. Визначення класу повинно дозволяти вам стилізувати кнопку, залежно від того, що ви хочете.

    <button>                           
  <img class="@(Model.Phases[0] ? "light-on": "light-off")" src="@(Model.Phases[0] ? "~/Images/LightBulbOn.png" : "~/Images/LightBulbOff.png")"/>                             
  <img class="@(Model.Phases[0] ? "light-on": "light-off")" src="@(Model.Phases[0] ? "~/Images/LightBulbOn.png" : "~/Images/LightBulbOff.png")"/>   
  <img class="@(Model.Phases[0] ? "light-on": "light-off")" src="@(Model.Phases[0] ? "~/Images/LightBulbOn.png" : "~/Images/LightBulbOff.png")"/>     


0

Я додам це: фонове зображення також може бути розміщене з background-position: x y;(x горизонтальна y вертикальна). (..) Мій випадок, CSS:

(..) 
#header {
  height: 100px; 
  background-image: url(http://.../head6.jpg); 
  background-position: center; 
  background-repeat: no-repeat; 
  background-color: grey; 
  (..)
} 
(...)

0

Код HTMl:

<!DOCTYPE html>
<html>
     <head>
         <link type="text/css" rel="stylesheet" href="css destination" />
     </head>
     <body>
<!-- click-able pic with link -->
           <a href="site you want"> 
<!-- Take the off if you don't want click-able link -->
                <h1 id(or class)="nameOfClassorid">
                     <span>Text that is not important</span>
                </h1>
           </a>
      </body>
 </html>

Код Css:

span {
     display: none;
}
h1 id or class {
     height: of pic;
     width: of pic;
/* Only flaw (so far) read bottom */
     background-image:url(/* "image destination" */);
}
h1 id or class:hover {
/* Now the awesome part */
     background-image:url(/* 'new background!!!' */);
}

Я вивчав html після школи кілька днів і хотів знати, як це зробити. Виявив фон, а потім поклав 2 і 2 разом. Це працює на 100%. Я перевірив, якщо не переконайтеся, що ви заповнили необхідні речі !!! Нам потрібно вказати висоту, бо без неї нічого не було б !!! Я залишу цю основну оболонку, яку ви можете доповнити.

Приклад:

 <!DOCTYPE html>
 <html>
     <head>
         <link type="text/css" rel="stylesheet" href="style.css" />
     </head>
     <body>
           <a href="http:localhost"> 
                <h1>
                     <span>Text that is not important</span>
                </h1>
           </a>
     </body>
 </html>
span {
     display: none;
}
h1 {
     height: 100px;
     width: 100px;
     background-image:url("http://linuxlog.org/wp-content/uploads/2011/01/Ubuntu-Desktop-@-2011-01-11-191526-300x225.png");
}

h1:hover {
     height: 300px;
     width: 300px;
     background-image:url("http://cdn.css-tricks.com/images/ads/wufoo-600x600-red.png");
}

PS Так я користувач Linux;)


0

Будь-який метод, заснований на backgroundабо background-image, ймовірно, не вдасться, коли користувач роздруковує документ із вимкненим "друкувати кольори та зображення фону " . На жаль, типовий браузер за замовчуванням.

Єдиний метод друку та сумісний з переглядачем веб-переглядачів тут є метод, запропонований Bronx.


0

Завантаження IMG src з визначення CSS, використовуючи сучасні властивості CSS

<style>
  body {
    --imgid: 1025; /* optional default img */
  }

  .shoes {
    --imgid: 21;
  }

  .bridge {
    --imgid: 84;
  }

  img {
    --src: "//i.picsum.photos/id/"var(--imgid)"/180/180.jpg"
  }

</style>
<script>
  function loadIMG(img) {
    img.src = getComputedStyle(img)	// compute style for img
      .getPropertyValue("--src")		// get css property
      .replace(/[" ]/g, "");				// strip quotes and space
  }

</script>
<img src onerror=loadIMG(this) class=bridge>
<img src onerror=loadIMG(this) class=shoes>
<img src onerror=loadIMG(this)>

  • порожнє srcвизначення на <IMG> запускає обробник onerror: loadIMG
  • Функція loadIMG обчислює значення CSS
  • роздягає всіх незаконних персонажів
  • встановлює IMG.src
  • коли CSS змінюється, зображення НЕ оновлюється! Вам доведеться зателефонувати loadIMG ще раз

JSFiddle: https://jsfiddle.net/CustomElementsExamples/vjfpu3a2/


Відповідні відповіді на відповідь: WCPROPS



-3

Просто використовуйте HTML5 :)

<picture>
    <source srcset="smaller.jpg" media="(max-width: 768px)">
    <source srcset="default.jpg">
    <img srcset="default.jpg" alt="My default image">
</picture>

ОП спеціально прагне очистити їх розмітку HTML за допомогою CSS-рішення. Ця відповідь лише ще більше загрожує розміткою.
webaholik
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.