Как установить положение фона на абсолютное расстояние, начиная справа?

Я хочу установить фоновое изображение для div таким образом, чтобы оно находилось в верхнем ВЕРНО div, но с фиксированным расстоянием 10px сверху и справа.

Вот как я бы сделал это, если бы захотел, чтобы это было в верхнем ОСТАВИЛИ div:

background: url(images/img06.gif) no-repeat 10px 10px;

Есть ли способ добиться того же результата, но с отображением фона на верхнем ВЕРНО?

Приемы 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 сценарий полностью изменился.
25
0
59 199
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Я не знаю, возможно ли это в чистом CSS, поэтому вы можете попробовать

background: url(images/img06.gif) no-repeat top right;

и измените свое изображение, чтобы включить границу 10 пикселей сверху и справа в прозрачном цвете.

Есть несколько способов сделать это.

  1. Если возможно, посчитайте сами. Вы уже знаете размеры своего изображения. Если вы знаете размеры div, вы можете просто поместить изображение в (ширина div - ширина изображения - 10, высота div - высота изображения - 10).

  2. Используйте Javascript, чтобы сделать за вас тяжелую работу. Практически тот же метод, что и выше, за исключением того, что вам не нужно знать размеры самого div. Javascript может вам сказать.

  3. Более хакерским способом было бы поместить прозрачную рамку 10 пикселей вокруг верхнего и правого края изображения и установить положение top right.

Прозрачная рамка не такая уж хакерская! Без лишней разметки, без проблем с границами и т. д.

Agos 20.03.2012 14:58

Хак, который обходится с другими хаками, все равно остается хаком;)

ajbeaven 14.11.2012 06:21

Одно из решений - полностью разместить пустой div и дать ему фон. Я не верю, что есть способ сделать это исключительно с помощью CSS, без изменений изображения и без дополнительной разметки в гибком макете.

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

Используйте ранее упомянутое правило вместе с верхним и правым полями:

background: url(images/img06.gif) no-repeat top right;
margin-top: 10px;
margin-right: 10px;

Фоновые изображения отображаются только внутри отступов, но не на полях. Если добавление поля не является вариантом, вам, возможно, придется прибегнуть к другому div, хотя я бы рекомендовал вам использовать его только в крайнем случае, чтобы попытаться сохранить разметку как можно более скудной и сегментарной.

Это хорошее решение, но, поскольку я хотел отобразить границу, потребовалось бы обернуть еще один несемантический div. В итоге я использовал тег <img> вместо фона css, и в конце концов это хорошо сработало для меня.

doub1ejack 25.01.2012 22:07

В моем случае я обнаружил, что padding-top и padding-right были решением для размещения небольшого значка после диапазона.

Zak Henry 20.03.2012 01:11

Это может сработать, но имеет другие побочные эффекты. Цвет фона не будет охватывать весь элемент, и вы не сможете иметь текст в элементе, который заполняет последние 10 пикселей.

MW. 04.07.2013 17:43

Вы можете использовать проценты:

background: url(...) top 98% no-repeat;

Если вы знаете ширину родительского div, будет довольно легко определить, какой процент вам нужно использовать.

Я был удивлен, узнав, что 100% - это то же самое, что «right» для background-image, однако, если ширина родительского div фиксирована, то точнее напрямую использовать пиксельное смещение.

EoghanM 01.12.2010 15:26

без процентов не получится, если у вас разная ширина предметов

Jitendra Vyas 23.04.2012 10:42

Правильный формат:

background: url(YourUrl) 0px -50px no-repeat;

Где 0px - это горизонтальное положение, а -50px - вертикальное положение.

CSS background-position принимает отрицательные значения.

Во всех современных браузерах и IE вплоть до версии 9 вы можете использовать четырехзначный синтаксис указано в CSS3:

background-position: right 10px top 10px;

Источник: MDN

Это гораздо более полезное решение, чем игра с полями.

starlocke 02.10.2015 21:24

Это лучшее решение, чем отмеченное зеленой галочкой.

Rahul 20.01.2017 09:39

Вы можете имитировать пространство с правой стороны с помощью границы в пикселях (большую часть времени белой или, может быть, что-то еще)

  background-image: url(../images/calender.svg) center right
  border-right: 5px white solid

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