Наслоение изображений в CSS - можно ли разместить 2 изображения в одном элементе?

Предположим, я устанавливаю фоновое изображение для веб-страницы в CSS следующим образом:

body    {
font-size: 62.5%; /* Resets 1em to 10px */
font-family: Verdana, Arial, Sans-Serif;
background-color: #9D5922;
color: #000;
margin-left: auto;
margin-right: auto;
margin: 0;
padding: 0; 
background: url(images/desk.gif) repeat bottom left;
}

Есть ли способ наложить второе изображение поверх desk.gif внутри самого элемента body, или это единственный способ создать отдельный класс и использовать ось z?

Извините, это простой вопрос, но я пытался понять это, и хотя мне не удалось заставить его работать, я также не нашел четкого описания этой идеи где-либо в Интернете ... так что есть способ, или это просто невозможно?

Спасибо!

размер шрифта: 62,5%; / * Сбрасывает 1em до 10 пикселей * / ничего подобного не делает.

Sparr 31.12.2008 06:16

Да, извините - этот комментарий рядом с атрибутом рудиментарный. Спасибо, что указали на это, вы напомнили мне удалить его!

BillC 31.12.2008 06:21

"не делает ничего подобного"! = "делает это примерно в 97% случаев"

Andy Ford 31.12.2008 07:17
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
16
4
40 329
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Единственный способ - использовать другой контейнер. Каждый элемент может содержать только одно фоновое изображение.

Ответ принят как подходящий

Короче говоря, это невозможно. Вы можете это сделать, но вам нужно добавить второй объект HTML на страницу, чтобы заставить его работать. Так, например, поместите блок div прямо под вашим телом и назначьте второй фон этому объекту.

Надеюсь это поможет!

Я подумал, но это была надежда! Спасибо, сделаю с блоком div.

BillC 31.12.2008 06:19

Без проблем! Может быть, CSS4 представит что-то подобное? По мере развития CSS и HTML люди хотят использовать все меньше и меньше HTML-объектов для стилизации страницы. Можно мечтать, правда? :)

user50384 31.12.2008 06:29

На самом деле, в CSS3, через изображения границ - см. w3.org/TR/2002/WD-css3-border-20021107 (AFAIK, только Safari и FF3.1 поддерживают это)

Shog9 31.12.2008 06:57

Используйте абсолютное позиционирование и z-index, чтобы второй элемент оказался сверху.

Не забывайте, что вы можете применять стили к HTML-элементу:

html {
background: url(images/whatever.gif);
}

Многослойные фоны являются частью Рабочий проект CSS3, но, насколько мне известно, их поддержка ограничена браузерами на основе WebKit / KHTML, такими как Safari, Chrome, Konqueror и OmniWeb.

Используя ваш пример кода, это будет выглядеть так:

body    {
    font-size: 62.5%; /* Resets 1em to 10px */
    font-family: Verdana, Arial, Sans-Serif;
    background-color: #9D5922;
    color: #000;
    margin-left: auto;
    margin-right: auto;
    margin: 0;
    padding: 0; 
    background: url("images/top.gif") left bottom repeat,
                url("images/desk.gif") left bottom repeat;
}

Я уже опубликовал решение в повторяющемся вопросе, но для тех, кому может потребоваться эта информация, я также опубликую ее здесь.

Насколько мне известно, разместить его в одном слое невозможно, но можно разместить несколько изображений в отдельных блоках div друг над другом, и это было реализовано популярным веб-сайтом тестирования юзабилити Silverback (проверьте фон на посмотреть, как это было наслоено). Если вы посмотрите исходный код, то увидите, что фон состоит из нескольких изображений, помещенных друг на друга.

Вот статья, демонстрирующая, как сделать эффект, можно найти на Витамин. Похожую концепцию обертывания этих слоев «луковой кожуры» можно найти на Список отдельно.

Это гораздо более полезный ответ, чем «принятый» ответ.

Nathan Bowers 17.07.2010 01:51

текст ссылки

Вышеупомянутая ссылка лучше всего описывает то, что вы делаете ...

В настоящее время это можно сделать во всех «современных» браузерах (кроме IE9, afaik). Могу подтвердить, что он работает в Firefox, Opera, Chrome. Нет причин не делать этого, если у вас есть достойное резервное решение для старых браузеров / IE.

Для синтаксиса вы можете выбрать между

  background:url(..) repeat-x left top,
             url(..) repeat-x left bottom;

а также

  background-image:url(..), url(..);
  background-position:left top, left bottom;
  background-repeat:repeat-x;

Переносы строк не нужны, но запятая важна.


Внимание! Следующее создаст два фона, даже если вы указали только один URL-адрес изображения:

  background-image:url(..);
  background-position:top, bottom;

И, конечно, есть альтернатива использованию вложенных контейнеров, но это приведет к раздуванию вашего HTML.

Другие вопросы по теме