- How to Set img src using CSS
- 1. Using content: url
- 2. Using background-image and padding
- How to Set img src using CSS
- A solution
- A better solution
- Conclusion
- HTML Tag
- Browser Support
- Attributes
- Как добавить изображение на страницу
- Вставка через CSS
- Добавление фоновых изображений
- Использование псевдоэлементов
- Заключение
- Другие статьи о графике
How to Set img src using CSS
I needed a way to set the src attribute of my img tags using CSS.
I didn’t want to define the path in HTML.
1. Using content: url
A quick, not very cross-compatible solution is to drop the src attribute and use content:url() in CSS.
img < content: url("/path/to/image.png"); >
This is known to have issues in FireFox and IE, but it is much cleaner than this next solution.
2. Using background-image and padding
Instead of dropping the src tag, we can use it to target that img element in our styles (we can also target the img using a class or id ).
Let’s say our newimage.png has width x height dimensions of 200px x 100px .
We can set the background-image to be the new image and push the inline image out of the way using padding.
img[src*="/path/to/image.png"] < background: url("/path/to/newimage.png") no-repeat; width: 200px; /* Width of new image */ height: 0px !important; height /**/: 100px; /* Height of new image */ padding: 100px 0 0 0; /* Height of new image */ >
Here, we’ll need to manually specify width and height .
Additionally, we accomodate for IE versions that mishandle the box model ( height /**/ ). Some code formatters will remove the space between height and /**/ , which is needed, so ensure that the space is there after reformatting.
It may also be helpful to include box-sizing: border-box; in order to force padding and borders into the total width.
How to Set img src using CSS
Sometimes, you want to change the src attribute of an img without using HTML.
For example, going from this:
A solution
You can simulate having a src attribute by using the content attribute in CSS, and passing in the image path url() .
For example, if you want to simulate changing the src attribute of an img to /path/here/to/image.png , you can do this:
This can work in some cases, but it’s not recommended, especially because there is a better solution.
A better solution
A better way to add a src attribute to an img is to use CSS targeting to add a background-image . The caveat here is that you need to know and provide the image’s dimensions.
Here’s how to target the img and add a background-image , with an image of dimensions 20rem by 10rem :
Once you do that, you should see the image in the browser, all without changing the src attribute.
Conclusion
If you don’t want to change the src attribute of an img to a different image using HTML, you have two solutions to get the image to display in the browser using CSS.
Hopefully, this post has given you a solution that works for your needs. Happy coding!
If you want to learn about web development, founding a start-up, bootstrapping a SaaS, and more, follow me on Twitter! You can also join the conversation over at our official Discord!
Give feedback on this page , tweet at us, or join our Discord !
HTML Tag
The tag is used to embed an image in an HTML page.
Images are not technically inserted into a web page; images are linked to web pages. The tag creates a holding space for the referenced image.
The tag has two required attributes:
- src — Specifies the path to the image
- alt — Specifies an alternate text for the image, if the image for some reason cannot be displayed
Note: Also, always specify the width and height of an image. If width and height are not specified, the page might flicker while the image loads.
Tip: To link an image to another document, simply nest the tag inside an tag (see example below).
Browser Support
Attributes
Attribute | Value | Description |
---|---|---|
alt | text | Specifies an alternate text for an image |
crossorigin | anonymous use-credentials | Allow images from third-party sites that allow cross-origin access to be used with canvas |
height | pixels | Specifies the height of an image |
ismap | ismap | Specifies an image as a server-side image map |
loading | eager lazy | Specifies whether a browser should load an image immediately or to defer loading of images until some conditions are met |
longdesc | URL | Specifies a URL to a detailed description of an image |
referrerpolicy | no-referrer no-referrer-when-downgrade origin origin-when-cross-origin unsafe-url | Specifies which referrer information to use when fetching an image |
sizes | sizes | Specifies image sizes for different page layouts |
src | URL | Specifies the path to the image |
srcset | URL-list | Specifies a list of image files to use in different situations |
usemap | #mapname | Specifies an image as a client-side image map |
width | pixels | Specifies the width of an image |
Как добавить изображение на страницу
Добавление изображений на страницу — типовая задача веб-разработчиков. Её можно выполнить разными способами: вставить картинку в разметку через теги , или использовать в CSS с помощью background-image .
Вставка изображений в теге
Для каких изображений подходит: для логотипов, фото, иллюстраций, графиков и других контентных изображений.
💡 Контентные изображения тесно связаны по смыслу с содержимым страницы и дополняют его. Например, к таким изображениям относятся фото сотрудников в разделе «О нас» или схема проезда к отелю.
Чтобы вставить изображение с помощью , нужно добавить в тег четыре обязательных атрибута:
- src — указывает путь до картинки;
- alt — добавляет альтернативный текст, который отображается, если изображение не загрузилось;
- width — задаёт ширину изображения;
- height — задаёт высоту изображения.
С помощью такого кода можно вставить фото кота Кекса шириной 1024px и высотой 683px .
Вставка через
Для каких изображений подходит: для векторных в формате SVG.
С помощью этого способа вы можете добавить иконки, чтобы затем менять их состояние.
Иконки добавляются с помощью тега , в котором прописываются размеры изображения. Например, иконку VK из примера выше можно вставить так:
Небольшое отступление. Возможно, вы не знакомы с классом visually-hidden — его добавляют элементам, которые нужно скрыть в интерфейсе. В нашем случае с таким классом создаёт подпись «Вконтакте». Её смогут прочитать скринридеры, но не увидят пользователи. Добавлять такие подписи к иконкам — хорошая практика.
Вставка через CSS
Для каких изображений подходит: для декоративных.
💡 Декоративные изображения нужны для украшения страницы. Их отсутствие не поменяет смысл контента, поэтому они имеют только оформительское назначение.
Есть два способа вставить декоративное изображение: сделать фоном или добавить как псевдоэлемент.
Добавление фоновых изображений
Для добавления фоновых изображений используется CSS-свойство background-image . Вместе с ним нужно прописать размеры изображения — width и height .
Например, на странице есть контейнер с классом .image-container :
Чтобы задать ему фон, нужно написать следующий код:
Это минимальный набор CSS-правил. Часто фронтендеры используют дополнительные правила, чтобы изменить позицию и размеры изображения или запретить повтор фоновой картинки.
CSS-свойство background-attachment указывает, что делать с изображением: зафиксировать его позицию в области просмотра или пролистывать вместе с содержимым контейнера.
- scroll — значение по умолчанию. Фон прокручивается вместе с содержимым.
- fix — фон фиксируется.
- local — фон фиксируется с учётом содержимого элемента.
CSS-свойство background-position управляет расположением фона по осям X и Y, то есть по вертикали и горизонтали. Ему можно задавать значения, используя ключевые слова, процентные значения или конкретные величины, например, 100px . Ключевые слова для расположения по оси X:
Ключевые слова для расположения по оси Y:
Можно сочетать разные значения:
background-position: 100px top; /* фон отступит 100px от левого края, останется сверху*/ background-position: 50% bottom; /* фон будет посередине и снизу*/ background-position: left 100px; /* фон будет слева и отступит 100px от верхнего края*/
Если нужно задать положение только по одной оси, используйте свойства background-position-x и background-position-y . Они принимают такие же значения, как и background-position .
Следующее CSS-свойство — background-repeat , оно задаёт повтор изображения. По умолчанию у свойства стоит значение repeat , то есть фоновое изображение повторяется по вертикали и горизонтали:
Чтобы изменить это поведение, надо поменять значение:
- no-repeat — не повторять изображение,
- repeat-x — повторять только по горизонтали
- repeat-y — повторять только по горизонтали.
CSS-свойство background-size определяет размеры изображения. Ему также можно задавать значения в виде ключевых слов, процентов или конкретных размеров.
background-size: /*размер по ширине*/ /*размер по высоте*/
- auto — оставляет исходный размер изображения.
- contain — масштабирует изображение по ширине или высоте, чтобы оно заполнило контейнер. Картинка при этом не обрезается.
- cover — масштабирует изображение, сохраняя пропорции изображения. Картинка может обрезаться.
Чтобы было понятнее, посмотрим на примере. Оранжевыми рамками выделена область контейнера. Когда мы задали свойство background-size со значением contain , картинка заполнила всю высоту контейнера и осталась целой.
А когда мы задали cover , фото Кекса обрезалось и растянулось на всю ширину контейнера.
Есть и другие CSS-свойства. Почитайте о них в спецификации W3C.
При использовании фоновых изображений обязательно добавляйте цветной фон-подложку, особенно если у вас на сайте белый текст. Это важно, ведь у пользователей может быть плохое интернет-соединение, при котором картинки долго загружаются. Тогда посетители сайта увидят белый текст на белом экране.
Использование псевдоэлементов
Небольшие декоративные элементы добавляются с помощью псевдоэлементов ::before и ::after . Эти псевдоэлементы создают внутри элемента псевдотег, который можно стилизовать. Например, вы можете добавить ему фоновое изображение или текст.
💡 Этот псевдотег — виртуальный, вы не увидите его в разметке сайта.
Псевдоэлемент ::before добавляет псевдотег в начале, ::after — в конце. Вот пример использования псевдоэлемента на сайте HTML Academy. Перед вами блок с тремя тегами
. В каждом из них лежат для важных цифр и для обычного текста. Когда мы добавляем абзацу ::before , внутри
появляется ещё один псевдотег — с картинкой.
Принцип добавления картинки похож на тот, что мы рассматривали при вставке фоновых изображений. Только здесь мы добавляем фон не контейнеру, а псевдотегу:
1507 Заданий и испытаний
Указываем содержимое.** Мы используем свойство content с пустым значением, чтобы псевдоэлемент отобразился на странице. Обычно значением этого свойства является текст, но так как нам нужна только фоновая картинка, ставим значение «» .
Делаем псевдоэлемент блочным. Прописываем размеры: ширину и высоту.
Добавляем фон. Указываем путь до картинки, убираем повтор и размещаем изображение по центру.
Заключение
Мы рассмотрели четыре основных способа вставки изображения. Первый выглядит самым простым, но он не всегда уместен. Поэтому выбирайте метод вставки, ориентируясь не на простоту работы, а на задачу и тип изображения. Например, логотип лучше добавлять с помощью , а красивую фоновую картинку можно вставить с помощью background-image .
Следуйте этому правилу, и пользователи полюбят ваш сайт.
Другие статьи о графике
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.